我正在通过 SPI 从MPC5775BMCU 控制MC17XS6500EEK HSD。
基本的输出控制工作正常,但当我尝试定期读取状态寄存器时却遇到了问题。
我目前的工作
启动时,我会初始化 HSD:
配置输出
在初始化过程中设置SOA 模式
定期启用看门狗切换
根据我的应用逻辑,输出正常运行
每 1 秒钟我就会读取一次状态:
将 SO/QS 寄存器地址写入 INI 寄存器
回读 SO/QS 响应
如果检测到故障,我会将特定通道地址写入 INI 寄存器,然后读取该响应
完成后,我会恢复步骤 1 中 INI 寄存器的原始值
每次都切换看门狗
问题
当我这样做时,输出会闪烁,看起来设备正在重新初始化。
似乎在运行时修改 INI 寄存器会对配置的输出产生副作用。
我的问题
在初始化后更改INI 寄存器以读取 SO/QS 寄存器是否允许/安全?
如果不是,在不干扰配置的输出或导致闪烁/RESET的情况下读取状态(SO/QS 和通道故障)的推荐SPI序列是什么?
对应用笔记的任何指导或参考都会有所帮助。
你好,@davidtosenovjan、
在 MC17XS6500EEK HSD 中,如何轮询故障信息?有没有这方面的示例代码?
目前,我在初始化 HSD 时将 SOA 模式位配置为 I/O 状态,并将 I/O 状态 SO 响应地址用作 SO 寄存器地址。我的方法是定期轮询快速状态寄存器 (QSR),如果检测到任何故障,我就轮询各个通道以获取详细的故障信息,并进行相应处理。
但是,当我轮询特定频道的故障时,HSD 似乎会自动 RESET 故障。您能否分享有关如何在不RESET故障状态的情况下正确检索故障信息的任何示例代码或指南?
输出闪烁可能是由于 SO/QS 寄存器的访问方式导致意外重新初始化造成的。
为避免出现这种情况,请确保每个 SPI 交易都包含一个格式正确的 16 位输入字:
- 正确的看门狗位 (D15),
- 有效的奇偶校验 (D14),
- 正确的寄存器地址和组选择。
避免在 SPI 帧外修改 INI 寄存器。改为使用恩智浦的 AN5106 应用笔记中所述的标准 SPI 协议。这可确保稳定运行而不会触发输出 RESET。