CMODE 0 Tx_clk
19.9. 分数ボーレート生成
分数ボーレート生成は各構造体に対して相対的に高いクロック周期数のため、非同期動作に対して可能です。各ビットは16回採取されま すが、中央3採取だけが重要です。1つの構造体に対する総採取数も相対的に高くなります。1開始ビット、8データ ビット、パリティなし、1 停止ビットの構造体構成が与えられ、標準速動作が使用されると仮定すると、構造体に対する総採取数は(1+8+1)×16=160です。先 に述べられたように、USARTは各採取に関してクロック周期での変化を許容できます。重要な要素は開始ビットの上昇端(換言するとク ロック同期化)から最後のビット(換言すると最初の停止ビット)の値が再生されるまでの時間です。
標準的なボーレート発生器は高いボーレート設定間に大きな周波数段差を持つ望まれない特性を持っています。最悪の場合はBSEL値
$000と$001間で得られます。160クロック周期の10ビット構造体での$000のBSEL値から320クロック周期でのBSEL値$001への状態は、周 波数での50%変化を生じます。理想的な段階量は最速ボーレート間までも小さくあるべきです。これは分数ボーレート発生器の優位性が 登場する場面です。
原則的に分数ボーレート発生器は一様でない計数とその後の構造体全体に渡って誤差を均一に分配することによって動きます。通常 のボーレート発生器に対する代表的な計数の流れは以下です。
2, 1, 0, 2, 1, 0, 2, 1, 0, 2, ・・・
これは一様な時間周期を持ちます。ボーレート クロックは計数器が0に達する時毎に刻まれ、RxDで受信した信号の採取は第16ボーレート クロック刻み毎に行われます。
分数ボーレート発生器に関しては計数の流れが一様でない周期を持てます。
2, 1, 0, 3, 2, 1, 0, 2, 1, 0, 3, 2, ・・・
この例では追加周期が毎回の第2ボーレート クロックに付加されています。これはボーレート クロックの刻みに細動を与えますが、平均周期は 0.5クロック周期の分数によって増やされます。
図19-9.は単にBSELを変更することによって可能な間でボーレートを達成するのにBSELとBSCALEがどう使用され得るかの例を示しま す。
分数ボーレート発生器の衝撃はボーレート設定間の段階量が低減されることです。-1の倍率係数が与えられると、その後の最悪段階は以
表19-5.は非同期動作に対して最も一般的に使用されるボーレートを生成するのに内部発振器を使用する時のBSELとBSCALEの設定 と更に一層ボーレート誤差を減らすためにBSCALEがどう使用されるかを示します。
図19-9. 分数ボーレート例 BSEL=0,BSCALE=0
fBAUD=fPER/8
clk
BAUD8 BSEL=3,BSCALE=-6 fBAUD=fPER/8.375clk
BAUD8 BSEL=3,BSCALE=-4 fBAUD=fPER/9.5clk
BAUD8 余剰クロック周期追加表19-5. USARTボーレート
123 -4 -0.1 131 -3 -0.1 4.0M - - - 0 0 0.0
fOSC = 32MHz fOSC = 32MHz
ボーレート
(bps) CLK2X=0 CLK2X=1 ボーレート
(bps) CLK2X=0 CLK2X=1
BSEL BSCALE 誤差(%) BSEL BSCALE 誤差(%) BSEL BSCALE 誤差(%) BSEL BSCALE 誤差(%)
12 6
2400 0.2 12 7 0.2 27 -3 -0.8 31 -2 -0.8
460.8k
12 5
4800 0.2 12 6 0.2 107 -5 -0.1 123 -4 -0.1
12 4
9600 0.2 12 5 0.2 19 -4 -0.8 27 -3 -0.8
921.6k
34 2 0.8 34 3 0.2 75 -6 -0.1 107 -5 -0.1
14400
138 0 -0.1 138 1 -0.1 7 -4 0.6 15 -3 0.6
1.382M
19200 12 3 0.2 12 4 0.2 57 -7 0.1 121 -6 0.1
34 1 -0.8 34 2 -0.8 3 -5 -0.8 19 -4 -0.8
28800 1.843M
137 -1 -0.1 138 0 -0.1 11 -7 -0.1 75 -6 -0.1
38400 12 2 0.2 12 3 0.2 2.0M 0 0 0.0 1 0 0.0
34 0 -0.8 34 1 -0.8 - - - 3 -2 -0.8
57600 2.304M
135 -2 -0.1 137 -1 -0.1 - - - 47 -6 -0.1
76800 12 1 0.2 12 2 0.2 - - - 19 -4 0.4
33 -1 -0.8 34 0 -0.8 2.5M - - - 77 -7 -0.1
115.2k
131 -3 -0.1 135 -2 -0.1 - - - 11 -5 -0.8
31 -2 -0.8 33 -1 -0.8 3.0M - - - 43 -7 -0.2
230.4k
最高速 2.0Mbps 4.0Mbps
19.10. 主装置SPI動作でのUSART
主装置SPI動作でUSARTを使用するには送信部の許可が必要です。受信部は直列入力として扱うために任意選択で許可にできま す。XCKピンは転送クロックとして使用されます。
USARTでのようにデータ転送はデータ(DATA)レジスタへの書き込みによって開始されます。送信部が転送クロックを制御するので、これは 送受信データの両方に対する場合です。DATAに書かれたデータはシフト レジスタが新しい構造体を送る準備が整った時に送信緩衝部 からシフト レジスタへ移動されます。
主装置SPI動作で使用される送受信割り込み要求フラグと対応するUSART割り込みは通常のUSART動作での使用と機能的に同じで す。受信部異常状態フラグは未使用で常に0として読めます。
主装置SPI動作でのUSART送信部または受信部の禁止は通常のUSART動作でのそれらの禁止と同じです。
1
9.11. USART SPIとSPIの比較
主装置SPI動作でのUSARTは以下に於いて独立したSPI部署と完全な互換性があります。
● タイミング図が同じ
● クロック位相選択(UCPHA)ビットはSPIの動作種別0(MODE0)ビットのそれと機能的に同じです。
● データ順選択(UDORD)ビットはSPIのデータ順選択(DORD)ビットのそれと機能的に同じです。
USARTが主装置SPI動作に設定されると、形態設定と使い方は独立したSPI部署のそれらといくつかの場合で異なります。加えて、以 下の違いが存在します。
● 主装置SPI動作でのUSART送信部は緩衝処理を含みます。SPI部署は送信緩衝部を持ちません。
● 主装置SPI動作でのUSART受信部は追加の緩衝段を含みます。
● 主装置SPI動作でのUSARTはSPIの上書き発生(WRCOL)ビット((書き込み衝突)機能)を含みません。
● 主装置SPI動作でのUSARTはSPIの倍速許可(CLK2X)ビット(倍速動作機能)を含みませんが、これはそれに応じてボーレート発生器を 形態設定することによって達成することができます。
● 割り込みタイミングが互換ではありません。
● 主装置SPI動作でのUSARTが主装置動作だけのため、ピン制御が異なります。
主装置SPI動作でのUSARTとSPIでのピンは表19-6.で示されます。 表19-6. 主装置SPI動作でのUSARTとSPIのピン比較
SPI 注釈
USART
MOSI 主装置出力のみ TXD
MISO 主装置入力のみ RXD
SCK (機能的に同一) XCK
SS 主装置SPI動作でのUSARTで未支援 該当なし
19.12. 複数プロセッサ通信動作
複数プロセッサ通信動作(MPCM)は同一直列バス経由で複数マイクロ コントローラの通信を持つシステムで、受信部によって扱われなければな らない到着構造体数を効果的に減らします。この動作では構造体がアドレスまたはデータのどちらかを示すために構造体内の専用ビット が使用されます。
受信部が5~8データ ビットを含む構造体受信に初期設定されるなら、最初の停止ビットが構造体形式を示すのに使用されます。受信部 が9データ ビットの構造体に初期設定されるなら、第9ビットが使用されます。構造体形式(最初の停止または第9)ビットが1のとき、その構 造体はアドレスを含みます。構造体形式ビットが0のとき、その構造体はデータ構造体です。5~8ビット データ構造体が使用される場合、最 初の停止ビットが構造体形式を示すのに使用されるので、送信部は2停止ビット使用に設定されなければなりません。
特定の従装置MCUがアドレス指定されたなら、そのMCUは後続するデータ構造体を通常のように受信し、一方他の従装置MCUは別の アドレス構造体が受信されるまで構造体を無視します。
19.12.1. 複数プロセッサ通信動作の使い方
複数プロセッサ通信動作でデータを交換するために次の手順が使用されるべきです。
1. 全ての従装置MCUは複数プロセッサ通信動作です(MPCM=1)。
2. 主装置MCUはアドレス構造体を送り、全ての従装置がこの構造体を受信して読みます。
3. 各従装置MCUは選択されたかを判定します。
4. アドレス指定されたMCUはMPCMを禁止して全てのデータ構造体を受信します。他の従装置CPUはデータ構造体を無視します。
5. アドレス指定されたMCUが最終データ構造体を受信すると、MPCMを再び許可して主装置からの新しいアドレス構造体を待たなければ なりません。
その後、手順は2.からを繰り返します。
5~8ビット データ構造体構成のどれかの使用は、受信側がnとn+1ビット データ構造体構成の使用を切り替えなければならないため非実 用的です。これは送信側と受信側が同じデータ長設定を使用しなければならないので、全二重動作を困難にします。
1
9.13. 赤外線通信(IRCOM)動作IRCOM動作はUSARTと共にIRCOM部署の使用を許可されることで行えます。これは115.2kbpsまでのボーレートに対してIrDA1.4適合 の変調と復調を可能にします。IRCOM動作が許可されると、USARTに対して倍速動作は使用できません。
19.14. レジスタ説明
19.14.1. DATA - データ レジスタ (Data register)
RXB7~0
7 6 5 4 3 2 1 0
ビット
DATA
+$00 TXB7~0
R/W R/W
R/W R/W
R/W R/W
R/W R/W
0 0
0 0
0 0
0 0
Read/Write 初期値
USART送信データ緩衝(TXB)レジスタとUSART受信データ緩衝(RXB)レジスタは同じI/Oアドレスを共用し、USARTデータ レジスタ(DATA)として 参照されます。TXBレジスタはDATAレジスタ位置に書かれるデータの転送先です。DATAレジスタ位置読み込みはRXBレジスタの内容を返 します。
5~7ビット データに関しては上位未使用ビットが送信部によって無視され、受信部によって0に設定されます。
送信緩衝部は状態(STATUS)レジスタのデータ レジスタ空きフラグ(DREIF)が設定(1)されている時にだけ書くことができます。DREIFフラグが 設定(1)されていない時にDATAレジスタへ書かれたデータはUSART送信部によって無視されます。送信部が許可されてデータが送信緩 衝部に書かれると、送信部はシフト レジスタが空の時にデータを送信シフト レジスタへ格納します。その後データはTxDピンで送信されます。
受信緩衝部は2段のFIFOから成ります。受信緩衝部の正しい状態を得るため、常にDATAに先行してSTATUSを読んでください。
19.14.2. STATUS - 状態レジスタ (Status register)
RXCIF TXCIF DREIF FERR BUFOVF PERR
7 6 5 4 3 2 1 0
ビット
STATUS +$01
R/W R
R R
R R
R/W R
0 0
0 0
0 1
0 0
Read/Write 初期値
- RXB8
● ビット7 - RXCIF : 受信完了割り込み要求フラグ (Receive Complete Interrupt Flag)
このフラグは受信緩衝部内に未読データがある時に設定(1)され、受信緩衝部が空の(換言すると何れの未読データも含まない)時に解除 (0)されます。受信部が禁止されると、受信緩衝部は破棄され、その結果としてRXCIFが0になります。
● ビット6 - TXCIF : 送信完了割り込み要求フラグ (Transmit Complete Interrupt Flag)
このフラグは送信シフト レジスタの構造体全体がシフト出力され、送信緩衝部(DATA)内に新しいデータがない時に設定(1)されます。TXCIF は送信完了割り込みベクタが実行される時、自動的に解除(0)されます。このフラグはこのビット位置への1書き込みによっても解除(0)で きます。
● ビット5 - DREIF : データ レジスタ空割り込み要求フラグ (Data Register Empty Flag)
DREIFは送信緩衝部(DATA)が新しいデータを受け取る準備が整っているかを示します。このフラグは送信緩衝部が空の時に1で、シフト レジスタ内へ未だ移動されていない送信されるべきデータを送信緩衝部が含む時に0です。DREIFは送信部準備完了を示すためにリセッ ト後に設定(1)されます。
DREIFはDATA書き込みによって解除(0)されます。割り込み駆動データ送信が使用されるとき、データ レジスタ空割り込み処理ルーチンは DREIFを解除(0)するためにDATAに新しいデータを書くか、またはデータ レジスタ空割り込みを禁止しなければなりません。そうしなけれ ば、現在の割り込みからの復帰直後に新しい割り込みが起きます。
● ビット4 - FERR : 構造体異常フラグ (Frame Error)
FERRフラグは受信緩衝部に格納された読み込み可能な次の構造体の最初の停止ビットの状態を示します。このビットは受信したデータ が構造体異常を持つ、換言すると、最初の停止ビットが0だった場合に設定(1)され、受信したデータの停止ビットが1の時に解除(0)され ます。このビットは受信緩衝部が読まれるまで有効です。それが最初の停止ビットだけを使用するので、FERRは使用する停止ビット設定 によって影響を及ぼされません。STATUSレジスタを書く時、常にこのビット位置に0を書いてください。
このフラグは主装置SPI動作形態で使用されません。
● ビット3 - BUFOVF : 緩衝部溢れフラグ (Buffer Overflow)
このフラグは受信緩衝部満杯状態のためのデータ損失を示します。このフラグは緩衝部溢れ状態が検出される場合に設定(1)されます。
緩衝部溢れは受信緩衝部が満杯(2データ)で、新しいデータが受信シフト レジスタで待機中で、且つ新しい開始ビットが検出される時に起 きます。このフラグは受信緩衝部(DATA)が読まれるまで有効です。STATUSレジスタを書く時は常にこのビット位置に0を書いてください。
このフラグは主装置SPI動作形態で使用されません。
● ビット2 - PERR : パリティ異常フラグ (Parity Error)
パリティ検査が許可され、受信緩衝部の次のデータがパリティ異常を持つ場合に、このフラグが設定(1)されます。パリティ検査が許可されて いなければ、このフラグは常に0として読めます。このフラグは受信緩衝部(DATA)が読まれるまで有効です。STATUSレジスタを書く時、
常にこのビット位置に0を書いてください。パリティ計算の詳細については153頁の「パリティ ビット計算」を参照してください。
このフラグは主装置SPI動作形態で使用されません。