inuneko
2023年11月14日 15時25分
いつもお世話になっております。
UARTシリアル通信の件でご相談させて下さい。
armadillo-640のCON14コネクタのUART2(3,4pin)を使用してwindows10とシリアル通信しようとしています。
armadilloで[echo "TEST" > /dev/ttymxc1]を実行したところWindowsPCには表示されませんでした。
armadillo内で設定は必要でしょうか?
armadillo-640側 uart2の設定は下記の通りです。
sttyのレスポンスです。
root@armadillo:~# stty -a < /dev/ttymxc1
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ;
eol2 = ; swtch = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc
念のためオシロで確認しましが送信データが出ていませんでした。
dtbファイルではuart2を有効にしています。
よろしくお願いします。
コメント
inuneko
at_makoto.sato
佐藤です。
差し支えなければ、/boot/a640.dtb と /boot/uImage を添付していただけますでしょうか。
> stty -a < /dev/ttymxc1の実行した時、パリティやストップビットの表示はどれになるのでしょうか?
ここに説明があるかと思います。
https://linuxjm.osdn.jp/html/GNU_sh-utils/man1/stty.1.html
inuneko
> 佐藤です。
>
> 差し支えなければ、/boot/a640.dtb と /boot/uImage を添付していただけますでしょうか。
dtbファイルとuImageを添付します。
ご確認よろしくお願いします。
ファイル | ファイルの説明 |
---|---|
armadillo-640-at-dtweb.dtb | |
uImage.zip |
at_makoto.sato
佐藤です。
こちらでは、いただいたdtbとuImageでもWindowsPC側で受信することができました。
こちらでの手順は以下のとおりです。
* uImage を /boot/uImageへ上書き保存
* armadillo-640-at-dtweb.dtb を /boot/a640.dtb へ上書き保存
* con14の2ピンをGND、3ピンをWindows側のRx、4ピンをWindows側のTxに接続
* teratermの設定を添付のように設定
* armadilloから "echo "TEST" > /dev/ttymxc1" を実行
ファイル | ファイルの説明 |
---|---|
teraterm.png |
inuneko
> こちらでは、いただいたdtbとuImageでもWindowsPC側で受信することができました。
> こちらでの手順は以下のとおりです。
> * uImage を /boot/uImageへ上書き保存
> * armadillo-640-at-dtweb.dtb を /boot/a640.dtb へ上書き保存
> * con14の2ピンをGND、3ピンをWindows側のRx、4ピンをWindows側のTxに接続
> * teratermの設定を添付のように設定
> * armadilloから "echo "TEST" > /dev/ttymxc1" を実行
con14のピンとWindowsを接続したら送信できました。
ありがとうございました。
cat /dev/ttymxc1 < log.txtと受信コマンドをしたら受信ポートはopen状態でコマンドが終了しないです。
設定で変更できますか?
受信時のエコーをOFFにしても再起動するとエコーがONになっています。設定の維持はどうすればいいですか?
よろしくお願いします。
at_makoto.sato
佐藤です。
> cat /dev/ttymxc1 < log.txtと受信コマンドをしたら受信ポートはopen状態でコマンドが終了しないです。
> 設定で変更できますか?
キーボードから Ctrl + C の入力で終了できませんでしょうか。
> 受信時のエコーをOFFにしても再起動するとエコーがONになっています。設定の維持はどうすればいいですか?
> よろしくお願いします。
設定保存はできません。起動時に毎回設定コマンドを実行する必要があります。
以下の手順で試してみてください。
root@armadillo:~# vi /etc/systemd/system/ttymxc1_init.service [Unit] Description = ttymxc1_init [Service] ExecStart = <ここに設定コマンドを書く> Type = simple [Install] WantedBy = multi-user.target
上記ファイルを保存した後に以下を実行
root@armadillo:~# systemctl enable ttymxc1_init.service
これで再起動時も反映されると思います。
inuneko
> > cat /dev/ttymxc1 > log.txtと受信コマンドをしたら受信ポートはopen状態でコマンドが終了しないです。
> > 設定で変更できますか?
> キーボードから Ctrl + C の入力で終了できませんでしょうか。
Ctrl + Cの入力で終了はできました。
> > 受信時のエコーをOFFにしても再起動するとエコーがONになっています。設定の維持はどうすればいいですか?
> > よろしくお願いします。
> 設定保存はできません。起動時に毎回設定コマンドを実行する必要があります。
> 以下の手順で試してみてください。
>
> root@armadillo:~# vi /etc/systemd/system/ttymxc1_init.service > [Unit] > Description = ttymxc1_init > > [Service] > ExecStart = <ここに設定コマンドを書く> > Type = simple > > [Install] > WantedBy = multi-user.target >
> 上記ファイルを保存した後に以下を実行
>
> root@armadillo:~# systemctl enable ttymxc1_init.service >
> これで再起動時も反映されると思います。
再起動時に設定が反映されていました。
cat /dev/ttymxc1 > log.txtは以前実行した時受信の有無に関わらず時間経過でコマンドが終了していました。
エコーは初期はエコーなしの設定でした。
初期設定に戻すやり方はありますか?
at_makoto.sato
inuneko
at_makoto.sato
inuneko
> "stty -F /dev/ttymxc1 time 30"
> とするとどうでしょうか。
上記のコマンドを実行しましたら変更は確認できました。
起動時にdev/ttymxc1の設定と文字列の送受信をシェルスクリプトで実行しました。
結果として、windowsからの信号はRxのピンまで来てますが、テキストに出力されてないのでarmadilloが受信できてないです。
armadillo → windows10 送信できてる
windows10 → armadillo con14のRxまで信号は来ているが受信はできてない。 (オシロで確認しました。)
ttymxcの設定は反映されていました。
log.txtには受信した文字列が出力されませんでした。
armadilloは3秒間受信待ち状態にしています。その間にwindowsからの信号は確認しました。
armadilloのまで信号は来ていますが受信ができていないので他に設定とかはありますか?
ファイル | ファイルの説明 |
---|---|
シェルスクリプトプログラム.txt |
at_makoto.sato
inuneko
at_makoto.sato
inuneko
> * armadilloを起動
> * windowsのteraterm上に"TEST\n"と表示されたら適当にキーボードで文字を入力
> * 入力終了後、3秒以上待った後 /log.txt に入力した文字が出力されていることを確認
amadilo起動後root直下にlog.txtが作成されているのを確認をしました。
ただ受信データが書き込まれていませんでした。
手動でコマンド入力のときですが、
1.armadillo起動後に送受信コマンドをします。
2.時間待ちの設定していないのでCtrl+Cで停止します。
3.ttymxc1の設定をします。
4.再度送受信コマンドをするとlog.txtに書き込まれていました。
ttymxc1のポートが有効化になっていないとかありますか?
at_makoto.sato
at_makoto.sato
2023年11月14日 18時45分
佐藤です。
こちらでもUART2を有効にしたdtbを作成し試してみたところ、
WindowsPC側で正常に受信できました(TeraTermを使用)
TeraTerm側のボーレート設定はarmardillo側と合ってますでしょうか。(今回の場合は9600)
また、TX/RX/GNDの配線等に間違いはないでしょうか。
以下のフォーラムも参考になるかもしれません。
https://armadillo.atmark-techno.com/forum/armadillo/10208