26.5
26.5.1
硬件設計
野火啟明6M5開發板的引出引腳電路圖如圖所示。

點擊可查看大圖
野火啟明4M2開發板的引出引腳電路圖如圖所示。

點擊可查看大圖
RA6M5和RA4M2都有2個DAC通道,兩個通道分別可以連接到P014和P015引腳上。
表5:RA6M5和RA4M2的DAC引腳
| DAC通道0 | P014 |
| DAC通道1 | P015 |
野火啟明2L1開發板的引出引腳電路圖如圖所示。

點擊可查看大圖
RA2L1只有1個DAC通道,該通道可以連接到P014引腳上。
表6:RA2L1的DAC引腳
| DAC通道0 | P014 |
注意
在本實驗中,啟明6M5、啟明4M2和啟明2L1開發板使用的都是P014引腳(DAC通道0)來輸出模擬正弦波信號。
26.5.2
軟件設計
26.5.2.1
新建工程
對于e2studio開發環境:拷貝一份我們之前的e2s工程模板“19_UART_Receive_Send”,然后將工程文件夾重命名為“26_DAC”,最后再將它導入到我們的e2studio工作空間中。
對于Keil開發環境:拷貝一份我們之前的Keil工程模板“19_UART_Receive_Send”,然后將工程文件夾重命名為“26_DAC”,并進入該文件夾里面雙擊Keil工程文件,打開該工程。
工程新建好之后,在工程根目錄的“src”文件夾下面新建“dac”文件夾,再進入該文件夾里面新建源文件和頭文件:“bsp_dac.c”和““bsp_dac.h”。工程文件結構如下。
列表3:文件結構
左右滑動查看完整內容
25_DAC ├─ ...... └─src ├─ led │ ├─ bsp_led.c │ └─ bsp_led.h ├─ debug_uart │ ├─ bsp_debug_uart.c │ └─ bsp_debug_uart.h ├─ adc │ ├─ bsp_dac.c │ └─ bsp_dac.h └─ hal_entry.c
26.5.2.2
FSP配置
打開該工程的FSP配置界面進行配置。
首先依次點擊“Stacks”->“Pins”->“Peripherals”->“DAC0”來配置通道DA0對應的引腳為P014。如下圖所示。

點擊可查看大圖
然后依次點擊“Stacks”->“New Stack”->“Analog”->“DAC(r_dac)”來配置DAC模塊。如下圖所示。

點擊可查看大圖
DAC的屬性配置:

點擊可查看大圖
除了DA0引腳選擇按照默認值即可。
表7:DAC屬性介紹

配置完成之后可以按下快捷鍵“Ctrl+S”保存,最后點右上角的“Generate Project Content”按鈕,讓軟件自動生成配置代碼即可。
26.5.2.3
DAC初始化函數
DAC初始化函數如下:
列表4:代碼清單26?3DAC初始化函數
左右滑動查看完整內容
/** * @brief初始化 DAC * @param無 * @retval無 */ voidDAC_Init() { R_DAC_Open(&g_dac0_ctrl, &g_dac0_cfg); R_DAC_Start(&g_dac0_ctrl); }
R_DAC_Open()配置單個DAC通道,啟動通道,并提供用于DAC API寫入和關閉函數的句柄。
R_DAC_Start()啟動D/A轉換輸出。
26.5.2.4
設置DAC輸出電壓函數
列表5:代碼清單26?4設置DAC輸出電壓函數
左右滑動查看完整內容
/**
*@brief設置當前的電壓
*@param需要控制的電壓
*@retval無
*/
voidDAC_SetVoltage(float voltage)
{
uint16_t dac_data;
dac_data = (uint16_t)(4095*((voltage)/3.3f));
R_DAC_Write(&g_dac0_ctrl, dac_data);
}
通過電壓轉換公式將輸入的模擬量轉換為數值量,輸入到R_DAC_Write()函數里,R_DAC_Write()會將數據寫入到D/A轉換器里。
26.5.2.5
DAC輸出正弦波
列表6:代碼清單26?5DAC輸出正弦波
左右滑動查看完整內容
//正弦波數據數組變量
uint16_tvar[] = {
2048,2460,2856,3218,3532,3786,3969,4072,4093,4031,3887,3668,
3382,3042,2661,2255,1841,1435,1054,714,428,209,65,3,24,127,
310,564,878,1240,1636,2048
};
/**
*@brief生成正弦波波形
*@param輸入的值可以調節波形的周期
*@retval無
*/
voidDAC_SinWave_Cycle(uint32_ttime_interval)
{
for(uint32_ti =0;i <(sizeof(var)/sizeof(var[0]));i++)
? {
? ??R_DAC_Write(&g_dac0_ctrl,var[i]);
? ??R_BSP_SoftwareDelay(time_interval,BSP_DELAY_UNITS_MILLISECONDS);
? }
}
通過輪循的方式將之前python生成的正弦波數據輸入到R_DAC_Write()函數里面,并且延時一段時間。而延時時間就是我們輸入到函數里面的數值,通過改變這一數值我們就可以調節正弦波的周期以及頻率。
26.5.2.6
hal_entry入口函數
列表7:代碼清單26?6hal_entry入口函數
左右滑動查看完整內容
/* 用戶頭文件包含 */#include"led/bsp_led.h"
#include"debug_uart/bsp_debug_uart.h"
#include"dac/bsp_dac.h"
voidhal_entry(void)
{
/*TODO:add your own code here */
LED_Init(); // LED 初始化
Debug_UART4_Init();// SCI4 UART 調試串口初始化
DAC_Init();// DAC 初始化
printf("這是一個 DAC 輸出正弦波的實驗例程
");printf("使用示波器測量 P014 引腳(DAC 0)
");
while(1)
{
DAC_SinWave_Cycle(1);
}
#ifBSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
26.5.3
下載驗證
用USB TYPE-C線連接開發板“USB TO UART”接口跟電腦,在電腦端打開串口調試助手,把編譯好的程序下載到開發板。
使用示波器測量P014引腳輸出的正弦波形,參考波形如下圖所示。注意觀察示波器測量出波形的頻率值和電壓峰值。

點擊可查看大圖
-
電路圖
+關注
關注
10487文章
10764瀏覽量
556887 -
正弦波
+關注
關注
11文章
662瀏覽量
59284 -
dac
+關注
關注
44文章
2818瀏覽量
197502 -
開發板
+關注
關注
26文章
6382瀏覽量
120227
原文標題:實驗:使用DAC輸出正弦波信號——瑞薩RA系列FSP庫開發實戰指南(96)
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
瑞薩RA系列FSP庫開發實戰指南之DAC簡介和結構框圖
瑞薩RA系列FSP庫開發實戰指南之使用DAC輸出正弦波信號實驗
評論