1,概述

TG6000A芯片内置一个 12 bits 的模拟数字转换器(ADC),支持 3路外部模拟输入。

2,API参考

2.1 重要枚举、函数指针介绍

2.1.1 HAL_GPADC_CHAN_T枚举

  • GPADC channel枚举

    1. enum HAL_GPADC_CHAN_T {
    2. HAL_GPADC_CHAN_0 = 0,
    3. HAL_GPADC_CHAN_BATTERY = 1,
    4. HAL_GPADC_CHAN_2 = 2,
    5. HAL_GPADC_CHAN_3 = 3,
    6. HAL_GPADC_CHAN_4 = 4,
    7. HAL_GPADC_CHAN_5 = 5,
    8. HAL_GPADC_CHAN_6 = 6,
    9. HAL_GPADC_CHAN_ADCKEY = 7,
    10. HAL_GPADC_CHAN_QTY,
    11. };

    2.1.2 HAL_GPADC_ATP_T枚举

  • GPADC 采样时间枚举

    1. enum HAL_GPADC_ATP_T {
    2. HAL_GPADC_ATP_NULL = 0,
    3. HAL_GPADC_ATP_125US = 125,
    4. HAL_GPADC_ATP_500US = 500,
    5. HAL_GPADC_ATP_1MS = 1000,
    6. HAL_GPADC_ATP_2MS = 2000,
    7. HAL_GPADC_ATP_5MS = 5000,
    8. HAL_GPADC_ATP_10MS = 10000,
    9. HAL_GPADC_ATP_20MS = 20000,
    10. HAL_GPADC_ATP_30MS = 30000,
    11. HAL_GPADC_ATP_40MS = 40000,
    12. HAL_GPADC_ATP_50MS = 50000,
    13. HAL_GPADC_ATP_60MS = 60000,
    14. HAL_GPADC_ATP_ONESHOT = -1,
    15. };

    2.1.3 HAL_ADCKEY_IRQ_T枚举

  • GPADC 按键ADC中断

    1. enum HAL_ADCKEY_IRQ_T {
    2. HAL_ADCKEY_IRQ_NONE = 0,
    3. HAL_ADCKEY_IRQ_PRESSED = (1 << 0),
    4. HAL_ADCKEY_IRQ_RELEASED = (1 << 1),
    5. HAL_ADCKEY_IRQ_BOTH = (HAL_ADCKEY_IRQ_PRESSED | HAL_ADCKEY_IRQ_RELEASED),
    6. };

    2.1.4 HAL_ADCKEY_IRQ_STATUS_T枚举

  • GPADC 案件ADC 中断状态

    1. enum HAL_ADCKEY_IRQ_STATUS_T {
    2. HAL_ADCKEY_ADC_VALID = (1 << 0),
    3. HAL_ADCKEY_RELEASED = (1 << 1),
    4. HAL_ADCKEY_PRESSED = (1 << 2),
    5. HAL_ADCKEY_ERR0 = (1 << 3),
    6. HAL_ADCKEY_ERR1 = (1 << 4),
    7. };

    2.1.5 GPADC 中断函数指针

  • HAL_GPADC_EVENT_CB_T

    1. typedef void (*HAL_GPADC_EVENT_CB_T)(uint16_t raw_val, HAL_GPADC_MV_T volt);

    2.1.6 GPADC 按键中断函数

  • HAL_ADCKEY_EVENT_CB_T

    1. typedef void (*HAL_ADCKEY_EVENT_CB_T)(enum HAL_ADCKEY_IRQ_STATUS_T irq_status, uint16_t raw_val);

    2.2 主要函数介绍

    2.2.1 GPADC 开启函数

  • 函数原型:

    1. int hal_gpadc_open(enum HAL_GPADC_CHAN_T channel,
    2. enum HAL_GPADC_ATP_T atp,
    3. HAL_GPADC_EVENT_CB_T cb);
  • 函数功能:开启指定GPADC通道并且设置采样时间与注册回调函数(无法为ADCKEY设置)

  • 函数参数:
    • channel:GPADC 通道
    • atp:采样时间
    • cb:回调函数
  • 返回值:

    • 0:开启成功
    • -1:通道错误
    • -2:开启错误

      2.2.2 GPADC 读取电压

  • 函数原型:

    1. bool hal_gpadc_get_volt(enum HAL_GPADC_CHAN_T ch,
    2. HAL_GPADC_MV_T *volt);
  • 函数功能:读取指定通道ADC的数值并转化为电压值

  • 函数参数:
    • ch:GPADC通道
    • *volt:用于存储ADC读取的电压值
  • 返回值:

    • true:成功
    • false:失败

      2.2.3 关闭GPADC

  • 函数原型:

    1. int hal_gpadc_close(enum HAL_GPADC_CHAN_T channel);
  • 函数功能:关闭指定GPADC

  • 函数参数:
    • channel:GPADC通道
  • 返回值:

    • 0:关闭成功
    • -1:通道错误

      2.2.4 GPADC睡眠

  • 函数原型:

    1. void hal_gpadc_sleep(void);
  • 函数功能:所有GPADC进入睡眠模式

    2.2.5 GPADC唤醒

  • 函数原型:

    1. void hal_gpadc_weakup(void)
  • 函数功能:唤醒所有GPADC

    2.2.6 ADCKEY irq handler设置

  • 函数原型:

    1. void hal_adckey_set_irq_handler(HAL_ADCKEY_EVENT_CB_T cb);
  • 函数功能:为ADCKEY注册回调函数

  • 函数功能:

    • cb:回调函数

      2.2.7 ADCKEY设置irq

  • 函数原型:

    1. int hal_adckey_set_irq(enum HAL_ADCKEY_IRQ_T type);
  • 函数功能:设置ADCKEY的irq类型

  • 函数参数:

    • type:irq类型

      3, 使用教程

      3.1 头文件引用

      1. #include "hal_gpadc.h" //GPADC配置头文件

      3.2 GPADC启用

      1. hal_gpadc_open(HAL_GPADC_CHAN_0,HAL_GPADC_ATP_ONESHOT,adc0_cb);
  • 配置通道、采样时间与回调函数即可