0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【EK-RA6E2开发指南】DAC设置电压值

嵌入式大杂烩 来源:嵌入式大杂烩 作者:嵌入式大杂烩 2025-09-23 18:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1 RA6E2 DAC简介

RA6E2有片上DAC外设,总共有两路DAC输出通道,每路的分辨率可配置为12位, 这两个通道之间互不影响,每个通道都可以使用ELC功能可外部触发或者进行与ADC单元1的同步转换。

175837528891574ajsqu7ew

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 DAC实例

3.1 硬件连接

P014引脚可以连接到MCU内部的 DAC 外设,从而输出外部电压。

1.png

3.2 RA6E2 DAC配置

接下来配置DAC,只需要简单配置就可使用。

  • FSP配置DAC

1.配置扫描通道对应的引脚

2.png

2.修改通道号为 0,与 DAC0 对应

3.png

4.png

  • 配置DAC通道

然后打开对应的通道

5.png

3.3 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 %sn", DEV_ADC);
    }
    rt_adc_enable(dev_adc, DEV_ADC_CHANNEL);

    if(dev_dac == RT_NULL)
    {
        rt_kprintf("no dac device named %sn", 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(500);

    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);

3.4 测试验证

编译下载,调试信息如下:

6.png

从以上打印信息可以看出,dac0和adc0已经使能,将P001和P014连接,然后使用MSH命令‘dac_test’即可使能DAC线程。

7.png
DAC输出电压和ADC输入的值相同。直接使用万用表测量电压值也是符合预期。

8.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dac
    dac
    +关注

    关注

    44

    文章

    2701

    浏览量

    196462
  • 数字信号
    +关注

    关注

    2

    文章

    1055

    浏览量

    48982
  • 数模转换器
    +关注

    关注

    14

    文章

    1287

    浏览量

    85249
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    EK-RA6E2开发指南开发环境搭建

    瑞萨电子的开发工具有很多,笔者习惯使用MDK开发,因此本文将基于MDK+RA Smart Configurator搭建开发环境。
    的头像 发表于 09-23 18:12 2556次阅读
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>开发指南</b>】<b class='flag-5'>开发</b>环境搭建

    EK-RA6E2开发指南】ADC获取电压

    RA6E22个ADC单元,每个ADC单元有12位、10位、8位读取数据的格式可以选择,在单元0上有13个ADC通道,而在单元1上有16个ADC通道。 ADC单元具有三种扫描方式分别为:单次描模式、连续扫描模式和分组扫描模式,
    的头像 发表于 09-23 18:15 1756次阅读
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>开发指南</b>】ADC获取<b class='flag-5'>电压</b><b class='flag-5'>值</b>

    EK-RA6E2开发指南】RTC实践

    RA6E2的RTC(Real Time Clock)外设,实质是一个掉电后还继续运行的定时器。从定时器的角度来说,相对于GPT外设,要简单很多 ,只有计时和触发中断以及输入捕获的功能。RTC外设的特别之处并不在于它的定时功能,而在于它掉电还继续运行的特性。
    的头像 发表于 09-23 18:18 1913次阅读
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>开发指南</b>】RTC实践

    EK-RA2E2-快速入门指南

    EK-RA2E2-快速入门指南
    发表于 01-30 18:47 0次下载
    <b class='flag-5'>EK-RA2E2</b>-快速入门<b class='flag-5'>指南</b>

    EK-RA2E1 – 快速入门指南

    EK-RA2E1 – 快速入门指南
    发表于 02-03 19:08 0次下载
    <b class='flag-5'>EK-RA2E</b>1 – 快速入门<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入门指南

    EK-RA6M2 – 快速入门指南
    发表于 03-13 19:36 0次下载
    <b class='flag-5'>EK-RA6M2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA6E2v1 – 用户手册

    EK-RA6E2 v1 – 用户手册
    发表于 05-12 19:18 0次下载
    <b class='flag-5'>EK-RA6E2</b>v1 – 用户手册

    EK-RA6E2– 快速入门指南

    EK-RA6E2 – 快速入门指南
    发表于 05-12 19:20 1次下载
    <b class='flag-5'>EK-RA6E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA4E2– 快速入门指南

    EK-RA4E2 – 快速入门指南
    发表于 05-12 19:23 0次下载
    <b class='flag-5'>EK-RA4E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA6E2v1 – 用户手册

    EK-RA6E2 v1 – 用户手册
    发表于 06-29 19:10 1次下载
    <b class='flag-5'>EK-RA6E2</b>v1 – 用户手册

    EK-RA6E2– 快速入门指南

    EK-RA6E2 – 快速入门指南
    发表于 06-29 19:11 0次下载
    <b class='flag-5'>EK-RA6E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA4E2– 快速入门指南

    EK-RA4E2 – 快速入门指南
    发表于 06-29 19:14 0次下载
    <b class='flag-5'>EK-RA4E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA2E2-快速入门指南

    EK-RA2E2-快速入门指南
    发表于 07-03 20:12 0次下载
    <b class='flag-5'>EK-RA2E2</b>-快速入门<b class='flag-5'>指南</b>

    EK-RA2E1 – 快速入门指南

    EK-RA2E1 – 快速入门指南
    发表于 07-04 19:40 0次下载
    <b class='flag-5'>EK-RA2E</b>1 – 快速入门<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入门指南

    EK-RA6M2 – 快速入门指南
    发表于 07-04 20:54 0次下载
    <b class='flag-5'>EK-RA6M2</b>– 快速入门<b class='flag-5'>指南</b>