在研究ADC采样,用DMA传输,碰到一个问题,想请教论坛里的大神~ 用的是官方例程ADC_DMA_Transfer,假设ADC采样率fs,存储ADC转换数据的buffer大小(ADC_CONVERTED_DATA_BUFFER_SIZE)为L,被采信号的周期为T。程序运行时,我用keil中的save命令将长度为L的ADC数据存储下来,再用matlab将ADC数据绘成波形。 如果L刚好能存储周期T的整数倍时,绘成的波形很完好,但如果L不是周期T的整数倍,则波形就是乱的。 没整明白是啥原因,请论坛里的大神赐教~ |
楼主当然要等到一个信号周期的DMA传输结束,才能得到完整的波形。所以这个波形的显示时刻应该依据DMA传输结束标志位。
评分
查看全部评分
不是波形完整与否问题,而是波形都混乱了。理论上,如果L是周期的1.5倍,那应该能绘出1.5个周期的波形吧,但实际出来的波形像是被调制了一样
楼主应该控制波形的起始点和结束点的时刻才能得到正确波形。好比摄像头传输的第一点阵必须显示在LCD的第一点像素上一样。也即同步很重要。
评分
查看全部评分
根据你的指导,我后来尝试让DMA传输结束后就终止,得到的波形是好的。
是不是因为DMA循环传输时,后面的数据会覆盖了前面的数据所以造成波形混乱?
确实有这个可能