通过RT-Thread Studio配置N32L406片上外设DAC的功能

电子说

1.2w人已加入

描述

前言
本文通过 RT-Thread Studio 配置 N32L406 片上外设 DAC 的功能,通过使用dac_open,dac_write,dac_close函数实现DAC的使用,不需要配置底层就能实现开发板PA4输出指定的电压值。

步骤
dac使用说明
打开N32L40x系列数据手册,查看资源可以发现当前芯片支持1路DAC,引脚为PA4,在进行RTT配置的就是默认是PA4,不用进行通道选择。

万用表

新建工程
打开rt-studio,基于开发板新建工程

万用表

点击RT-Thread Setting,打开DAC设备框架

万用表

在芯片设备驱动中打开DAC驱动

万用表

drv_dac解读
添加这一小节的原因是当前芯片只有1路DAC,后面编程需要用到,打开drv_dac.c文件。
共由5个函数组成,分别是n32_dac_init(),n32_dac_enable(),n32_dac_disable(),n32_set_dac_value(),以及rt_hw_dac_init()函数组成,其中主要关注n32_set_dac_value(),如下所示:
在使用dac设备的时候,实际上rt_dac_write()函数中,通道值已经不发生作用,在程序设计的时候只需关注设置的值就可以了。

万用表

dac设备通过这个操作集实现对DAC的控制

万用表

测试代码
在applications下新建test_dac.c,添加以下代码

#include
#include
#include
#define DAC_DEV_NAME "dac" /* DAC 设备名称 /
#define DAC_DEV_CHANNEL 0 /
DAC 通道 /
#define REFER_VOLTAGE 330 /
参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS (1 << 12) /* 转换位数为12位 */
static int dac_vol_sample(int argc, char argv[])
{
rt_dac_device_t dac_dev;
rt_uint32_t value, vol;
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);
/
设置输出值 /
//value = atoi(argv[1]);
value = 2000;
rt_dac_write(dac_dev, DAC_DEV_CHANNEL, value);
rt_kprintf("the value is :%d n", value);
/
转换为对应电压值 /
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is :%d.%02d n", vol / 100, vol % 100);
/
延时查看效果,关闭通道后无输出 /
rt_thread_mdelay(5000);
/
关闭通道 /
ret = rt_dac_disable(dac_dev, DAC_DEV_CHANNEL);
return ret;
}
/
导出到 msh 命令列表中 */
MSH_CMD_EXPORT(dac_vol_sample, dac voltage convert sample);

代码验证
编译并将程序下载到开发板中,打开终端

万用表

输入help命令

万用表

将万用表达到电压档,正极接到PA4, 输入dac_vol_sample命令,查看终端输出

万用表

查看万用表测量到的电压值,如下所示,输出设置的电压值。

万用表

总结
使用RT-Thread的设备驱动框架能很快的入手一款开发板,实现硬件底层与应用的分离,同时可以对接离线包,短时间内将开发板使用起来。

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分