Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
原创征文
瑞萨_RA6M4
【实验2:ADC电位计实验】
发布于 2022-08-18 10:40:22 浏览:569
订阅该版
[tocm] # 1. 前言 本实验使用了板载电位计(USER POT)通过ADC外设通道读取电平值,可以手动调节电位计查看ADC 通道的电平变化。通过本实验可以学习到简单外设的配置,包括rt-thread的外设配置和FSP的外设配 置。 # 2. 查看开发板用户手册 查看手册提取出需要注意的关键信息,电位计使用的ADC引脚是 P004,同时需要短接E31(开发板背 面)才能连接到MCU。  # 3. FSP配置ADC 打开FSP,在Pins页找到 P004 引脚,并查看所属的ADC通道为ADC0通道  - 在Stacks中添加ADC外设,配置ADC0,在Input配置中打开通道4的输入功能  - 配置完成点击生成代码,此步必须操作否则配置不会添加到工程中。  # 4. 打开ADC设备驱动 在 RT-Thread settings 中打开 ADC0,保存配置。  # 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
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
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
8
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部