意图通过DMA传送ADC12的AD结果到RAM中。程序中定义一个512字节数组Data[512]。采用5个AD通道。每次由定时器B触发AD采样。当最后一个通道ADC12IFG触发DMA传送5个通道AD结果到512字节数组Data[512]中。
请问DMA能否在目标地址递增的设置下,每次AD保存5个通道数值,保存完整个512字节后触发中断?
现在通过实验,疑问在DMA0SZ在重复块传输的模式下,DMA0SZ=10是保存完10个字节后,目标地址重新复位为DMA0DA中地址,而不是目标地址继续往下递增是吗?也就是我保存完5个通道数据进Data前5个地址后,下次继续传输,保存地址任然是Data前5个地址,而不是继续往下递增,对么?
如果是这样,请问要达到我的保存满512字节数组的目标如何实现,谢谢
Lina Lian:
yijian, 关于DMA ,
1. 如果你设置DMA0SZ=10,且你使能了DMA中断,那么就是在搬完10个数后,进入中断,且目标地址重新复位为DMA0DA中地址。因为MSP430认为已经完成了DMA一次完整的操作;
2. 故如果你想实现保存完整个512字节后触发中断,那么DMA0SZ需要设置为512. 这样当存满512字节数组后,就会触发中断。
yijian:
回复 Lina Lian:
感谢你的回答,实际情况是,我设置DMA0SZ = 512,只是一次DMA传送就512字节,5个有效,其余为0。而不是我的意图,一次AD触发5个字节,连续N个触发后满512,然后中断。
Shi JianHua:
需要很快的速度么?我就使用过一次,还是测试时用的,现在都不会用了,我都是直接读取使用结果。