前言
本文通過 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的設備驅動框架能很快的入手一款開發板,實現硬件底層與應用的分離,同時可以對接離線包,短時間內將開發板使用起來。
-
萬用表
+關注
關注
88文章
2078瀏覽量
128003 -
驅動器
+關注
關注
53文章
8264瀏覽量
146732 -
控制器
+關注
關注
112文章
16421瀏覽量
178840 -
dac
+關注
關注
43文章
2306瀏覽量
191289 -
RT-Thread
+關注
關注
31文章
1302瀏覽量
40275
發布評論請先 登錄
相關推薦
評論