automatic post increment 方式下,每个element tranfer 后,16位和32位的 datatype数据 的 automatic post increment为 address=address+2
和address=address+4,single index的地址方式下,地址增长为 address=address+element index. 我的问题就是,16位或者32位datatype下为什么element
index的值必须是2×N+1或者4×N+1?按照对automatic post increment 方式的理解,应该是2×N或者4×N才对,费解。
Tony Tang:
可以查看一下第8节:Updating address in a channel. 里面提到DMA的传输后其记录的当前地址为传输的最后一个字节的地址,举个例子,如果从0地址传了32bit的数,则传完时DMA控制器记录的当前地址为3,若以4为索引,下一个数应该从8开始,那么3+(4+1)即为8,这个1也就是将DMA的当前地址往后移一个字节。
francescoli diego:
回复 Tony Tang:
您好Tony Tang先生,我在实验中遇到了一个关于dma element index 方面的问题,麻烦您帮我分析一下。
实验内容:单个ADS1278 接5509a串口1,ADS1278的八个通道全部开启。DMA将串口1数据读取到sdram缓冲区,首地址设rcv0,搬运数据类型为32位.
第一次关键参数设置(调试成功):目的地址增长方式为 single index ,element index=1,仿真器写入程序运行。信号发生器发出正弦信号,接入ADS1278第一个通道。
在CCS中观察通道1转换的波形。下图第一张为CCS graph 参数设置,第二张为显示的波形,
遇到的问题:
现在我把关键参数修改一下:
目的地址增长依然方式为 single index ,element index=9,CCS graph 参数设置中index increment改为24.再次实验后就显示波形就不成功了,如下图。
为什么第一次显示成功,而第二次所失败呢???
francescoli diego:
回复 Tony Tang:
Tony Tang
可以查看一下第8节:Updating address in a channel. 里面提到DMA的传输后其记录的当前地址为传输的最后一个字节的地址,举个例子,如果从0地址传了32bit的数,则传完时DMA控制器记录的当前地址为3,若以4为索引,下一个数应该从8开始,那么3+(4+1)即为8,这个1也就是将DMA的当前地址往后移一个字节。