Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
原创征文
瑞萨_RA6M4
【实验2:ADC电位计实验】
发布于 2022-08-18 10:40:22 浏览:508
订阅该版
[tocm] # 1. 前言 本实验使用了板载电位计(USER POT)通过ADC外设通道读取电平值,可以手动调节电位计查看ADC 通道的电平变化。通过本实验可以学习到简单外设的配置,包括rt-thread的外设配置和FSP的外设配 置。 # 2. 查看开发板用户手册 查看手册提取出需要注意的关键信息,电位计使用的ADC引脚是 P004,同时需要短接E31(开发板背 面)才能连接到MCU。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220818/4c6bd1d2ba2c4cdada65896a1204bc3b21e6ad12.png) # 3. FSP配置ADC 打开FSP,在Pins页找到 P004 引脚,并查看所属的ADC通道为ADC0通道 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220818/65252331665b246abd650a3a520958a186ba82b1.png) - 在Stacks中添加ADC外设,配置ADC0,在Input配置中打开通道4的输入功能 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220818/b5fc8415fb3c4a9e05c622109621e32fe7961a76.png) - 配置完成点击生成代码,此步必须操作否则配置不会添加到工程中。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220818/3af09d2079fd718bf9a20fbb24e952a6880bb7d5.png) # 4. 打开ADC设备驱动 在 RT-Thread settings 中打开 ADC0,保存配置。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220818/d9b93cf718ed1bd4a714b33b12e0bd36eb64f21c.png) # 5. 测试验证 添加测试代码到 `hal_entry.c` ```cpp #define ADC_DEV_NAME "adc0" #define ADC_DEV_CHANNEL 4 #define REFER_VOLTAGE 330 #define CONVERT_BITS (1 << 12) static void sensor_read_data(void) { 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) 编译下载,输入测试命令 sensor_read_data 查看电位计此时的电平值,可以使用工具旋转电位 计,查看电平变化。 { 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); ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL); vol = value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100); } MSH_CMD_EXPORT(sensor_read_data, sensor_read_data); ``` **`hal_entry.c`完整代码** ```cpp /* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-10-10 Sherman first version * 2021-11-03 Sherman Add icu_sample */ #include
#include "hal_data.h" #include
#define LED3_PIN BSP_IO_PORT_01_PIN_06 #define USER_INPUT "P105" void hal_entry(void) { rt_kprintf("\nHello RT-Thread!\n"); while (1) { rt_pin_write(LED3_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED3_PIN, PIN_LOW); rt_thread_mdelay(500); } } void irq_callback_test(void *args) { rt_kprintf("\n IRQ00 triggered \n"); } void icu_sample(void) { /* init */ rt_uint32_t pin = rt_pin_get(USER_INPUT); rt_kprintf("\n pin number : 0x%04X \n", pin); rt_err_t err = rt_pin_attach_irq(pin, PIN_IRQ_MODE_RISING, irq_callback_test, RT_NULL); if(RT_EOK != err) { rt_kprintf("\n attach irq failed. \n"); } err = rt_pin_irq_enable(pin, PIN_IRQ_ENABLE); if(RT_EOK != err) { rt_kprintf("\n enable irq failed. \n"); } } MSH_CMD_EXPORT(icu_sample, icu sample); #define ADC_DEV_NAME "adc0" #define ADC_DEV_CHANNEL 4 #define REFER_VOLTAGE 330 #define CONVERT_BITS (1 << 12) static void sensor_read_data(void) { 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); ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL); vol = value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100); } MSH_CMD_EXPORT(sensor_read_data, sensor_read_data); ``` 编译下载,输入测试命令 'sensor_read_data' 查看电位计此时的电平值,可以使用工具旋转电位 计,查看电平变化。 ```bash C:\Users\Asus>D:/RT-ThreadStudio/plugins/org.rt-thread.studio.serial.putty_1.0.5/putty/plink.exe -serial COM8 -sercfg 115200,8,n,1,N \ | / - RT - Thread Operating System / | \ 4.1.0 build Aug 15 2022 16:44:58 2006 - 2022 Copyright by RT-Thread team Hello RT-Thread! msh >sensor_read_data the voltage is :1.73 msh >sensor_read_data the voltage is :1.73 msh >sensor_read_data the voltage is :1.97 msh >sensor_read_data the voltage is :0.00 msh >sensor_read_data the voltage is :0.00 msh >sensor_read_data the voltage is :3.04 msh > ``` 参考文献: - [【实验1:RT-Thread环境搭建+IIC光线传感器实验】](https://blog.csdn.net/VOR234/article/details/126347128) - [【实验2:ADC电位计实验】](https://blog.csdn.net/VOR234/article/details/126349596) - [【实验3:RW007联网实验】](https://blog.csdn.net/VOR234/article/details/126350283) - [【实验4:MQTT交互实验】](https://blog.csdn.net/VOR234/article/details/126350769) - [【实验5:网关上云实验】](https://blog.csdn.net/VOR234/article/details/126350972) - [demo文件](https://download.csdn.net/download/VOR234/86401651)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
2345vor
每天都满怀期待i😀
文章
20
回答
2
被采纳
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
USB
DMA
文件系统
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部