RA6M3 HMI Board 之DAC设置电压值

开发环境:
rt-thread studio:v2.2.6
开发板:ra6m3 hmi board开发板
mcu:r7fa6m3ah3cfb
1 ra6m3 dac简介r7fa6m3有片上dac外设,总共有两路dac输出通道,每路的分辨率可配置为12位, 这两个通道之间互不影响,每个通道都可以使用elc功能可外部触发或者进行与adc单元1的同步转换。
2 rt-thread 的dac简介dac(digital-to-analogl converter) 指数模转换器。是指把二进制数字量形式的离散数字信号转换为连续变化的模拟信号的器件。在数字世界中,要处理不稳定和动态的模拟信号并不容易,基于 dac 的特性,在各种不同的产品中都可以找到它的身影。与之相对应的 adc(analog-to-digital converter)),它是 dac 数模转换的逆向过程。dac 主要应用于音频放大,视频编码,电机控制,数字电位计等。
应用程序通过 rt-thread 提供的 dac 设备管理接口来访问 dac 硬件,相关接口如下所示:
函数描述
rt_device_find() 根据 dac设备名称查找设备获取设备句柄
rt_dac_enable() 使能 dac设备
rt_dac_read() 读取 dac设备数据
rt_dac_disable() 关闭 dac设备
关于dac的更多资料请参看rt-thread官方手册:
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/dac/dac
3 硬件连接p014引脚可以连接到mcu内部的 dac 外设,从而输出外部电压。
4 ra6m3 dac配置接下来配置dac,只需要简单配置就可使用。双击工程中的 ra smart configurator 图标,第一次打开需要配置正确的 fsp 安装路径。
fsp配置dac1.配置扫描通道对应的引脚
2.修改通道号为 0,与 dac0 对应
配置dac通道然后打开对应的通道
4 dac代码实现笔者这里使用的dac通道0,然后接到adc的通道1,核心代码如下:
#define dev_adc adc0#define dev_adc_channel 1#define dev_dac dac0#define dev_dac_channel 0#define refer_voltage 330#define convert_bits (1 < < 12)void dac_test(void){ rt_adc_device_t dev_adc = (rt_adc_device_t)rt_device_find(dev_adc); rt_dac_device_t dev_dac = (rt_dac_device_t)rt_device_find(dev_dac); rt_uint32_t vol, value = 2048; if(dev_adc == rt_null) { rt_kprintf(no adc device named %s\\n, dev_adc); } rt_adc_enable(dev_adc, dev_adc_channel); if(dev_dac == rt_null) { rt_kprintf(no dac device named %s\\n, dev_dac); } rt_dac_enable(dev_dac, dev_dac_channel); rt_dac_write(dev_dac, dev_dac_channel, value); vol = value * refer_voltage / convert_bits; rt_kprintf(the dac voltage is :%d.%02d \\n, vol / 100, vol % 100); rt_thread_mdelay(100); value = rt_adc_read(dev_adc, dev_adc_channel); vol = value * refer_voltage / convert_bits; rt_kprintf(the adc voltage is :%d.%02d \\n, vol / 100, vol % 100); rt_adc_disable(dev_adc, dev_adc_channel); rt_dac_disable(dev_dac, dev_dac_channel);}msh_cmd_export(dac_test, dac_test);5 测试验证编译下载,调试信息如下:
从以上打印信息可以看出,dac0和adc0已经使能,将p001和p014连接,然后使用msh命令‘dac_test’即可使能dac线程。
dac输出电压和adc通道1的值相同。


红米6评测 很可能会成为一款入门爆款
华为荣耀magic发布,为什么说好的麒麟960不见了
招商港口与腾讯合作将共同建设世界一流的智慧港口
关于SiC MOSFET的新的电路设计挑战
【技术分享】自动收发RS-485偏置电阻与终端电阻的选用,你知多少?
RA6M3 HMI Board 之DAC设置电压值
PLC调试过程中8种常见错误类型
网络传输介质有哪些
可调控VCOM可产生精确参考电压
AMDZen架构让Intel压力大 Intel回应将更加激进
Power10 芯片在人工智能计算任务上的设计比超级计算机要快?
多层PCB板连接理想解决方案插针的MAG-MATE端子介绍
携获奖产品Crystal参加CES2024,高端头显品牌小派科技体验震撼全场
详解PLC节省输入点数方法
oppor11什么时候上市?oppor11重磅来袭:前后双摄+VOOC闪冲+2999元,5月15见
博通公司宣布推出世界上性能最高的多核通讯处理器
Weiking WKF2802G/WKF2802GA滤波器简介
小型自动气象站的简介,其技术参数有哪些
采用S7-300 PLC与PROFIBUS现场总线技术实现新型PID控制算法
无人机与无人驾驶汽车都已实现,那无人驾驶客机离我们还会远吗?