Armadilloフォーラム

UART Baudrate設定

ksawada

2015年3月30日 16時35分

沢田と申します。

UART3,4,5はi.MX257内蔵のUARTコントローラで、最大4Mbpsの転送レートを利用可能となっておりますが、
設定可能な刻みについて教えてください。

コメント

at_takashi.sasayama

2015年3月31日 14時14分

笹山です。

> UART3,4,5はi.MX257内蔵のUARTコントローラで、最大4Mbpsの転送レートを利用可能となっておりますが、
> 設定可能な刻みについて教えてください。

UART3,4,5 に設定可能で、動作確認が行えているボーレート値は以下になります。

4000000 (4M)
1152000 (1M)
921600  (921.6K)
230400  (230.4K)
115200  (115.2K)

他の設定可能なボーレート値は、
参考情報にある計算式で算出が可能です。

なお注意点が2つあります。

■1 stty によりボーレート設定を行う場合

ボーレートの設定に atmark-dist に標準で含まれている stty コマンドを用いる場合は、
一部のボーレート値ではエラーとなり設定できないことがあります。

エラーになるボーレート値の例
2000000 (2M)
3000000 (3M)

この現象は coreutils に含まれる stty を用いることで回避ができます。
https://packages.debian.org/wheezy/armel/coreutils/download

coreutils に含まれる stty を抽出する方法を以下に記します。

ATDE$ wget http://ftp.jp.debian.org/debian/pool/main/c/coreutils/coreutils_8.13-3.5_armel.deb
ATDE$ dpkg-deb -x coreutils_8.13-3.5_armel.deb ./
展開された ./bin/stty を Armadillo 上でボーレート設定に使用します。

■2 CON3 シリアルインターフェース1 通信速度の上限

UART2 (CON3 シリアルインターフェース1) では、
RS232Cレベルに変換するトランシーバーがボード上に存在する為、
230.4Kbpsが通信速度の上限になります。

参考情報

i.MX25 Multimedia Applications Processor Reference Manual
Universal Asynchronous Receiver/Transmitter (UART)
46.4.6 Binary Rate Multiplier (BRM)
Frequency and Baud Rate for UBIR and UBMR Eqn. 46-3

[Armadillo:05356] Re: Armadillo-420のシリアル通信における正確なボーレートについて
http://lists.atmark-techno.com/pipermail/armadillo/2010-June/005356.html

at_hanada

2015年3月31日 14時27分

花田です。

CON3について、若干情報不足なので補足です。

> ■2 CON3 シリアルインターフェース1 通信速度の上限
>
> UART2 (CON3 シリアルインターフェース1) では、
> RS232Cレベルに変換するトランシーバーがボード上に存在する為、
> 230.4Kbpsが通信速度の上限になります。

トランシーバーの仕様としては、(仕様で許される)全環境状況におけるMaximum Data Rateが250kbpsということになっておりまして、一般的に設定可能な範囲としては230.4kbpsまでということになります。
一方Maximum Data RateのTypicalは500kbpsとされており、一般的温度条件で短いケーブルを使用した場合はこの程度の速度でも通信可能なはずです。

ksawada

2015年4月1日 10時11分

花田様

補足説明、感謝します。
参考とさせて頂きます。

詳細なフォローを頂きありがたいです。

引き続き御社製品を採用して行きたいと思います。

ksawada

2015年4月1日 10時08分

笹山様

詳細な解説及びご回答を頂き大変ありがとうございます。
試して見ます。
取り急ぎ以上です。

ksawada

2015年4月1日 10時08分

笹山様

詳細な解説及びご回答を頂き大変ありがとうございます。
試して見ます。
取り急ぎ以上です。

at_hanada

2015年4月1日 17時21分

花田です。

> この現象は coreutils に含まれる stty を用いることで回避ができます。
> https://packages.debian.org/wheezy/armel/coreutils/download

こちらに近い動作をするsttyをAtmark Distで使えるよう、パッチを作ってみました。

atde:~$ cd atmark-dist
atde:~/atmark-dist$ gzip -cd ../atmark-dist_new-stty.patch.gz | patch -p1

という感じでパッチをあて、make menuconfigからユーザーランドコンフィギュレーションでMiscellaneous Applications下の「stty」を有効化してください。
(標準状態ではbusyboxのsttyが有効になっていますので、こちらは無効に変更する方が安全です)

※現在のDebianに提供されているcoreutils 8.13はGPLv3になっていますが、今回のパッチではGPLv2の最終バージョンであるcoreutils 6.7のものを使用いたしました。

ファイル ファイルの説明
atmark-dist_new-stty.patch.gz Atmark Dist向けstty(coreutils 6.7より)パッチ