2016/10/19

UARTのエラー

お仕事でUART通信をしている。
よく使うので、作業工数として考えてすらいなかったのだが、ここではまっている。。。
データが化けるのだ。

毎回ではなく、特定の条件があるわけでもなく、たまに化ける。
ドライバはチップメーカーが提供しているので、それを使っているので、あまり心配していない。
じゃあ、ロジックか?
化けているのではなく、間違ったデータを書き込んだとか??
でも、そういう感じもしないしなぁ。
FIFOもまあまあ大きいので、バッファあふれってこともない気がするし、それだったらエラーが来るだろうし。

そしてようやく、framing errorが発生していることに気付いた。
困ったことに、エラーはドライバが握りつぶしていた。。。
エラー返せよ!!

 

フレーミングエラーは、ストップビットが来るべきはずのタイミングで来ていない、という現象とのこと。
えーっと、何もないときはHI状態なので、スタートビットがLO、ストップビットはHI状態なのかな。
UARTはハードがやってくれるので、ソフトはレジスタに設定するだけだ。
だから、こっちのマイコンがストップビットのタイミングだと思って読込んだらLO状態だった、ということになる。
たった1bitなので、データによっては発生しないこともあるだろう。
その場合は、エラーにはならないものの、データ化けするはずである。

 

さて、原因は?
通信速度が微妙にずれているか、ノイズがときどき載るかのどっちかだと思う。
ロジアナで見る限りではずれている感じもしないので、ノイズなのかなぁ。。。。
オシロで見た方が良いのかもしれんが、手元にないし。
試作の前の段階で、私が適当にUART線を接続しているからかもしれないし、電源が弱そうなのでそこからノイズが載っているのかもしれんし。

うううう・・・。
逆さまつげで弱っているときに、こういうのが起きるとつらいですな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。