Renesas Synergy™

FAQ 1006963 : 通信速度は専用ボー・レート・ジェネレータで指定するようだが、どのようにして設定値を決めればよいのか。

通常は送信側と受信側で4%程度以下の誤差しか許されないのでその半分の2%以下の誤差に設定できる必要があります(高速内蔵発振クロックを使う場合には クロック周波数に3~5%の誤差があるので、そのままでは使用できません。通信の最初にダミー・データをやり取りするなどして、誤差を補正する必要があり ます)。
UART6での通信速度を指定するボー・レート・クロック発生部の構成を以下に示します。

UARTのクロックの関係


受信信号(RxD6)からデータの始まりであるスタート・ビットを検出する(FAQの「調歩同期の基本動作 (殆どのデバイスで共通的な内容)」を参照)ために上の図の基本クロックを使用します。精度よく検出するには基本クロックは周波数が高いほうがよく、そのために8ビット・カウンタでの分周比をできるだけ大きくするように全体の分周動作を設定します。
具体的な方法としては、周辺機能動作クロックを使用したいボー・レートで割り、さらに1/2倍することで必要な分周比を求めます。次に、8ビット・カウンタでの分周比が255以下でできるだけ大きくなるようにプリスケーラで分周します。そのようにして得られた結果をCKSR6レジスタとBRGC6レジスタに設定します。
お問い合わせの例では、8.38MHzを9600bpsで割ると、872.916・・・となりこれをさらに1/2倍すると436.458・・・となります。これは255より大きいので、さらに1/2倍して218.229・・・となります。この結果、プリスケーラで1/2に分周し、8ビット・カウンタで1/218に分周することになります。レジスタ設定は以下のようになります。

MOV     CKSR6,#1        ; プリスケーラで1/2分周
MOV     BRGC6,#218      ; 1/218分周する

C言語記述では以下のようになります。

CKSR6 = 0x01;           /* プリスケーラで1/2分周     */
BRGC6 = 218;            /* 1/218分周する           */

このようにして得られたボー・レートの誤差は0.229/218と0.1%程度の大きさ(一般的なセラミック発振子の周波数精度と同程度)となります。

適用製品

78K0/Kx2
他にご質問がございましたら、リクエストを送信してください