前言
本文通過 RT-Thread Studio 配置 N32L406 片上外設(shè) DAC 的功能,通過使用dac_open,dac_write,dac_close函數(shù)實(shí)現(xiàn)DAC的使用,不需要配置底層就能實(shí)現(xiàn)開發(fā)板PA4輸出指定的電壓值。
步驟
dac使用說明
打開N32L40x系列數(shù)據(jù)手冊,查看資源可以發(fā)現(xiàn)當(dāng)前芯片支持1路DAC,引腳為PA4,在進(jìn)行RTT配置的就是默認(rèn)是PA4,不用進(jìn)行通道選擇。
新建工程
打開rt-studio,基于開發(fā)板新建工程
點(diǎn)擊RT-Thread Setting,打開DAC設(shè)備框架
在芯片設(shè)備驅(qū)動中打開DAC驅(qū)動
drv_dac解讀
添加這一小節(jié)的原因是當(dāng)前芯片只有1路DAC,后面編程需要用到,打開drv_dac.c文件。
共由5個(gè)函數(shù)組成,分別是n32_dac_init(),n32_dac_enable(),n32_dac_disable(),n32_set_dac_value(),以及rt_hw_dac_init()函數(shù)組成,其中主要關(guān)注n32_set_dac_value(),如下所示:
在使用dac設(shè)備的時(shí)候,實(shí)際上rt_dac_write()函數(shù)中,通道值已經(jīng)不發(fā)生作用,在程序設(shè)計(jì)的時(shí)候只需關(guān)注設(shè)置的值就可以了。
dac設(shè)備通過這個(gè)操作集實(shí)現(xiàn)對DAC的控制
測試代碼
在applications下新建test_dac.c,添加以下代碼
#include
#include
#include
#define DAC_DEV_NAME "dac" /* DAC 設(shè)備名稱 /
#define DAC_DEV_CHANNEL 0 / DAC 通道 /
#define REFER_VOLTAGE 330 / 參考電壓 3.3V,數(shù)據(jù)精度乘以100保留2位小數(shù)*/
#define CONVERT_BITS (1 << 12) /* 轉(zhuǎn)換位數(shù)為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;
/ 查找設(shè)備 /
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);
/ 設(shè)置輸出值 /
//value = atoi(argv[1]);
value = 2000;
rt_dac_write(dac_dev, DAC_DEV_CHANNEL, value);
rt_kprintf("the value is :%d n", value);
/ 轉(zhuǎn)換為對應(yīng)電壓值 /
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is :%d.%02d n", vol / 100, vol % 100);
/ 延時(shí)查看效果,關(guān)閉通道后無輸出 /
rt_thread_mdelay(5000);
/ 關(guān)閉通道 /
ret = rt_dac_disable(dac_dev, DAC_DEV_CHANNEL);
return ret;
}
/ 導(dǎo)出到 msh 命令列表中 */
MSH_CMD_EXPORT(dac_vol_sample, dac voltage convert sample);
代碼驗(yàn)證
編譯并將程序下載到開發(fā)板中,打開終端
輸入help命令
將萬用表達(dá)到電壓檔,正極接到PA4, 輸入dac_vol_sample命令,查看終端輸出
查看萬用表測量到的電壓值,如下所示,輸出設(shè)置的電壓值。
總結(jié)
使用RT-Thread的設(shè)備驅(qū)動框架能很快的入手一款開發(fā)板,實(shí)現(xiàn)硬件底層與應(yīng)用的分離,同時(shí)可以對接離線包,短時(shí)間內(nèi)將開發(fā)板使用起來。
-
萬用表
+關(guān)注
關(guān)注
88文章
2116瀏覽量
130381 -
驅(qū)動器
+關(guān)注
關(guān)注
54文章
8646瀏覽量
149232 -
控制器
+關(guān)注
關(guān)注
114文章
17005瀏覽量
183191 -
dac
+關(guān)注
關(guān)注
43文章
2385瀏覽量
193143 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1372瀏覽量
41568
發(fā)布評論請先 登錄
在RT-Thread Studio上配置rtthread CANFD驅(qū)動來控制M3508電機(jī)

在 RT-Thread Studio 上使用 RT-Thread Nano
使用RT-Thread Studio開發(fā)各個(gè)外設(shè)的驅(qū)動的操作方法
基于RT-Thread Studio的ADC外設(shè)使用方案介紹
RT-Thread Studio 主要亮點(diǎn)功能
RT-Thread STM32 配置系統(tǒng)時(shí)鐘(使用外部晶振)

RT-Thread Studio驅(qū)動SD卡

基于RT-Thread Studio學(xué)習(xí)

使用RT-Thread Studio進(jìn)行智能家居終端的設(shè)計(jì)

評論