2
瑞萨 R7FA4L1BD4CFP 内置 LCD 驱动器 Segment LCD Controller(SLCDC),可直接驱动 静态、1/2、1/3、1/4 Bias 的段式 LCD 显示屏,无需额外的 LCD 驱动芯片。
RA4L1 还内置 12bit ADC,可以采样外部电压和芯片内部温度传感器模拟电压
使能 ADC 和 SLCDC 模块,可以将 ADC 采集的电压值显示到液晶显示屏上,如下:

RA4L1 板载 LCD 段码屏,结构如下:


电路连接如下:

SLCDC 控制器配置可以参考如下文章:
https://coremaker.blog.csdn.net/article/details/146589863
https://coremaker.blog.csdn.net/article/details/146590286
配置好 SLCDC 后,再配置 ADC 单次触发采样,使能 ADC 转换完成中断:

ADC 转换写成函数,代码如下,可以直接调用:
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);
}
void ADC0_Convert(u8 channel)
{
fsp_err_t err;
FSP_PARAMETER_NOT_USED(channel);
R_ADC_ScanStart(&g_adc0_ctrl);
}
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;
}
最终代码调用如下:
int my_main(void)
{
u16 adc;
fsp_err_t err;
GPIO_PIN_H(GPIO6, 1);
GPIO_PIN_H(GPIO6, 9);
GPIO_PIN_H(GPIO6, 10);
Delay_Ms(1000);
SLCDC_Init();
ADC0_Init();
ADC0_Convert(25);
while (1)
{
if (scan_complete_flag)
{
adc = ADC0_GetValue(25);
SLCDC_Voltage((u32)adc*330/4095);
scan_complete_flag = false;
ADC0_Convert(25);
Delay_Ms(100);
}
}
return 0;
}
|