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设备的驱动,这里参考了【大头小宋】的文章,在此声明。