Armadilloフォーラム

Armadillo-X2でRS485通信をするときのat-dtwebの設定方法とC言語でのGPIOを用いた方向制御の可否

yumax

2025年9月5日 17時02分

お世話になっております。

Armadillo-X2を使用し、拡張基板を通じて接続したデバイスとRS485通信を行い、Modbus RTUプロトコルを用いてデータの送受信を行いたいと考えています。

現在、以下のArmadilloサイトのHowtoを参考に設定を進めています:

RS-485 通信する方法 (Armadillo-IoT ゲートウェイ G4/X2) | Armadilloサイト

この中で、以下の2点について確認させてください。

①ピン設定について

RS485通信を行うために、at-dtwebを使用して以下のようにピンを設定したいと考えています:

・ CON11_11…UART4_TX

・ CON11_13…UART4_RX

・ CON11_9…UART4_CTS_B

UART4_TXおよびUART4_RXについては、GUI上で添付の図のように割り当てていますが、UART4_CTS_B(CON11_9)に関してはGUIでドラッグ&ドロップせずに、GPIOのままで問題ないでしょうか。それとも、UART4_CTS_BをGUI上でドラッグ&ドロップで設定する必要がありますか。

②方向制御について

RS485通信は、ATDE上の「C New Project」を変更して、C言語のコンテナとして実行する予定です。この中で、方向制御にはlibgpiodを使用し、CON11_9をGPIOとしてHigh/Lowを切り替えることで制御を行うことを考えています。

この方法で、RS485の方向制御を行うプログラムは正常に動作する可能性があるでしょうか。

お忙しいところ恐れ入りますが、上記2点についてご回答いただけますと幸いです。
どうぞよろしくお願いいたします。

ファイル ファイルの説明
at-dtwebの画面.png
コメント

at_shota.shimoyama

2025年9月10日 11時16分

アットマークテクノの下山です。

> ①ピン設定について
> UART4_TXおよびUART4_RXについては、GUI上で添付の図のように割り当てていますが、UART4_CTS_B(CON11_9)に関してはGUIでドラッグ&ドロップせずに、GPIOのままで問題ないでしょうか。それとも、UART4_CTS_BをGUI上でドラッグ&ドロップで設定する必要がありますか。

GPIO5_IO12(CON11_9)についてはGPIOのままでも問題ありません。
むしろ、UART4_CTS_Bを設定してしまうと、ドライバーがUART4_CTS_Bを占有するので、手動でGPIO制御できなくなるかもしれません。
また、ドライバーにCON11_9をRTSとして制御してもらいたい場合にも、ご参照いただいたブログ
https://armadillo.atmark-techno.com/howto/aiotg4-rs485
のようにGPIOとして設定する必要があります。

> ②方向制御について
> RS485通信は、ATDE上の「C New Project」を変更して、C言語のコンテナとして実行する予定です。この中で、方向制御にはlibgpiodを使用し、CON11_9をGPIOとしてHigh/Lowを切り替えることで制御を行うことを考えています。
> この方法で、RS485の方向制御を行うプログラムは正常に動作する可能性があるでしょうか。

正常に動作するとは思いますが、念のため(杞憂かもしれませんが)送信時のTXとGPIO5_IO12の波形はしっかり確認された方が良いと思います。
というのは、TXをドライバー、GPIO5_IO12を手動で制御する場合、それらの信号間のタイミングは保証されないからです。(どちらもドライバーで制御する場合にはrs485-rts-delayプロパティでGPIO5_IO12の信号タイミングをms単位で調整できます)

よろしくお願いします

下山様、ご回答ありがとうございます。

> GPIO5_IO12(CON11_9)についてはGPIOのままでも問題ありません。
> むしろ、UART4_CTS_Bを設定してしまうと、ドライバーがUART4_CTS_Bを占有するので、手動でGPIO制御できなくなるかもしれません。
> また、ドライバーにCON11_9をRTSとして制御してもらいたい場合にも、ご参照いただいたブログ
> https://armadillo.atmark-techno.com/howto/aiotg4-rs485
> のようにGPIOとして設定する必要があります。

> 正常に動作するとは思いますが、念のため(杞憂かもしれませんが)送信時のTXとGPIO5_IO12の波形はしっかり確認された方が良いと思います。
> というのは、TXをドライバー、GPIO5_IO12を手動で制御する場合、それらの信号間のタイミングは保証されないからです。(どちらもドライバーで制御する場合にはrs485-rts-delayプロパティでGPIO5_IO12の信号タイミングをms単位で調整できます)

①, ②ともに上記内容、理解いたしました。実際にGPIOで方向制御を行い、RS485通信が行えるか確認してみます。
また、RS485通信確認時に疑問点があれば、投稿させていただきます。よろしくお願いいたします。