Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
HMI-Board
RA6M3 HMI Board 之ADC实践
发布于 2023-06-17 10:36:33 浏览:629
订阅该版
[tocm] **开发环境:** RT-Thread Studio:v2.2.6 开发板:RA6M3 HMI Board开发板 MCU:R7FA6M3AH3CFB # 1 RA6M3 ADC简介 R7FA6M3有2个ADC单元,每个ADC单元有12位、10位、8位读取数据的格式可以选择,在单元0上有13个ADC通道,而在单元1上有16个ADC通道。 ADC单元具有三种扫描方式分别为:单次描模式、连续扫描模式和分组扫描模式,  # 2 RT-Thread 的ADC简介 ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。 A/D转换主要包括两个内容:采样保持和量化编码,将一个模拟信号进行采样,得到的样点转化为数字量,这是整个A/D转换过程的核心,量化编码分为好多算法,这里不深入研究了。ADC主要参数如下: **1.分辨率** AD转换器输出的数字量的最低位变化一个数时,对应输入模拟量的变化量,A/D转换器的位数越多,能够分辨的最小模拟电压值就越小,分辨率就越大,GD32的A/D转换器是12位的,位数越多,表示分辨率越高,恢复模拟信号时会更精确。 **2.相对精度** A/D转换器实际输出数字量与理论值之间的最大差值称为相对精度。 **3.转换速度** A/D转换器完成一次转换所需要的时间,一般是us级别的。 应用程序通过 RT-Thread 提供的 ADC 设备管理接口来访问 ADC 硬件,相关接口如下所示: | **函数** | **描述** | | ---------------------------- | ------------------------------------- | | **rt_device_find()** | 根据ADC设备名称查找设备获取设备句柄 | | **rt_adc_enable()** | 使能ADC设备 | | **rt_adc_read()** | 读取ADC设备数据 | | **rt_adc_disable()** | 关闭ADC设备 | 关于ADC的更多资料请参看RT-Thread官方手册: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/adc/adc # 3 硬件连接 P001引脚可以连接到MCU内部的 ADC 外设,从而对电位器输入的模拟信号进行采集。  # 4 RA6M3 ADC配置 接下来配置ADC,只需要简单配置就可使用。双击工程中的 RA Smart Configurator 图标,第一次打开需要配置正确的 FSP 安装路径。   * **FSP配置ADC** 1.配置扫描通道对应的引脚  2.配置 name、unit、mode,选择扫描的通道编号   * **配置ADC通道** 然后打开对应的通道  # 5 ADC代码实现 笔者这里使用的通道1,核心代码如下: ``` #define ADC_DEV_NAME "adc0" /* ADC 设备名称 */ #define ADC_DEV_CHANNEL 1 /* ADC 通道 */ #define REFER_VOLTAGE 330 /* 参考电压 3.3V,数据精度乘以100保留2位小数*/ #define CONVERT_BITS (1 < < 12) /* 转换位数为12位 */ static int adc_vol_sample(int argc, char *argv[]) { 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; } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample); ``` # 6 测试验证 编译下载,调试信息如下:  从以上打印信息可以看出,adc0已经使能,然后使用MSH命令‘adc_vol_sample’即可使能ADC线程。  笔者这里将P001接到GND和3.3V电压上,和实际的电压是相符的。
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
BruceOu
这家伙很懒,什么也没写!
文章
27
回答
0
被采纳
0
关注TA
发私信
相关文章
1
请大神帮忙看下风格 还是哪里有问题 照着串口驱动写的ADC驱动
2
ADC config
3
rt_thread_delay()和ADC采样之间的冲突
4
请教在官方BSP中的STM32F40X程序中加入ADC,串口没输出。
5
给RT-Thread添加ADC驱动框架
6
求助:ADC采样被干扰
7
【内核和外设学习营】十里 ADC光敏电阻电压采集实验
8
<内核学习营>+坦然+探索者stm32f407板子的ADC测试光传感器实验
9
【内核学习营】+青春+ADC读取光敏传感器实验
10
《内核学习营》+水一方+项目中应用的ADC实现电压采集
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
编译报错
socket
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
10
个答案
3
次被采纳
xiaorui
3
个答案
3
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
9
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部