你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32F1提高ADC精度经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-17 16:49
前言
由于STM32F1ADC的精度最高位12位,在一些精度要求高的场景明显不足,因此需要提高ADC的精度,这里采用过采样发来提高ADC精度


一、软件实现部分
我是基于正点原子战舰V3的板子来实现的,主要就是对输入信号设置好相应的采样率,满住奈奎斯特的至少两倍原则。然后根据要提高多少位精度对多少个ADC采集数据进行相加,然后进行移位来确定精度(不是简单的取平均)。
下面展示一些 内联代码片。


  1. // A code block
  2. /*ADC_OVSR:过采样率,取值2,4,8,16,32,64,128,256*/
  3. #define ADC_OVSR        256

  4. /*ADC_shif:ADC结果右移,0~8/
  5. #define ADC_shift  4
复制代码
  1. //在freemodbus下我只能实现15位精度,因为他的保持寄存器是u16的,还不知道怎么改底层函数
  2. void adc_20bit_value(void)
  3. {
  4.         static u32 adc_buff=0,adc_sum = 0;
  5.         static float adc_volt=0;
  6.                 if(adc_500ms_flag == 1)
  7.                 {
  8.                         adc_500ms_flag=0;
  9.                         printf("\r\n The current AD value = %d \r\n", ADCConvertedValue);
  10.                         printf("The acurate AD value = %d \r\n", ADC_ACCURATE_DAT);
  11.                         printf("The acurate AD value = %.8f \r\n", adc_volt);
  12.                 }
  13.                
  14.                 if(adc_10ms_flag == 1) //¹ý²ÉÑùµÃµ½16λadcÖµ
  15.                 {
  16.                         adc_10ms_flag = 0;
  17.                        
  18.                         for(adc_buff=1;adc_buff<=ADC_OVSR;adc_buff++)
  19.                         {
  20.                                 adc_sum = adc_sum+ADCConvertedValue;
  21.                                 if(adc_buff==ADC_OVSR)
  22.                                 {
  23.                                         ADC_ACCURATE_DAT = adc_sum>>ADC_shift;
  24.                                         adc_sum = 0;
  25.                                 }
  26.                         }
  27.                         adc_volt= (float)ADC_ACCURATE_DAT/1048576*3.3;
  28.                 }
  29.           
  30. }

复制代码


————————————————
版权声明:qq_44637112
如有侵权请联系删除


收藏 评论0 发布时间:2023-5-17 16:49

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版