中级会员
 
- 积分
- 455
- 金钱
- 455
- 注册时间
- 2016-1-19
- 在线时间
- 114 小时
|
1金钱
程序源码:
每次获取值时 取20次然后去平均值:
Get_Adc_Average(ADC_CHANNEL_5,20);
每取一次值要延迟5ms:
u16 Get_Adc_Average(u32 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
delay_ms(5); //延迟5ms
}
return temp_val/times;
}
如果将次数改为一次那么获取的值就或在 0和1023 直接跳(PA5什么都不接)
那么问题来了:
ADC 频率在27M情况下,480个周期 ,分辨率12位,这个值不觉得很奇怪吗? @八度空间 @yklstudent @Huangshuqian
难道每次AD 转换都要连续采多个数据,然后取平均值,每次取还要延迟一段时间?
如果需要1ms 采100次呢?
|
最佳答案
查看完整内容[请看2#楼]
如果PA5什么都不接的话应该是接收的正弦的干扰信号,单次采样会来回变化,多次采样平均会好些。
ADC转换是逐次逼近型的,不会进行平均。480周期时间是等待稳定的时间。
|