思澈科技软件开发工具包  2.20
GPADC

GPADC驱动包括两层:硬件访问层(HAL)和RT-Thread的适配层。
HAL 提供用于访问 adc 外设寄存器的基本 API。 适配层提供常用的adc读取功能。 用户可以将它们与 RT-THREAD 设备一起使用。 ADC 支持 DMA 模式、中断模式和轮询模式,现在默认使用轮询模式。 主要功能包括:

  • 支持8个通道
  • 支持DMA读取
  • 支持中断

驱动配置

可以使用 menuconfig 工具为每个项目选择它,并且通常保存在 C 头文件中。 默认情况下,配置保存为 rtconfig.h。
下面的例子显示了在一个项目头文件中定义的标志,项目是启用FLASH控制器,NOR-FLASH模式启用,使用FLASH控制器1和2的NOR模式,FLASH1大小为2MB,FLASH2为32MB。 步骤选择配置:

  • 在项目下的命令中输入“menuconfig”
  • 选择“RTOS —>”
  • 选择“On-chip Peripheral Driver—>”
  • 选择“Enable ADC —>” Enable ADC driver,定义宏BSP_USING_ADC
  • 选择“Enable ADC1”启用adc1控制器,定义宏BSP_USING_ADC1。
#define BSP_USING_ADC
#define BSP_USING_ADC1

要在 rt-tread 上启用 ADC 设备,它还使用 menuconfig 工具并包含在头文件中。 启用 RT-DEVICE flash 界面的步骤(在 menuconfig 主菜单中):

  • 选择“RTOS ”—>
  • 选择“T-Thread Components —>”
  • 选择“Device Driver—>”
  • 启用“Using ADC device drivers”注册 ADC 设备,定义宏 RT_USING_ADC
#define RT_USING_ADC

配置完成后,用户需要在所有需要访问驱动程序的源代码中包含头文件。

PinMux 和插槽定义

对于每个 adc 插槽,都有一个引脚,但该引脚可以复用到不同的功能。 在将其用作 ADC 之前,我们需要设置它的 pinmux 功能,这里是将 pin 设置为 ADC SLOT 0 的示例,更多详细信息需要检查硬件 pinmux 表:

HAL_PIN_Set(PAD_PB_04, ADC_PIN, PIN_INPUT, 0);

ADC TO VOL

需要2个不同的电压,得到它们的寄存器值,可以得到准确的偏移量和比率(mv per bit)。

使用ADC接口

适配器层注册 RT-Thread 请求的硬件支持功能,并使用 HAL 实现这些功能。 对于使用 RT-Thread 的用户,可以使用以下代码作为示例:

// Find and open adc device
dev = rt_device_find("adc1");
rt_device_open(dev, RT_DEVICE_FLAG_RDONLY);
// enable slot
rt_device_control(dev, RT_ADC_CMD_ENABLE, (void *)chn);
// read value
res = rt_device_read(dev, chn, &value, 1);
// value to voltage
res = (value - TC_ADC_OFFSET) * ratio;
...
// Close device, keep it open for more user.
rt_device_close(dev);
HAL_PIN_Set
int HAL_PIN_Set(int pad, pin_function func, int flags, int hcpu)
Set pin function.