3254|0

140

帖子

0

TA的资源

版主

楼主
 

STEVAL-IDB007V1电池电压检测 [复制链接]

 今天学习了一下STEVAL-IDB007V1的ADC,在DMA demo基础上实现了电池电压检测。开发板设置如下:JP2需要跳线到BAT这一端




板卡背面需要电池供电:



BlueNRG-1的ADC分为以下种转换模式,选择电池电压转换模式:


代码设置就几句搞定,还是很好操作的:

  1. void ADC_Configuration(void)
  2. {
  3.   SysCtrl_PeripheralClockCmd(CLOCK_PERIPH_ADC, ENABLE);
  4.   
  5.   /* Configure ADC */
  6.   /* ADC_Input_AdcPin1 == ADC1 */
  7.   /* ADC_Input_AdcPin2 == ADC2 */
  8.   /* ADC_Input_AdcPin12 == ADC1 - ADC2 */
  9.   xADC_InitType.ADC_OSR = ADC_OSR_200;
  10.   //ADC_Input_BattSensor; //ADC_Input_TempSensor;// ADC_Input_AdcPin1 // ADC_Input_AdcPin12 // ADC_Input_AdcPin2
  11.   xADC_InitType.ADC_Input = ADC_Input_BattSensor;//ADC_Input_AdcPin1; //ADC_Input_AdcPin12//ADC_Input_BattSensor
  12.   xADC_InitType.ADC_ConversionMode = ADC_ConversionMode_Continuous;//ADC_ConversionMode_Continuous;//ADC_ConversionMode_Single
  13.   xADC_InitType.ADC_ReferenceVoltage = ADC_ReferenceVoltage_0V6; //ADC_ReferenceVoltage_0V6;
  14.   xADC_InitType.ADC_Attenuation = ADC_Attenuation_0dB;//ADC_Attenuation_0dB ADC_Attenuation_9dB54
  15.    
  16.   ADC_Init(&xADC_InitType);
  17.   
  18.   /* Enable auto offset correction */
  19.   ADC_Calibration(ENABLE);
  20.   ADC_AutoOffsetUpdate(ENABLE);
  21. }
复制代码


获取转换结果的时候直接调用:

  1. printf("ADC value: %.0f mV\r\n", ADC_ConvertBatterySensor(buffer_adc[i],ADC_ReferenceVoltage_0V6)*1000.0);
复制代码


即可通过串口打印出电池电压:



转换出来的电压和万用表测量结果一样,能满足需求。

需要注意的一点是,BlueNRG的ADC转换和其他MCU稍有区别,内部直接采用了过采样,这样可以在10bit ADC的基础上提高转换结果精度。OSR设置的是过采样的次数。

跳线设置.png (549.43 KB, 下载次数: 0)

跳线设置.png
点赞 关注
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表