野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2370|回复: 0

【瑞萨RA MCU创意氛围赛】RT-Thread ADC的应用

[复制链接]
发表于 2023-6-21 20:56:32 | 显示全部楼层 |阅读模式


RA6M5 有2个ADC单元,每个ADC单元有12位、10位、8位读取数据的格式可以选择,在单元0上有13个ADC通道,而在单元1上有16个ADC通道。 ADC单元具有三种扫描方式分别为:单次描模式、连续扫描模式和分组扫描模式, 对于RA6M5来说ADC单元具有强大的功能,具体我们可以通过ADC特性和ADC的结构框图中分析每个部分的功能。

RA6M5 的ADC特性如下:
2 个ADC转换单元。
可以进行TrustZone安全设置。
支持内部温度检测,内部参考电压。
逐次逼近型ADC,支持的分辨率:12-bit, 10-bit, 8-bit。
转换时间短:0.4 μs/每通道(12-bit ADC、时钟PCLKC (ADCLK)等于50 MHz的条件下)。
可启用A/D 数据存储缓冲区是一个环形缓冲区,由16个缓冲区组成,用于顺序存储A/D转换后的数据。
自诊断在每次扫描开始时执行一次,在ADC执行生成中的三个参考电压值中选择一个A/D转换值。


野火启明6M5开发板的 ADC 电位器电路图如图所示:

sch_6m52.png
P000引脚可以连接到MCU内部的 ADC 外设,从而对电位器输入的模拟信号进行采集。

FSP配置ADC如下:
11.png
22.png

RTT上用于操作ADC的接口主要有如下几个:

rt_device_find()        根据ADC设备名称查找设备获取设备句柄
rt_adc_enable()        使能ADC设备
rt_adc_read()        读取ADC设备数据
rt_adc_disable()        关闭ADC设备

测试代码
  1. #define ADC_DEV_NAME        "adc0"      /* ADC 设备名称 */
  2. #define ADC_DEV_CHANNEL 0 /* ADC 通道 */
  3. #define REFER_VOLTAGE       330         /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
  4. #define CONVERT_BITS        (1 < < 12)   /* 转换位数为12位 */
  5. static int adc_vol_sample(int argc, char *argv[])
  6. {
  7.     rt_adc_device_t adc_dev;
  8.     rt_uint32_t value, vol;
  9.     rt_err_t ret = RT_EOK;
  10.     /* 查找设备 */
  11.     adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
  12.     if (adc_dev == RT_NULL)
  13.     {
  14.         rt_kprintf("adc sample run failed! can't find %s device!\\\\n", ADC_DEV_NAME);
  15.         return RT_ERROR;
  16.     }
  17.     /* 使能设备 */
  18.     ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
  19.     /* 读取采样值 */
  20.     value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
  21.     rt_kprintf("the value is :%d \n", value);
  22.     /* 转换为对应电压值 */
  23.     vol = value * REFER_VOLTAGE / CONVERT_BITS;
  24.     rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
  25.     /* 关闭通道 */
  26.     ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
  27.     return ret;
  28. }
  29. /* 导出到 msh 命令列表中 */
  30. MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample);
复制代码


效果:

33.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-4-8 18:41 , Processed in 0.142580 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表