連載
» 2015年07月15日 11時30分 UPDATE

Q&Aで学ぶマイコン講座(16):オーバーランエラーの原因 (1/3)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、中級者の方からよく質問される「オーバーランエラーの原因」についてです。

[菅井賢(STマイクロエレクトロニクス),EDN Japan]
tt140519QAM_icon120_90.jpg

過去の質問一覧はこちら

 素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。

 今回は、中級者から多く寄せられる質問です。

tt140407STNEWQQQ.jpg

 マイコンの通信ペリフェラルで通信中にオーバーランエラーが発生します。そもそもオーバーランエラーとは何ですか? どのような原因で発生しますか? オーバーランを防ぐにはどうすればよいでしょうか?

tt140407STNEWAAA.jpg

 オーバーランエラーとは、UART(Universal Asynchronous Receiver Transmitter)などの通信ペリフェラルで、受信バッファに取り込まれたデータをCPUまたはDMA(Direct Memory Access)が読み出さないうちに、次のデータを取り込んでしまい、前の受信データが失われることです。

 受信バッファのデータ取り込みに同期してCPUまたはDMAが受信バッファを読み出せば、オーバーランエラーは発生しません。ですが、受信バッファを読み出すタイミングが遅くなると、次のデータを取り込んでしまい、オーバーランエラーが発生します。図1の例では、データ2がデータ3に上書きされて、失われています。

m0710_QA01.jpg 図1:UARTのオーバーランエラー (クリックで拡大)

 ソフトウェアを開発する時には、通信の受信周期と受信バッファを読み出す周期を同期させます。ただ、実際にコードを実行すると、割り込み処理やバスのアービトレーションがうまくいかず、受信バッファの読み出しタイミングが遅くなり、オーバーランエラーが発生する時があります。そのような場合の対策として、割り込みの優先順位やバス権の優先順位を調整することで、オーバーランエラーの発生を防ぎます。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

RSSフィード

EDN 海外ネットワーク

All material on this site Copyright © 2005 - 2017 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.