我们有 S32K146 和 S32K148,我们想让我们的客户知道我们的 MCU 的
电源电压何时过低或过高。
我已经在参考手册中了解了 LVD 系统,我有一些疑问/问题,希望得到您的支持。
1. 当我提供 V lvd 阈值 2.7 和 3.0 伏之间的 MCU 电源电压时,我读取 PMC_LVDSC1[LVDF],当检测到低电压事件时它为 1,当我提供高于 V lvd 时,我再次读取 0,所以它按我的预期工作。但是我也可以配置这个阈值吗?例如让它在 2.7 和 3.2 之间?
2. 关于低电压警告,无论提供什么电源电压,我总是读取 PMC_LVDSC2[LVWF] = 1,我尝试提供 2.7 到 5 伏之间所有值的电压,它总是返回 1。
根据 S32K1xx 数据表,V lvw 的阈值水平在 4.19 和 4.5 之间。
那么为什么即使我的内部电源高于跳变点我总是得到 1?也许我错过了什么?
我也知道我应该承认 LVWACK 以便清除 LVWF。
void lvd_check(void)
{
if(PMC->LVDSC1 & PMC_LVDSC1_LVDF_MASK)
{
LED_GREEN_ON;
PMC->LVDSC1 |= PMC_LVDSC1_LVDACK(1); // ACK event, clear LVDF when the power supply returns above the trip point.
send_error_code(LOW_VOLTAGE_DETECTED);
}
else{
LED_GREEN_OFF;
}
if(PMC->LVDSC2 & PMC_LVDSC2_LVWF_MASK)
{
LED_RED_ON;
PMC->LVDSC2 |= PMC_LVDSC2_LVWACK(1); // ACK event, clear LVWF when the power supply returns above the trip point.
//send_error_code(HIGH_VOLTAGE_DETECTED);
}
else{
LED_RED_OFF;
}
}