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 操作导致采样结果混乱甚至死机之风险.

相关