I2C / ビットレートジェネレーターユニット / 非公式訳

ATmega328Pデータシート非公式訳

22.5.2 ビットレートジェネレーターユニット

このユニットでマスターモード時のSCL周期を制御します。SCL周期は、TWI Bit Rate Register (TWBR)の設定と、TWI Status Register (TWSR)のPrescalerビットとで制御します。スレーブモードの場合は、ビットレートの設定もプリスケーラーの設定も関係ありませんが、スレーブのCPUクロックはSCL周波数の16倍以上でなければなりません。スレーブによってSCLがLoに保たれる時間が長くなることがあるため(訳註: クロックストレッチのこと)、その場合はTWIバスクロックは遅くなります。SCL周波数は下式に従って生成されます。

SCL周波数 = (CPUクロック) / (16+ 2 * TWBR * プリスケーラー値)

  • TWBR = TWI Bit Rate Registerの値
  • プリスケーラー値 = プリスケーラーの値(241ページ、表22-7を参照)

註: プルアップ抵抗の値は、SCL周波数とバスラインの容量性負荷とに応じて選ばなければなりません。プルアップ抵抗の値については、表29-14 (ページ317)を見てください。

22.9.1 TWBR - TWI Bit Rate Register

f:id:ti-nspire:20200811161011p:plain:w600

  • ビット7:0 - TWI Bit Rate Register
    TWBRでビットレートジェネレーターの分周比を選びます。ビットレートジェネレーターは、マスターモードのときのSCLクロック周波数を生成する周波数分周器です。ビットレートの計算については、「ビットレートジェネレーターユニット」(ページ221)を見てください。(訳註: 8ビットなので0~255)

TWSR - TWI Status Register

f:id:ti-nspire:20200811161321p:plain:w600

  • ビット7:3 - TWS: TWI Status
    (略)
  • ビット2 - 予約済み
    (略)
  • ビット1:0 - TWPS: TWI Prescaler Bits
    このビットは読み出しも書き込みもできます。ビットレートプリスケーラーを制御する働きをします。
    f:id:ti-nspire:20200811161603p:plain:w600
    (訳註: 上表のPrescaler Valueは結局、4TWPS1:0である)
    ビットレートを計算するときは、「ビットレートジェネレーターユニット」(ページ221)を見てください。 計算式にTWPS1:0の値が使われます。

29.7 2線シリアルインターフェイスの特性

(略)
f:id:ti-nspire:20200811162557p:plain:w600
(略)
註:

  1. (略)
  2. (略)
  3. Cb = バスライン1本あたりの容量。単位はpF。