1. 概述
TG6210A芯片内置一个 12 bits 的逐次逼近式模拟数字转换器(ADC),支持 12 路外部模拟输入和若干内部模拟信号选择。ADC可以工作在单次转换和多通道扫描两种模式下,转换结果为 12/14/16 bits 左对齐模式。ADC 拥有深度为 32 的 FIFO,支持多种中断,支持 DMA 操作。ADC 除了用于普通模拟信号测量外,还可以用于测量供电电压,此外 ADC 还可以通过测量内/外部二极管电压用于温度检测。
2. API参考
2.1 ADC初始化
- 函数原型:
int hosal_adc_init(hosal_adc_dev_t *adc);
- 功能描述:初始化ADC
- 函数参数:
- adc:需要初始化的ADC句柄 ```c typedef struct { uint8_t port; /< @brief adc port */ hosal_adc_config_t config; /< @brief adc config / hosal_dma_chan_t dma_chan; /**< @brief adc dma channel / hosal_adc_irq_t cb; /< @brief adc callback / void p_arg; /< @brief p_arg data / void priv; /*< @brief priv data / } hosal_adc_dev_t;
```c
typedef struct {
uint32_t sampling_freq; /**< @brief sampling frequency in Hz */
uint32_t pin; /**< @brief adc pin */
hosal_adc_sample_mode_t mode; /**< @brief adc sampling mode */
uint8_t sample_resolution; /**< @brief adc sampling resolution */
} hosal_adc_config_t;
返回值:
函数原型:
int hosal_adc_add_channel(hosal_adc_dev_t *adc, uint32_t channel);
- 功能描述:增加adc channel。
- 函数参数:
- adc:ADC的句柄
- channel:需要增加的channel
返回值:
函数原型:
int hosal_adc_value_get(hosal_adc_dev_t *adc, uint32_t channel,
uint32_t timeout);
- 功能描述:获取采样值。
- 函数参数:
- adc:ADC的句柄
- channel:获取采样值channel
- timeout:超时时间
返回值:
函数原型:
int hosal_adc_finalize(hosal_adc_dev_t *adc);
- 功能描述:deinit ADC
- 函数参数:
- adc:ADC的句柄
- 返回值:
- 通过 hosal_adc_dev_t 定义一个adc设备,并设置port,port固定为0,mode只支持one shot模式。
```c
ret = hosal_adc_init(&adc0);
if (ret != 0) {
blog_error("init rtc error\r\n");
}
- 调用 hosal_adc_init 初始化adc 。
hosal_adc_add_channel(&adc0, 0);
hosal_adc_add_channel(&adc0, 8);
- 通过 hosal_adc_add_channel 来增加需要采样的通道。
ret = hosal_adc_value_get(&adc0, 0, 100);
- 通过 hosal_adc_value_get 接口来获取对应通道的采样值。
hosal_adc_finalize(&adc0);
- 通过 hosal_adc_finalize 结束此adc的使用。