Armadilloフォーラム

RS00のフレーミングエラー検出について

daisuke2

2024年2月19日 18時32分

RS00を使用したシリアル通信時に、設定したボーレート外のデータを受信した場合フレーミングエラーが発生していると思うのですが以下について教えてください。
・フレーミングエラーは設定ボーレートの何%以上の誤差時に検出する様になっていますでしょうか?
・フレーミングエラーの発生状態をアプリ側で取得することは可能でしょうか?

コメント

at_mizo

2024年3月1日 14時35分

溝渕です。

> RS00を使用したシリアル通信時に、設定したボーレート外のデータを受信した場合フレーミングエラーが発生していると思うのですが以下について教えてください。
> ・フレーミングエラーは設定ボーレートの何%以上の誤差時に検出する様になっていますでしょうか?

前提として、N%ずれたらフレームエラーとなるわけではなく、フレームエラーが発生したらフレームエラーと判定されます。

フレームエラーとなるのは通信設定次第ですが、例えばデータ長8bit, パリティ無しの場合、およそ5%ずれるとフレームエラーとなります。

上記設定の場合、10clockで1つのデータを送信します。通常、データの中心でラッチしようとするため、前後どちらかに半clock分ずれると正常に受信できません。

100% / (10 * 2) = 5%

> ・フレーミングエラーの発生状態をアプリ側で取得することは可能でしょうか?

以下で取得可能です。

[armadillo]# cat /proc/tty/driver/IMX-uart

以下の項目があれば、エラー等が発生しています。未検出状態だと項目自体が表示されません。

fe: フレームエラー検出
pe: パリティエラー検出
brk: BREAK検出
oe: FIFOオーバーラン検出