外部発振子なしで、UART通信は可能ですか?:Q&Aで学ぶマイコン講座(7)(2/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。7回目は、初心者の方からよく質問される「外部発振子なしで、UART通信は可能ですか?」についてです。
クロック源からUARTまでの経路
マイコンの内蔵発振回路からUARTのモジュールまでの経路には、UARTの通信速度を調節するためのクロック分周回路(プリスケーラと呼ぶこともある)が入っています。マイコンによっては内蔵発振回路の直後に周波数を逓倍するためのPLLを内蔵しており、マイコンの内蔵発振回路とUARTのモジュールの途中に入っている場合もあります。PLLのある場合とない場合のイメージを図2に示します。図2-aは、STマイクロエレクトロ二クス製のSTM32F103で、PLLがある場合の例です。図2-bは同社のSTM8Sで、PLLがない場合の例です。
図2-aでは内蔵発振回路で作られたクロックが一度、2分周されてPLLに入り、そのクロックが2〜16倍されてさらに分周回路に入力されます。分周回路で任意の周波数に分周されたクロックがUARTモジュールに入ります。
図2-bはPLLがなく、2つの分周回路で任意の周波数に分周されたクロックがUARTモジュールに入ります。
次に、この経路内の各回路で発生する周波数誤差について考えてみましょう。
マイコンの内蔵発振回路
通常、マイコンに内蔵されている発振回路は、抵抗RとコンデンサCを使ったリングオシレータです。周波数はRとCの値によって決まります。RとC値は、マイコンの製造条件によりバラツキますので、発振周波数も固体毎にバラツキます。
最近のマイコンでは、出荷時に周波数を校正(チューニング、トリミング)して、周波数誤差を一定値以内に抑えるケースがあります。その場合±1%前後に調整する場合が多いようです。図3にSTM32F103の出荷時の周波数誤差を示します。
赤枠で囲った部分が、内蔵発振回路の出荷時に調整された誤差を示します。この表から、マイコンの温度(TA)が25℃の場合、−1.1〜1.8%に校正して出荷されていることが分かります。TAが-40℃〜105℃の範囲では、−2〜2.5%にバラツキます。これだとUART通信ができるかできないかのギリギリの誤差になります。
STM32F103の場合、内蔵発振回路の周波数を調整するレジスタがありますので、出荷後でもユーザーが周波数を調整することが可能です。その場合の仕様が図3の青枠で囲った値になります。ユーザーがRCC_CRレジスタを設定することにより誤差を1%以内に抑えることができます。これならUART通信が可能な範囲です。
ここで注意しなければならないことは、校正を行うには、基準周波数が必要になるということです。校正には基準となる誤差の少ない正確な周波数が必要になり、その周波数と比較しながら調整を行わなければなりません。
時計機能用のクロックで水晶発振子などがあれば、その周波数を基準にして調整すると校正が可能です。
Copyright © ITmedia, Inc. All Rights Reserved.