注册 登录
查看: 405|回复: 4

[K60] ADC采集怎样转换为真实电压值?

[复制链接]
发表于 2014-9-24 17:02:55 | 显示全部楼层 |阅读模式
我把山外大哥MK60_adc.c文件中,加了个连续采集N次取平均的函数,函数代码如下:
  1. uint16 adc_ave(ADCn_Ch_e adcn_ch, ADC_nbit bit,uint8 N)
  2. {
  3.     uint32 tmp = 0;
  4.     uint8  i;
  5.     //ADCn_e adcn = (ADCn_e)(adcn_ch >> 5) ;  //使用断言检测ADCn_CHn是否正常
  6.     for(i = 0; i < N; i++)
  7.         tmp += adc_once(adcn_ch,bit);
  8.     tmp = tmp / N;
  9.     return (uint16)tmp;
  10. }
我在内部程序调用了:
  1. uint32 ADC_value = adc_ave(ADC0_SE12, ADC_16bit,6);//PTB2采集6次数据,取平均值
注意是ADC_16bit,相关精度代码如下:
  1. //精度位数
  2. typedef enum ADC_nbit
  3. {
  4.     ADC_8bit   = 0x00,
  5.     ADC_10bit  = 0x02,
  6.     ADC_12bit  = 0x01,
  7.     ADC_16bit  = 0x03
  8. } ADC_nbit;
被采集的电压最大是Max = 3.3V,采集回来的uint32 ADC_value变量怎样转换为真实的电压???????(好像有个公式看不太懂各个参数的意义)有没有相关的资料说明,解释下,谢谢!
回复

使用道具 举报

发表于 2014-9-24 17:06:56 | 显示全部楼层
ADC_16bit ,那么最大就是 1<<16 -1,最小值是0,归一化到 3.3V 就好。
这个数学公式
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-24 17:18:23 | 显示全部楼层
栾端静 发表于 2014-9-24 17:06
ADC_16bit ,那么最大就是 1

被你这么一说恍然大悟,谢谢!
回复 支持 反对

使用道具 举报

发表于 2014-9-24 20:28:34 | 显示全部楼层
栾端静 发表于 2014-9-24 17:06
ADC_16bit ,那么最大就是 1

哈哈,消失了一段时间,浮头了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-25 00:12:49 | 显示全部楼层
虚竹 发表于 2014-9-24 20:28
哈哈,消失了一段时间,浮头了

山外论坛是我每天必逛的论坛
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部