フレーミングエラーは、@ jippieが言及していることによって発生する可能性があります-レシーバーはスタートビットを検出し、ストップビットが予期される場所でデータが反転します。これは、ストップビットに影響を与えるライン干渉によって引き起こされるデータ破損が原因である可能性もあります。受信したバイトごとに常にこれを確認する必要があります。
パリティエラーは、データリンクにパリティが実装されていて、受信データにパリティの不一致を引き起こす破損がある場合に発生します。受信したバイトごとに常にこれを確認する必要があります。
受信ブレークもエラーと見なされますが、これは実際には、着信データが1バイトを超えるデータの間に論理ゼロに落ちたことを示しています。通常、論理1は、連続するデータバイト間の「周囲の」状態であり、このままです。それは私が思う古い電信システムへの回帰です。この "機能"を使用して(たとえば)リセットコマンドをレシーバーに示す場合を除いて、私はこれをチェックしません。
オーバーランエラーは、前のバイトがCPUによって読み取られる前に新しいバイトが受信された場合です。FIFOが含まれる場合は少し異なりますが、同じことになります。有効な受信データはCPUの速度低下により失われます。バイトを読み取る前に必ずこれを確認し、バイトが長いメッセージ(またはコマンド)の一部である場合は、メッセージ/コマンド全体を破棄し、何らかの方法でトランスミッターにメッセージ/コマンド全体を再送信するように要求します。
アンダーランは実際にはエラーではありませんが、送信バッファに空であること、つまり新しいバイトを送信するよう要求していることを送信UARTに示します。これを確認する必要はありません。