ADC 驱动例程
中文 | English
简介
本例程主要介绍了如何在EtherKit上使用rtthread的ADC框架完成通过ADC 采集模拟信号并进行数字信号的转换;主要内容如下:
硬件说明
如上述原理图所示:EtherKit上留有Analog Input 8通道接口分别连接到单片机的adc0、adc1的通道0、1、2、3;(注意,Analog Input的耐压范围为0~1.8v);
FSP配置说明
第一步:打开FSP导入xml配置文件;(或者直接点击Rtthread Studio 的FSP链接文件);
第二步:新建r_adc Stack 配置adc设备以及所用通道;
第三步:保存并点击Generate Project;生成的代码保存到hal_data.c中;
env配置
使用env工具打开adc0的外设
工程实例说明
ADC的源代码位于/projects/etherkit_driver_adc/src/hal_entry.c 中,使用的宏定义如下所示:
具体功能为每隔1000ms对ADC0的通道0采集一次模拟电压并进行一次转化,代码如下:
static int adc_vol_sample()
{
rt_adc_device_t adc_dev;
rt_uint32_t value, vol;
rt_err_t ret = RT_EOK;
/* 查找设备 */
adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
if (adc_dev == RT_NULL)
{
rt_kprintf("adc sample run failed! can't find %s device!\n", ADC_DEV_NAME);
return RT_ERROR;
}
/* 使能设备 */
ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
/* 读取采样值 */
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
rt_kprintf("the value is :%d \n", value);
/* 转换为对应电压值 */
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
/* 关闭通道 */
ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
return ret;
}
示例中While循环每隔1000ms调用一次adc_vol_sample;
编译&下载
RT-Thread Studio:在RT-Thread Studio 的包管理器中下载EtherKit 资源包,然后创建新工程,执行编译。
IAR:首先双击mklinks.bat,生成rt-thread与libraries 文件夹链接;再使用Env 生成IAR工程;最后双击project.eww打开IAR工程,执行编译。
编译完成后,将开发板的Jlink接口与PC 机连接,然后将固件下载至开发板。
运行效果
使用adc0 的0通道采集1.8v电压效果如下:
注意事项
R9A07G084M08GBG 芯片的ADC采集电压耐压为1.8v!