FAQ_如何解决BlueNRG-12中ADC采样精度的问题
[复制链接]
本文作者:ST工程师 Weisheng CHEN
点击下载pdf文档查看:
FQA-如何解决BlueNRG-12中ADC采样精度的问题.pdf
(525.6 KB, 下载次数: 11)
关键词:BlueNRG-1/2, ADC
问题:BlueNRG-1/2 的ADC模块采样精度不够高。
背景:客户在使用BlueNRG-1/2 时有时会反馈ADC模块采样精度和芯片间一致性不够高。客户可以接受10mv左右的偏差;如果偏差大于50mV则很难接受。另外有些客户会反馈板子之间ADC采样值的一致性不是很好,如生一批板子中绝大部分板子的偏差集中在10mV左右,但个别板子在同一测试条件下的偏差会达到70mV左右。
ST工程师回答:该问题本质上是在芯片启动时其ADC模块的SNR参数随机产生的不一致性导致的。在软件上添加一个叫做”3 calibration points”的补偿措施解决此问题,措施分为以下2部分:
1. 在2018年9月后, ST生产的芯片中在其flash的固定地址:0x100007D0, 0x10007D8, 0x10007E0中预烧录了3个补偿数据,这3个数据为每个单独的芯片构建出一个ADC采样补偿曲线。
2. 在IDE 中打开ST提供的BlueNRG-1/2 SDK3.0.0中的参考代码项目文件:
“\Project\BlueNRG1_Periph_Examples\ADC\Polling”。
3. 更改代码:
a. 在文件BlueNRG1_adc.c中添加如下2个函数定义:
b. 在文件BlueNRG1_adc.h中添加函数声明。
c. 在文件ADC_Polling_main.c中的初始化过程中调用函数 ADC_SwCalibration; 在获取采样数据后调用函数ADC_CompensateOutputValue进行转换得到最终结果。如下图高亮显示部分
|