论坛元老
 
- 积分
- 10653
- 金钱
- 10653
- 注册时间
- 2017-4-14
- 在线时间
- 2780 小时
|
本帖最后由 nashui_sx 于 2021-1-28 11:06 编辑
0:stm32f103c8t6
1:#define ADC1_CHN 2 //要使用的ADC通道数
开启几个通道Adc1_Init()里面的ADC_RegularChannelConfig函数只能有多少个有效,比如例子是2,只能有 1 2有效
2:#define ADC1_Count 10 //AD滤波采样次数 就是每个通道采集10次供平均来用
3:这个例子的dma的优点是直接为每个通道开辟要滤波的通道缓存,使用的时候直接调用ADC1_Filter就可以了,dma循环采集adc,任何时候都可以ADC_Filter,也可以使用adc之前ADC_Filter一次就可以了
4:加上滤波后实际采样周期=(arr+1)*(psc+1)/Tclk=5000*72/72000000s=5ms*ADC1_Count=50ms
定时器采样时间不能快过adc的转换时间 转换时间=[采样时间+ 12.5个周期(固定值)]/12m =(239.5[实际根据自己设定值]+12.5)/12m=21us*ADC1_CHN=42us
采样时间=1.5 7.5 13.5 28.5 41.5 55.5 71.5 239.5 ADC频率(不能超过14M) =72M/分频(=2 4 6 8)
采样很慢,滤波长度过长,相当于每次都用之前的ADC1_Count次做平均,数据会有迟滞
adc dma tim为每个通道开辟好滤波空间.rar
(322.37 KB, 下载次数: 810)
|
|