3154|1

5237

帖子

239

TA的资源

管理员

楼主
 

FAQ_BlueNRG-12中如何实现ADC12之间的切换 [复制链接]

 

本文作者:ST工程师Weisheng CHEN

点击下载pdf文档查看: FQA-BlueNRG-12中如何实现ADC12之间的切换.pdf (521.86 KB, 下载次数: 7)

关键词:BlueNRG-1/2, ADC1, ADC2, CHSEL

 

 问题 客户在使用BlueNRG-1/2 ADC模块时有需要使用到2路ADC通道,进而通常会碰到2个问题:

1. 在ADC1/2两个通道进行切换,获取外部采样值,总有一个通道的返回值是错误的。为什么?

2. 在切换ADC1/2是需要设置寄存器ADC-CONF的CHSEL字段,有时发现程序运行过后,设置值没有真正写入到寄存器中。为什么? 其实,以上两个问题其实是同一个问题的2个不同提问形式,问题的原因是同一个。

 

ST工程师回答:下面的措施可以解决客户的问题,但只适合用在在ST BlueNRG-1/2 SDK3.0.0(及以后版本)中,有一点需要明确的是,该解决措施和蓝牙协议栈中的”Controller Privacy 1.2”功能有冲突。即使用本解决办法后,将无法enable蓝牙协议栈中的”Controller Privacy 1.2”功能。 具体步骤如下:

1. 在IDE 中打开ST提供的BlueNRG-1/2 SDK3.0.0中的参考代码项目文件:“\Project\BlueNRG1_Periph_Examples\ADC\Polling”。 2. 移除宏定义”ADC_2411”.

3. 在IDE项目配置页面中添加宏定义”FORCE_CORE_TO_16MHZ”.

4. 在程序主环中做如下更改

while(1) {
/* Polling of End-Of-Conversion flag */
if( ADC_GetFlagStatus(ADC_FLAG_EOC)) {
/* Read converted data */
adc_value = ADC_GetConvertedData(xADC_InitType.ADC_Input, xADC_InitType.ADC_ReferenceVoltage);
/* Print the ADC value converted */
if(xADC_InitType.ADC_Input == ADC_Input_TempSensor) {
printf("ADC value: %.1f 'C\r\n", adc_value);
}
else {
printf("ADC value: %.0f mV\r\n", adc_value*1000.0);
}
SdkEvalLedToggle(LED1);
/* Application delay before next one shot measurement */
SdkDelayMs(500); 

if(xADC_InitType.ADC_Input == ADC_Input_AdcPin1) 
{ xADC_InitType.ADC_Input = ADC_Input_AdcPin2; } 

else 
{ xADC_InitType.ADC_Input = ADC_Input_AdcPin1; } 
ADC->CONF_b.CHSEL = xADC_InitType.ADC_Input;


/* Enable auto offset correction */
ADC_Calibration(ENABLE);
ADC_AutoOffsetUpdate(ENABLE);
/* Start new conversion */
ADC_Cmd(ENABLE);
}
}

 

 

 

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

最新回复

 我在使用开发板(STEVAL-IDB009V1) 测试ADC Polling的Demo程序,发现单独选择的ADC1引脚输入,读回的电压值正常2.7V,但单独选择的ADC2引脚输入,读回的电压值不正常13.54mV,请问下你知道这是怎么回事吗?   详情 回复 发表于 2021-3-4 16:54
点赞 关注
 
 

回复
举报

9

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

 我在使用开发板(STEVAL-IDB009V1) 测试ADC Polling的Demo程序,发现单独选择的ADC1引脚输入,读回的电压值正常2.7V,但单独选择的ADC2引脚输入,读回的电压值不正常13.54mV,请问下你知道这是怎么回事吗?

 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表