CH579/CH57x/CH58x ADC的使用
CH579/CH57x/CH58x ADC的使用
CH57/CH58x系列ADC校准差异对比
芯片 | 差异说明 |
---|---|
CH579 | 需要做粗调,细调,粗调时候复用PA5,所以用到ADC的话,通常PA5需要悬空 |
CH573 | 需要做粗调,不需要做细调, 粗调时候用的内部通道不再需要任何的外部IO |
CH583 | 需要做粗调,粗调用ADC channel 1,但是粗调时候会断开PA5 |
ADC使用
粗调
粗调大概是可以理解为对GND校准,ADC对GND读个值,然后去offset其他通道.对于ch579,其借用PA5来做粗调通道,当使用粗调时,不建议使用PA5作为其他功能,否则建议其他方式实现粗调.
什么时候需要做粗调
根据其原理上电校准一次即可.
粗调的结果使用
粗调的结果是个有符号的数据,可能是正数,也可能是负数,通常在几个到10几个采样单位之间;
使用就是把后面的采样的值,加上这个校准值作为实际参与计算电压的值,但是注意由于校准值是个有符号的值,当单端采样通道接到GND时候,加上校准值可能会小于0,有时候负数是很讨厌的,这里我们要软件上判断一下小于0就等于0来避免这种情况
细调
实际上是调斜率.
- ch577/ch578/ch579 需要做斜率校准
- CH571/573,ch58x系列的不需要
测量范围
CH57x,ch58x 系列的芯片内部的ADC的实现方式是逐次比较型的(SAADC),其半量程参考电压是1.05v.默认的电压测量范围是0-2.1v
芯片ADC的前级提供了一个PGA,可以通过调整其放大倍数,来实现不同的量程.
PGA增益 | 采样值到电压换算 | 理论可测电压上限 | 理论可测电压范围(Vref=1.05V) | 建议实际测量电压范围 |
---|---|---|---|---|
-12dB(1/4 倍) | (ADC/512-3)*Vref | 5*Vref | -0.2V ~ VIO33+0.2V | 2.9V ~ VIO33 |
-6dB(1/2 倍) | (ADC/1024-1)*Vref | 3*Vref | -0.2V ~ 3.15V | 1.9V ~ 3V |
0db(1倍) | (ADC/2048)*Vref | 2*Vref | 0V ~ 2.1V | 0V ~ 2V |
6db(2倍) | (ADC/4096+0.5)*Vref | 1.5*Vref | 0.525V ~ 1.575V | 0.6V ~ 1.5V |
计算c代码
//PGA=-12db
//PGA=-6db
//PGA=0db
//PGA=6db
统一代码,
注意事项
1.CH577/578/579 PA5所在的ADC通道1用于校准(粗调),校准时候要悬空,实际上是内部拉到GND读取个值作为offset值,如果用了PA5不建议使用粗调,或者其他方式实现
2.当使用ADC时候,除了能够耐受5v输入的io外,其他的io输入电平禁止高于芯片的vcc供电电压.
3.校准值是个有符号的值,当单端采样通道接到GND时候,加上校准值可能会小于0
4.当与蓝牙工程或者触摸功能联合使用时候,要注意adc的使用必须与蓝牙的内部温度校准函数/触摸采样函数 优先级一致,或者说脚顺序执行,否则对优先级低的操作就要加原子操作,避免在高优先级的打断低优先级的ADC 操作导致采样结果混乱甚至死机之风险.