配置情况:采样交流电压电流,由TIM3_Trgo触发;由于要计算电压电流有效值,功率因数等参数需要使用FFT,所以我们设定 20ms采样64次(Ua,Ub,Uc,Ia,Ib,Ic 一共6个通道)。
ADC_Data[64*6]//DMA接收缓冲区,因为有6个通道,每个通道每20ms采样64点数据,所以缓冲区大小为64*6;
ADC的配置注意:
1.我只使用了ADC1的6个通道,所以ADC_Mode配置为独立模式(ADC_Mode_Indepent);
2.因为是多通道采样,所以ADC_SacnConvMode必须配置为ENABLE(开启扫描模式);
3.ADC_ExternalTrigConv配置为T3_TRGO;
4.采用TIM3TRGO触发采样不能使能ADC的连续转换(至少在我的使用方案,20ms采样64点数据的情况下不能使能ADC的连续转换);
5.ADC配置完成之后需要软件启动采样一次(ADC_SoftwareStartConvCmd(ADC1,ENABLE));
DMA配置注意:
1.内存和寄存器数据大小为半字(至于其他模式因为时间原因我没有尝试,有兴趣的小伙伴可以试一试)
2.DMA缓冲区大小设置为64*6
3.DMA_Mode必须设置为DMA_Mode_Circular(在我的当前配置环境下,独立模式需要更改读取数据方式并在读取数据后重新配置DMA部分参数,具体用法我没有深入探究);