RA4M2-SENSOR内置有12 位 DAC,在硬件的支持下,要实现相应的功能,就需要以RASC进行引脚的配置,并生成KEIL工程代码,其步骤为:
添加一个DAC入栈,见图1所示。

图1 添加DAC
选取通道0进行采集,其引脚为P014,见图2所示。

图2 选取通道及引脚
此外,为了设计的需要,还需添加串口、定时器及驱动OLED的GPIO口等,见图3所示。

图3 添加其他功能
对于定时器,其参数配置如图4所示。随后点击“Generate Project Content”按钮,以生成项目工程。

图4 定时器参数配置
在生成代码后,以KEIL打开所生成的工程,并在主程序的文件中添加相应的代码,完成后的内容为:
void Sawtooth_Wave_Init(void)
{
err = FSP_SUCCESS;
err = R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg);
assert(err == FSP_SUCCESS);
err = R_GPT_Start(&g_timer0_ctrl);
assert(err == FSP_SUCCESS);
err = R_DAC_Open(&g_dac0_ctrl, &g_dac0_cfg);
assert(err == FSP_SUCCESS);
err = R_DAC_Start(&g_dac0_ctrl);
assert(err == FSP_SUCCESS);
}
void g_timer0_callback(timer_callback_args_t * p_args)
{
FSP_PARAMETER_NOT_USED(p_args);
R_DAC_Write(&g_dac0_ctrl,sawtooth_wave[i++]);
if(i >= 256) i = 0;
}
相应的主程序为:
void hal_entry(void)
{
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 3);
assert(FSP_SUCCESS == err);
OLED_Initd();
OLED_Clear();
OLED_ShowString(0,0,"RA4M2-SENSOR",16);
OLED_ShowString(0,2,"DAC test",16);
Sawtooth_Wave_Init();
while(1);
}
经程序的编译和下载,可通过示波器来观察其输出波形,见图5所示。

图5 输出波形
|