我正在尝试使用 Modbus RTU 将 NXP S32K144 板与基于 RS-485 的电能表连接起来。
该电能表通过 USB 转 RS485 与 PC Modbus 工具配合使用可以正常工作,但我需要指导如何在 S32K144 上实现和调试它。
S32K144 EVB 不包含原生 RS-485 收发器,因此需要在 MCU UART 和电能表之间使用外部 RS-485 PHY(例如 MAX3485、SN65HVD 系列等)。将 S32K144 的 UART TX/RX 连接到收发器的 DI/RO 引脚,并将收发器的 A/B 差分对连接到仪表的 A/B 线。DE 和 \RE 可以通过 GPIO 驱动(通常连接在一起用于半双工 Modbus RTU 操作)。
对于软件,配置其中一个 LPUART 实例以进行仪表设置(通常为 9600/19200 波特率,8 位数据位,根据仪表规格,无奇偶校验或偶校验,1 位停止位)。在发送 Modbus 帧之前,置位 DE,发送帧,等待传输完成,然后取消置位 DE 并切换回接收模式。Modbus RTU 本身是在 UART 驱动程序之上以软件形式实现的。
调试时,首先使用示波器或逻辑分析仪验证 UART 通信。您还可以使用 S32 设计工作室中的监视变量或实时表达式来监测已发送的请求、已接收的响应、CRC 状态和已解码的寄存器值。实时表达式可以显示应用程序变量,但不能直接解码总线上的 Modbus 帧。
此致,
Lukas