我使用DMA传输数据,同步事件是I2S2 receive event,所有东西配置好后,当将源地址配置长0x2a00(i2S2的控制寄存器),时,有数据传输;但是一旦改成0x2a29(接收寄存器)时,没有数据传输,但是可以观察到该寄存器中有值,而且还在变化,这是什么原因?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用DMA传输数据,同步事件是I2S2 receive event,所有东西配置好后,当将源地址配置长0x2a00(i2S2的控制寄存器),时,有数据传输;但是一旦改成0x2a29(接收寄存器)时,没有数据传输,但是可以观察到该寄存器中有值,而且还在变化,这是什么原因?
问题解决了。只能说这DMA好坑啊。DMA最小传输是32bits,当我把I2S2数据长度设为16bits时,就导致搬移的数据为零,当我把i2S2的数据长度改为32bits时,数据就传输正常了。
这里还有个疑问,问啥这数据长度只对传输寄存器、接收寄存器有关联,而控制寄存器16bits就可以传输,然后DMA自动补零。
硬件平台TMA320C5517 EVM CCS5.5
TRM手册里有说明。
The DMA can also make 32-bit accesses to receive and transmit data registers for efficient data transfer.