前言:
SAFETY_FAULT 也是 SEM_FAULT,在原理图上会有不同的标注,但意义一样。
默认的 SAFETY_FAULT 正常时输出 PWM 频率为 100 MHz,过高的频率有时会导致无法通过 EMI 测试,需要降低频率。以下描述如何将正常时的 SAFETY_FAULT 输出频率从 100 MHz 降低到 390 KHz。
以下操作参考了芯驰的文档《Kunlun SEM 模块 sem_fault 输出波形说明》。
一、SAFETY_FAULT 输出波形说明
SAFETY_FAULT 通过输出两种波形:WaveformA or WaveformB 来指⽰当前芯⽚的状态。芯⽚正常⼯作或者出现 recoverable error的时候,都会有波形输出;只有在发⽣ FatalError 的情况下,才会没有任何波形输出。
1. WaveformA 、 WaveformB 和工作时钟的关系:
WaveformA = (SEM clock [pclk/2]) / (divider ratio)
WaveformB = WaveformA / 16
SEM clock = pclk / 2
Pclk = bus_clk_out_n of saf_plat (saf_plat / 4)
2. 寄存器 APB_SEM1_BASE 的 bit[11] 控制正常工作时输出 WaveformA or WaveformB:
3. 寄存器 APB_SEM1_BASE 的 bit[15~12] 控制分频值(divider ratio):
4 个 bit 值为 0~15,范围 1~16 分频
二、将 SAFETY_FAULT 正常工作输出 PWM 频率改为 390 KHz
在 freertos_safetyos/application/system/soc-init/safety_init.c 的 platform_clk_init 执行完成之后,在 safety 中修改寄存器 APB_SEM1_BASE 的值即可。
1. X9 sem_fault 的 默认配置为:
Register 0xf03200000(sem1), value 0x3E4
2. 在 safety_init 最后修改寄存器值:
writel(0xfbe4,APB_SEM1_BASE);
表示:无错误(nominal)时频率为 390.625 KKz,error 时频率为 6.25MHz,fatal error 时无波形输出
总结:只要在时钟初始化完成后的 safety 中修改 APB_SEM1_BASE 的 15~11 位即可。
欢迎登录大大通,阅读原文,浏览更多该原厂系列技术内容!