rtthread studio与正点原子apollo(8)--DAC设备


前言

本文介绍RT-Thread DAC设备的使用方法。


一、DAC简介

数模转换(DAC)是将数字量转换为模拟量,与ADC的过程相反。在数字信号处理过程中,通常是将采集到的信号先转换为数字信号送 入计算机或MCU,进行FFT或滤波后得到有用信号,之后再通过DAC变换为模拟量用于控制设备的运行,如语音和视频等信号的处理。

二、访问DAC设备

DAC设备的介绍和API的使用参考官方文档
DAC设备

访问DAC设备的步骤:
(1)查找DAC设备

#define DAC_DEV_NAME        "dac1"  /* DAC 设备名称 */
rt_dac_device_t dac_dev;            /* DAC 设备句柄 */
/* 查找设备 */
dac_dev = (rt_dac_device_t)rt_device_find(DAC_DEV_NAME);

(2)使能DAC通道

#define DAC_DEV_CHANNEL     1       /* DAC 通道 */
/* 使能设备 */
rt_dac_enable(dac_dev, DAC_DEV_CHANNEL);

(3)设置DAC通道输出值

rt_uint32_t value = 1000;          /* DAC 数据保持寄存器值 */
/* 输出电压值 */
rt_dac_write(dac_dev, DAC_DEV_CHANNEL, value);

(4)关闭DAC通道

/* 关闭通道 */
rt_dac_disable(dac_dev, DAC_DEV_CHANNEL);

三、DAC设备使用实例

1.DAC配置过程

DAC设备的使用与ADC设备的使用方法及过程类似,但RT-Thread目前对DAC设备的支持并不完善,在使用时需要自己编写驱动代码。

1.DAC设备驱动

DAC设备驱动的编写可以仿ADC编写,具体步骤可参考
大头小宋的文章

2.DAC设备配置过程
(1)在RT-Thread studio中创建工程,使能DAC功能
在这里插入图片描述

(2)打开board.h文件,按提示配置ADC(提示为自己编写)
在这里插入图片描述
第一步:在(1)中已完成
第二步:增加宏定义,开启要使用DAC设备的功能

#define BSP_USING_DAC1

第三步:在stm32cubemx中配置DAC功能,并将生成的
void HAL_DAC_MspInit(DAC_HandleTypeDef* dacHandle)
拷贝到board.c文件后面
在这里插入图片描述
第四步:打开stm32f7xx_hal_config.h文件,取保开启宏定义
#define HAL_ADC_MODULE_ENABLED

在这里插入图片描述

2ADC设备使用完整例程

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>

#define DAC_DEV_NAME        "dac1"  /* DAC 设备名称 */
#define DAC_DEV_CHANNEL     1       /* DAC 通道 */
rt_dac_device_t dac_dev;
#define REFER_VOLTAGE       330         /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS        (1 << 12)   /* 转换位数为12位 */

void dac_set_vol(rt_uint32_t vol)//1000->1V
{
    rt_uint32_t value;
    double temp=vol;
    temp=temp/1000;
    temp=temp*4095/3.3;
    value=temp;
    rt_dac_write(dac_dev, DAC_DEV_CHANNEL, vol);
}

static int dac_vol_sample(void)
{
    rt_err_t ret = RT_EOK;

    /* 查找设备 */
    dac_dev = (rt_dac_device_t)rt_device_find(DAC_DEV_NAME);
    if (dac_dev == RT_NULL)
    {
        rt_kprintf("dac sample run failed! can't find %s device!\n", DAC_DEV_NAME);
        return RT_ERROR;
    }

    /* 使能设备 */
    ret = rt_dac_enable(dac_dev, DAC_DEV_CHANNEL);

    /* 设置输出值 */
    dac_set_vol(3);

    /* 关闭通道 */
    //ret = rt_dac_disable(dac_dev, DAC_DEV_CHANNEL);

    return ret;
}

总结

本文介绍了DAC设备的使用,尤其是需要自己编写DAC设备的驱动,这里参考了【大头小宋】的文章,在此声明。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值