masa.yamaguchi
2024年9月24日 19時46分
現在、Armadillo-610 においてRS485の半二重データ通信を確認しようとしております。
しかしながら、上記確認方法が方法が分からない状況です。
お手数をおかけしますが、LinxuコマンドでRS485におけるデータの送受信ができているか
確認する方法をご教示頂きたいです。
[備考]
・インストールイメージはリリースイメージです(baseos-600-installer-3.20.2-at.1)。
・RS485ケーブルによるAramdillo-610(拡張ボード) とPCの接続はSI-35USB-2(LINE EYE社)で実施。
・CATコマンドで確認すると、DEラインがHIGHのままとなり、受信できない状況です。
コメント
masa.yamaguchi
溝渕です。
masa.yamaguchiです。ご質問について回答いたします。
Armadillo-610拡張ボードのCON13Cで通信したいという理解で合っていますか?
ご指摘の通り CON13Cです。
アプリケーションまたは、Device TreeからRS485設定を行なっていると思いますので、その内容を教えてください。 もし、RTS_ON_SEND(rs485-rts-on-send)とRTS_AFTER_SEND(rs485-rts-after-send)の両方を1にしている場合は、 常時DEラインがHIGHになると思います。詳細については以下のドキュメントをご覧ください。 https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_manual_ja-2.4.13/ch06.html#idm3740
デバイスツリーでは修正を行わず、armadillo-610-extboard-eva.dts ファイルの設定をそのまま使用しております。
&uart2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart2>; status = "okay"; fsl,uart-has-rtscts; rts-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>; rs485-enabled-at-boot-time; rs485-rts-on-send; rs485-delay-rts-before-send = <0>; rs485-delay-rts-after-send = <0>; }; &iomuxc { ・・・ pinctrl_uart2: uart2grp { fsl,pins = < MX6UL_PAD_NAND_DATA04__UART2_DCE_TX 0x00008 MX6UL_PAD_NAND_DATA05__UART2_DCE_RX 0x1b0b1 MX6UL_PAD_NAND_DATA06__GPIO4_IO08 0x00008 MX6UL_PAD_NAND_DATA07__GPIO4_IO09 0x00008 >; }; ・・・
at_mizo
masa.yamaguchi
at_mizo
masa.yamaguchi
溝渕様
masa.yamaguchiです。
言葉足らずですみません。確認していただきたかったのはDEラインの論理です。 > ①Aramadillo-610(UART2) から外部に送信する際は以下で宜しかったでしょうか。(SSHで実施) > echo "aaaa" > /dev/ttymxc1 を行った時のみDEラインがHIGHになっていれば正常です。
ご回答ありがとうございます。
上記は確認できました。SSHで上記コマンドで"aaaa"送信を行ったときのみ 、DEラインがHIGHになっています。
(Armadillo-610から外部への送信のケース)
上記に加えて以下お伺いしたいことがございます。
外部からArmadillo-610に対してデータを送信して、Armadillo-610で受信したことを
確認する手順についてご教示頂きたいです(RS485半二重通信における受信確認方法)。
at_mizo
溝渕です。
> 上記は確認できました。SSHで上記コマンドで"aaaa"送信を行ったときのみ 、DEラインがHIGHになっています。
ご確認ありがとうございます。上記より、Armadillo-610としての動作は妥当と思います。
> 外部からArmadillo-610に対してデータを送信して、Armadillo-610で受信したことを
> 確認する手順についてご教示頂きたいです(RS485半二重通信における受信確認方法)。
armadillo# cat /dev/ttymxc1
した状態で、外部からArmadillo-610に対してデータを送出してください。
必要に応じて、以下のようにお使いの環境に合わせて通信設定を行ってください。
armadillo# stty -F /dev/ttymxc1 raw armadillo# stty -F /dev/ttymxc1 speed 115200 armadillo# stty -F /dev/ttymxc1 -echo
masa.yamaguchi
at_mizo
masa.yamaguchi
masa.yamaguchi
溝渕 様
masa.yamaguchiです。
デバイスツリーでは以下設定となっております。
以下設定で catコマンド(データ受信)に影響を与えるような設定はございますでしょうか。
&uart2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart2>; status = "okay"; fsl,uart-has-rtscts; rts-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>; rs485-enabled-at-boot-time; rs485-rts-on-send; rs485-delay-rts-before-send = <0>; rs485-delay-rts-after-send = <0>; }; &iomuxc { ・・・ pinctrl_uart2: uart2grp { fsl,pins = < MX6UL_PAD_NAND_DATA04__UART2_DCE_TX 0x00008 MX6UL_PAD_NAND_DATA05__UART2_DCE_RX 0x1b0b1 MX6UL_PAD_NAND_DATA06__GPIO4_IO08 0x00008 MX6UL_PAD_NAND_DATA07__GPIO4_IO09 0x00008 >; }; ・・・
at_mizo
溝渕です。
こちらで確認してみましたが、起動直後の状態で以下のコマンドを実行してもDEラインがHIGHになりませんでした。
armadillo# cat /dev/ttymxc1
DE信号の論理は、R95で行いました。
意図したDevice Treeが利用されているか確認したいので、以下のコマンドの出力をもらえますか?
armadillo# ls /proc/device-tree/soc/aips-bus@2100000/serial@21e8000
正しくDevice Treeが利用されている場合は、次のように表示されると思います。
clock-names name rs485-delay-rts-before-send clocks pinctrl-0 rs485-enabled-at-boot-time compatible pinctrl-names rs485-rts-on-send fsl,uart-has-rtscts reg rts-gpios interrupts rs485-delay-rts-after-send status
masa.yamaguchi
溝渕 様
masa.yamaguchiです。
ご質問につきまして回答いたします。
ご指摘の場所に(soc配下)にaips-bus@2100000が存在しませんでした。
(添付資料をご確認ください)
ファイル | ファイルの説明 |
---|---|
armadillo-610デバイツリー.png |
masa.yamaguchi
溝渕 様
masa.yamaguchiです。
追加情報です。
/proc/device-tree/soc/bus@2100000/serial@21e8000
(api-busではない)
に対象と思われるファイルがありましたので報告いたします。
/proc/device-tree/soc/bus@2100000/serial@21e8000 # ls clock-names fsl,uart-has-rtscts pinctrl-names rs485-rts-on-send clocks interrupts reg rts-gpios compatible name rs485-delay-rts-after-send status dma-names phandle rs485-delay-rts-before-send dmas pinctrl-0 rs485-enabled-at-boot-time
ファイル | ファイルの説明 |
---|---|
armadillo-610デバイツリー_02.png |
at_mizo
masa.yamaguchi
溝渕 様
masa.yamaguchiです。
> すみません。Armadillo Base OS対応版をご利用ですね。 "bus@2100000"で読み換えてください。
読み替えて確認しました。
添付資料の差分が存在しました。(資料左が溝渕 様ご提示分。右がこちらで確認した分)
差分としては、こちら調査分について、以下が存在しました。
・dma-names
・phandle
・dmas
ファイル | ファイルの説明 |
---|---|
デバイツリー差分.png |
at_mizo
溝渕です。
すみません、linux-5.10-atのバグです。
Device Treeのパラメータが正しく無い為に、RS485が無効とみなされていました。添付のパッチ( 0001-arm-dts-610-extboard-Fix-RS485-parameters.patch)を適用する事で正しく動作する事を確認済みです。
変更されるのは、Device Treeのみです。適用後に再度動作確認をお願いいたします。
ファイル | ファイルの説明 |
---|---|
0001-arm-dts-610-extboard-Fix-RS485-parameters.patch |
masa.yamaguchi
masa.yamaguchi
at_mizo
溝渕です。
armadilloで以下のコマンドを入力し、
armadillo# stty -F /dev/ttymxc1 speed 115200 armadillo# stty -F /dev/ttymxc1 -echo armadillo# cat /dev/ttymxc1
PCに接続した、USB-RS485経由で文字を出力し、armadilloのコンソールに表示される事を確認しました。上記ではボーレートを115.2kbpsに設定していますが、環境に合わせて適宜指定してください。
また、半二重通信ですので、tty layerのecho(入力文字をエコー)が有効だと正常に通信できません。これは対向機器についても同様です。
masa.yamaguchi
at_mizo
at_mizo
2024年9月25日 8時30分
溝渕です。
> 現在、Armadillo-610 においてRS485の半二重データ通信を確認しようとしております。
Armadillo-610拡張ボードのCON13Cで通信したいという理解で合っていますか?
> お手数をおかけしますが、LinxuコマンドでRS485におけるデータの送受信ができているか
> 確認する方法をご教示頂きたいです。
> [備考]
> ・インストールイメージはリリースイメージです(baseos-600-installer-3.20.2-at.1)。
> ・RS485ケーブルによるAramdillo-610(拡張ボード) とPCの接続はSI-35USB-2(LINE EYE社)で実施。
> ・CATコマンドで確認すると、DEラインがHIGHのままとなり、受信できない状況です。
アプリケーションまたは、Device TreeからRS485設定を行なっていると思いますので、その内容を教えてください。
もし、RTS_ON_SEND(rs485-rts-on-send)とRTS_AFTER_SEND(rs485-rts-after-send)の両方を1にしている場合は、常時DEラインがHIGHになると思います。詳細については以下のドキュメントをご覧ください。
https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…