2.1. ADC

Overview

提供ADC应用示例、常用相关API介绍和常见问题。

2.1.1. 应用实例

示例演示:

  • 配置测量引脚

  • 添加测量通道

example: 具体示例代码详见 apps/common/example/peripheral/adc/adc_test.c ,示例工程实现需在 apps/demo/demo_DevKitBoard/include/demo_config.h 中开启宏 USE_ADC_TEST_DEMO

2.1.2. 常见问题说明

  • 一般初始化函数在 JL_AC79_DevKitBoard.cvoid board_init() 函数中已经声明调用

  • 添加测量通道之后,需延时操作,不能马上去读取ADC值。

  • 8 bitADC(A/D转换器),其时钟最大不可超过1MHz, 精度8bit。

  • 电压测量范围是0~VDDIO。

  • 使用 adc_get_voltage() 函数时,若数据不对,芯片需要经过杰理烧写器trim校准才行。

  • 若使用VBAT通道采集电池电压,所能测量最低电压阈值是VDDIO电压+300mV,低于该电压值会出现测量不准确的问题,采用低电池电压工作的方案需要短接VDDIO和外部3.3V

Important

测试IO误差每800mv误差累积是10mv,误差累积是线性的,用户可以据此自行估计所测的误差范围。

2.1.3. API参考

AD channel define

AD_CH_PA07
AD_CH_PA08
AD_CH_PA10
AD_CH_PB01
AD_CH_PB06
AD_CH_PB07
AD_CH_PC00
AD_CH_PC01
AD_CH_PC09
AD_CH_PC10
AD_CH_PH00
AD_CH_PH03
AD_CH_DM
AD_CH_DP
AD_CH_RTC
AD_CH_PMU
AD_CH_SYSPLL
AD_CH_AUDIO
AD_CH_WIFI
AD_CH_CTMU
ADC_PMU_CH_VBG
ADC_PMU_CH_VDC14
ADC_PMU_CH_SYSVDD
ADC_PMU_CH_VTEMP
ADC_PMU_CH_PROGF
ADC_PMU_CH_VBAT
ADC_PMU_CH_LDO5V
ADC_PMU_CH_WVDD
AD_CH_LDOREF
AD_CH_PMU_VBG
AD_CH_VDC14
AD_CH_SYSVDD
AD_CH_VTEMP
AD_CH_VBAT
AD_CH_LDO5V
AD_CH_WVDD
AD_AUDIO_VCM
AD_AUDIO_VOUTL
AD_AUDIO_VOUTR
AD_AUDIO_DACVDD
AD_CH_VCM
AD_CH_VOUTL
AD_CH_VOUTR
AD_CH_DACVDD
ADC_MAX_CH
void adc_init(void)

adc_init, adc初始化

void adc_pmu_detect_en(u32 ch)

adc_pmu_detect_en, 使能adc通道

Parameters

ch – : ADC通道号, AD_CH_PA07

void adc_vdc14_save(void)

adc_vdc14_save, 存储vdc14的值

void adc_vdc14_restore(void)

adc_vdc14_restore, 再次存储vdc14的值,避免被中途修改

u32 adc_get_value(u32 ch)

adc_get_value, 获取adc通道测得的数值(3.3*数值/1024)即得对应的电压值采用等待的方式采值,直到转换结束,才出来,即死等

Parameters

ch – : ADC通道号, AD_CH_PA07

Returns

当前通道的AD值

u32 adc_add_sample_ch(u32 ch)

adc_add_sample_ch, 添加adc测试通道

Parameters

ch – : ADC通道号

Returns

当前通道值

u32 adc_remove_sample_ch(u32 ch)

adc_remove_sample_ch, 移除adc测试通道

Parameters

ch – : ADC通道号

Returns

当前通道值

u32 adc_get_voltage(u32 ch)

adc_get_voltage, 换算电压的公式函数, 获取adc通道电压值,如果测得与实际不符,则需留意芯片是否trim过,trim值是否正确。

Parameters

ch – : ADC通道号

Returns

当前通道的电压值,单位mv