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

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

图2 选取通道12
按图3来配置参数,然后点击“Generate Project Content”按钮,以生成配置代码。

图3 配置参数
在生成代码后,以KEIL打开所生成的工程,并在主程序的文件中添加相应的代码,完成后的内容为:
volatile uint8_t ADC0_Busy;
void adc0_callback(adc_callback_args_t * p_args)
{
FSP_PARAMETER_NOT_USED(p_args);
ADC0_Busy = 0;
}
void ADC0_Init(void)
{
err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
assert(FSP_SUCCESS == err);
err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
assert(FSP_SUCCESS == err);
ADC0_Busy = 0;
}
void ADC0_Convert(uint8_t channel)
{
FSP_PARAMETER_NOT_USED(channel);
err = R_ADC_ScanStart(&g_adc0_ctrl);
assert(FSP_SUCCESS == err);
}
uint16_t ADC0_GetValue(uint8_t channel)
{
uint16_t ret;
err = R_ADC_Read(&g_adc0_ctrl, (adc_channel_t)channel, &ret);
assert(FSP_SUCCESS == err);
return ret;
}
在配有串口通讯的情况下,实现A/D数据采集的主程序为:
void hal_entry(void)
{
uint16_t u;
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);
printf("A/D test : \r\n");
ADC0_Init();
while(1)
{
ADC0_Convert(ADC_CHANNEL_12);
u=ADC0_GetValue(ADC_CHANNEL_12);
printf("CHANNEL_12:%d \r\n",u);
R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);
}
}
经程序的编译和下载,其测试效果如图4至图6所示,说明数据采集有效。

图4 采集GND信号

图5 采集VDD信号

图6 采集随机信号
在添加OLED屏显示的情况下,其测试效果如图8所示。

图7 器件连接

图8 显示效果
|