Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DAC
N32L40XCL-STB
N32L40XCL-STB 开发板模块评测之DAC测试
发布于 2023-04-27 22:35:44 浏览:363
订阅该版
[tocm] ## 前言 本文通过 RT-Thread Studio 配置 N32L406 片上外设 DAC 的功能,通过使用dac_open,dac_write,dac_close函数实现DAC的使用,不需要配置底层就能实现开发板PA4输出指定的电压值。 ## 步骤 ### dac使用说明 打开N32L40x系列数据手册,查看资源可以发现当前芯片支持1路DAC,引脚为PA4,在进行RTT配置的就是默认是PA4,不用进行通道选择。 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/71f4f6e2e89501726cc3803fe9bef14c.png.webp) ### 新建工程 打开rt-studio,基于开发板新建工程 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/e3bf19529182cd0773ee6d56a677a820.png.webp) 点击RT-Thread Setting,打开DAC设备框架 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/3d0045bea2edf034de9d4e5b64884f3c.png.webp) 在芯片设备驱动中打开DAC驱动 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/6d0d4fc356892685b10a93206f8e583c.png.webp) ### 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()函数中,通道值已经不发生作用,在程序设计的时候只需关注设置的值就可以了。 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/589d381e8c193e0d44d103f1a494bb58.png.webp) dac设备通过这个操作集实现对DAC的控制 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/ac6d155c7c532a68b21ea25693a150b7.png.webp) ### 测试代码 在applications下新建test_dac.c,添加以下代码 ```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); ``` ## 代码验证 编译并将程序下载到开发板中,打开终端 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/d81884f5d0ca5418224ef00117e1a0eb.png.webp) 输入help命令 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/129f6f5d326c2acf60923a3068740eb3.png.webp) 将万用表达到电压档,正极接到PA4, 输入dac_vol_sample命令,查看终端输出 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/2f2d9947317cafce9c4d2754356f2224.png) 查看万用表测量到的电压值,如下所示,输出设置的电压值。 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230427/0245a53362c35fd207352122eaf7b197.png.webp) ## 总结 使用RT-Thread的设备驱动框架能很快的入手一款开发板,实现硬件底层与应用的分离,同时可以对接离线包,短时间内将开发板使用起来。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
UWPU_1321
这家伙很懒,什么也没写!
文章
6
回答
1
被采纳
0
关注TA
发私信
相关文章
1
dac设备可以使用dma+TIM定时器触发模式吗
2
无法找到rt_dac_device_t
3
stm32的dac配置,指南里面没有
4
在 rt-thraed env中使用HAL库报错HAL_BUSY
5
STM32F103RC dac输出使能后系统调度异常。
6
怎么把dac_vol_sample这个函数写到main里?
7
undeclared (first use in this function)
8
DAC通道1可以开启,通道2开不起来
9
DAC、ADC配置DMA后,程序运行卡死
10
在RT模式下,采用DMA模式如何设置DAC?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
编译报错
socket
keil_MDK
GD32
MicroPython
msh
Debug
ulog
SFUD
flashDB
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
用户名由3_15位
23
个答案
3
次被采纳
踩姑娘的小蘑菇
16
个答案
3
次被采纳
xiaorui
7
个答案
3
次被采纳
sakumisu
5
个答案
3
次被采纳
三世执戟
32
个答案
1
次被采纳
本月文章贡献
比特饼干
4
篇文章
14
次点赞
ZVML_9668
3
篇文章
3
次点赞
Z_Y
2
篇文章
5
次点赞
xusiwei1236
2
篇文章
3
次点赞
yinxiangxv
2
篇文章
3
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部