DMA它只是为CPU减少负担,在数据的传输过程不需要CPU的干预。在DMA的传输过程中,存在2种模式:Signal mode 和 Whole mode.Signal mode是传递完一个数据就必须检测DMA请求,直到下一个请求有效才会发送下一个数据。而Whole mode则是在DMA中有一个计算器,一直到计数器的值等于0,才结束传输。而在传输的大小有两种模式:Demand mode 和Handshake mode,Demand mode是在一个传输完,就检测DMA请求是否有效,如有效的话就传递下一次数据,而Handshake mode则是如果在检测DMA请求,如果无效的话,就停留停留2个时钟周期,然后再检测,如果有效的话,就发送下一次数据,否则的话,就等到DMA请求无效,再检测是否有效,有效的话就发送下一次数据。在传输的读写控制有两种模式,uint mode 和 burst 4 mode,uint mode则是一个读之后是一个写,而burst 4 mode则是4个读之后是4个写。在传输数据的大小有8位,16位,32位,可选。
对UDA1341的控制可通过L3 interface设置其模式,数据传输通过IIS总线,IIS中传输的时候可以设置为DMA传输,IIS中有两种格式:IIS bus format 和MSB JUSTIFIED,因为ARM里面已经帮我们集成了数据传输的时序,我们只把数据放到数据寄存器就行,配置好设置就可以了。IIS bus format 和MSB JUSTIFIED区别在于声道转换是在MSB之前还是之中。
要对音频开发,就要看了解清楚音频格式,这样的话,编程会很容易的。
很经典的一句话送给大家,我们学的ARM甚至MIPS都是工具,它不是我们真正追求的,追求的是算法。怎么利用程序将这些工具成功的用起来,这才是我们要学的,不要仅仅是局限在学哪个开发板或者是哪块芯片,最重要的是编程思想。