私はModbus RTUを使ってNXPのS32K144ボードとRS-485ベースのエネルギーメーターをインターフェースしようとしています。
エネルギーメーターはUSB-RS485経由でPCのModbusツールで正しく動作しますが、S32K144上で実装やデバッグの指導が必要です。
こんにちは、 @Turtledove
S32K144 EVBにはネイティブのRS-485トランシーバが搭載されていないため、MCU UARTとエネルギーメーターの間に外部RS-485 PHY(例:MAX3485、SN65HVDシリーズなど)が必要です。UART TX/RXをS32K144からトランシーバーのDI/ROピンに接続し、トランシーバーA/B差動ペアをメーターのA/Bラインに接続します。DEと\REはGPIOによって駆動可能で(多くの場合、半二重Modbus RTU動作のために連結されています)。
ソフトウェアでは、メーター設定(通常9600/19200ボー、8ビットデータ、パリティなし、メーター仕様によってパリティなし、ストップビット1ビット)をLPUARTインスタンスのいずれかに設定してください。Modbusフレームを送信する前に、DEを主張し、フレームを送信し、送信が完了するまで待機し、DEを解除して受信モードに戻ります。Modbus RTU自体はUARTドライバの上にソフトウェアで実装されています。
デバッグを行うには、まずオシロスコープまたはロジックアナライザを使用してUARTトラフィックを確認してください。また、S32 Design Studioではウォッチ変数やリアルタイム式を使って送信リクエスト、受信応答、CRCの状態、デコードされたレジスタ値を監視することも可能です。リアルタイム式はアプリケーション変数を表示することはできますが、バス上のModbusフレームを直接デコードすることはできません。
よろしくお願いいたします。
ルーカス