DAC
【设置 DAC 模拟电压输出】
瑞萨 RA6E2 支持 12 位 DAC 输出,代码里可以设置输出模拟电压。

DAC0 对应 P014 引脚,首先在 FPS Smart Configuration 软件上做如下配置:

再配置 Stacks,如下:

导出代码后,使用以下代码使用 DAC 输出指定电压:
fsp_err_t err = R_DAC_Open(&g_dac0_ctrl, &g_dac0_cfg);
assert(FSP_SUCCESS == err);
err = R_DAC_Start(&g_dac0_ctrl);
assert(FSP_SUCCESS == err);
err = R_DAC_Write(&g_dac0_ctrl, dac);
assert(FSP_SUCCESS == err);
代码中 dac 的值为 0 ~ 4095,对应 0 ~ 3.3v 电压
【ADC 电压输入】
瑞萨 RA6E2 支持 12 位 ADC 电压检测,代码里可以读取 AD 转换值从而计算电压值。在 FPS Smart Configuration 软件上做如下配置:

开启 P000 引脚检测电电压功能,还需要配置 Stacks 里面的终端:

打开转换完成中断,配置优先级和回调函数
使用如下代码获取电压 AD 值:
volatile u8 ADC0_Busy;
void adc0_callback(adc_callback_args_t * p_args)
{
FSP_PARAMETER_NOT_USED(p_args);
ADC0_Busy = 0;
}
void ADC0_Init(void)
{
fsp_err_t err;
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(u8 channel)
{
fsp_err_t err;
FSP_PARAMETER_NOT_USED(channel);
err = R_ADC_ScanStart(&g_adc0_ctrl);
assert(FSP_SUCCESS == err);
}
u16 ADC0_GetValue(u8 channel)
{
fsp_err_t err;
u16 ret;
err = R_ADC_Read(&g_adc0_ctrl, (adc_channel_t)channel, &ret);
assert(FSP_SUCCESS == err);
return ret;
}
短接 P000 和 P014,就可以将 DAC 输出的电压进行 ADC 转换再读取。
|