• 検索結果がありません。

データ転送形式

ドキュメント内 mega88.pdf (ページ 124-127)

PIND 6 PIND 5 PIND 4 PIND 3 PIND 2 PIND 1

23. SPI - 直列周辺インターフェース (Serial Peripheral Interface)

23.4. データ転送形式

直列データに関してはSPI制御レジスタ(SPCR)のSCK位相(CPHA)とSCK極性(CPOL)制御ビットによって決定されるSCK位相と極性で4つ の組み合わせがあります。データ ビットは安定のためデータ信号に対して充分な時間を保証するSCK信号の反対端でシフト出力と(入力) ラッチが行われます。下表はCPOLとCPHAの設定を要約します。

表23-2. CPOL,CPHA機能動作

CPOL SCK後行端

0 出力設定/下降端

入力採取/下降端 SCK先行端

0

入力採取/上昇端 出力設定/上昇端 SPI動作種別番号

0 1 2 3

1 1

CPHA 0 1 0 1

入力採取/下降端 出力設定/下降端

出力設定/上昇端 入力採取/上昇端 SPIデータ転送形式は以下の図で示されます。

図23-3. SPIデータ転送形式 (CPHA=0)

LSB ビット1 ビット2 ビット3 ビット4 ビット5 ビット6 MSB MSB先行 (DORD=0)

SCK (CPOL=0) 動作種別 0 SCK (CPOL=1) 動作種別 2

MOSI (主装置送出) MISO (従装置送出) SS (従装置選択) MOSI/MISO入力採取

MSB ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 LSB LSB先行 (DORD=1)

図23-4. SPIデータ転送形式 (CPHA=1)

LSB ビット1 ビット2 ビット3 ビット4 ビット5 ビット6 MSB MSB先行 (DORD=0)

SCK (CPOL=0) 動作種別 1 SCK (CPOL=1) 動作種別 3

MOSI (主装置送出) MISO (従装置送出) SS (従装置選択) MOSI/MISO入力採取

MSB ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 LSB LSB先行 (DORD=1)

23.5. SPI用レジスタ

23.5.1. SPCR - SPI制御レジスタ (SPI Control Register)

LD系とST系の命令を使用し、データ空間としてI/Oレジスタをアクセスする時は、提供された変位が使用されなければなりません。I/O特定 命令のINとOUTを使用する時は、この変位が$20で減算され、I/Oアドレスの変位は$00~$3F内になります。

名称 : SPCR 変位 : $4C ($2C) リセット : $00

特質 : I/O特定命令でデータ空間としてI/Oレジスタをアクセスする時の変位アドレスは$2Cです。

SPIE SPE DORD MSTR CPOL CPHA SPR1,0

7 6 5 4 3 2 1 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

アクセス種別 リセット値

ビット7 - SPIE : SPI割り込み許可 (SPI Interrupt Enable)

ステータス レジスタ(SREG)の全割り込み許可(I)ビットが設定(1)されて、SPI状態レジスタ(SPSR)でSPI割り込み要求フラグ(SPIF)が設定(1)され ると、このビットがSPI割り込みを実行させます。

ビット6 - SPE : SPI許可 (SPI Enable)

SPEビットが1を書かれるとSPIが許可されます。どのSPI操作を許可するにも、このビットが設定(1)されなければなりません。

ビット5 - DORD : データ順選択 (Data Order)

DORDビットが1を書かれるとデータ語のLSBが最初に転送されます。DORDビットが0を書かれるとMSBが最初に転送されます。

ビット4 - MSTR : 主装置/従装置選択 (Master/Slave Select)

このビットは1を書かれると主装置動作、論理0を書かれると従装置動作を選択します。SSが入力として設定され、MSTRが設定(1)の間 にLowへ駆動されると、MSTRが解除(0)され、SPI状態レジスタ(SPSR)でSPI割り込み要求フラグ(SPIF)が設定(1)になります。その後に使 用者はSPI主装置動作を再び許可するためにMSTRを設定(1)しなければなりません。

ビット3 - CPOL : SCK極性選択 (Clock Polarity)

このビットが1を書かれると、アイドル時にSCKはHighです。CPOLが0を書かれると、アイド ル時にSCKはLowです。例については図23-3.と図23-4.を参照してください。CPOL機 能は右で要約されます。

表23-3. CPOL機能動作

CPOL SCK後行端

0 下降端

上昇端 SCK先行端

1

上昇端 下降端

ビット2 - CPHA : SCK位相選択 (Clock Phase)

このSCK位相選択(CPHA)ビットの設定はデータがSCKnの先行(先)端または後行(後)端 で採取/(設定)されるかを決めます。例については図23-3.と図23-4.を参照してくださ い。CPHA機能は右で要約されます。

表23-4. CPHA機能動作

CPHA SCK後行端

0 出力設定

入力採取 SCK先行端

1

入力採取 出力設定

ビット1,0 - SPR1,0 : SPIクロック選択 (SPI Clock Rate Select 1 and 0)

これら2ビットは主装置として設定されたデバイスのSCK速度を制御します。従装置でのSPR1とSPR0は無効です。SCKと(システム)発振器ク ロック周波数fOSC間の関連は下表で示されます。

表23-5. SCKn速度選択 (fOSC=CPUクロック周波数) SPR1

SCK周波数

0

fOSC/4 fOSC/16

0

fOSC/64 fOSC/128

SPR0 0

0 1

1 0

1 0 1

1 0

1 1

1 0

fOSC/2 fOSC/8 fOSC/32

SPI2X

SPIF WCOL - - - SPI2X

7 6 5 4 3 2 1 0

ビット

R/W R

R R

R R

R R

0 0

0 0

0 0

0 0

アクセス種別 リセット値

23.5.2. SPSR - SPI状態レジスタ (SPI Status Register)

LD系とST系の命令を使用し、データ空間としてI/Oレジスタをアクセスする時は、提供された変位が使用されなければなりません。I/O特定 命令のINとOUTを使用する時は、この変位が$20で減算され、I/Oアドレスの変位は$00~$3F内になります。

名称 : SPSR 変位 : $4D ($2D) リセット : $00

特質 : I/O特定命令でI/Oレジスタをアクセスする時の変位アドレスは$2Dです。

ビット7 - SPIF : SPI割り込み要求フラグ (SPI Interrupt Flag)

直列転送が完了すると、このSPIFフラグが設定(1)されます。全割り込みが許可(ステータス レジスタ(SREG)の全割り込み許可(I)ビット=1)され て、SPI制御レジスタ(SPCR)でSPI割り込み許可(SPIE)ビットが設定(1)されるなら、割り込みが生成されます。SPIが主装置動作の時にSS ピンが入力でLowに駆動されるなら、これもこのSPIFフラグを同様に設定(1)します。対応する割り込み処理ベクタを実行する時にSPIFは ハードウェアによって解除(0)されます。代わりにSPIFが設定(1)されたSPI状態レジスタ(SPSR)を始めに読み、その後にSPIデータ レジスタ (SPDR)をアクセスすることによってもSPIFフラグは解除(0)されます。

ビット6 - WCOL : 上書き発生フラグ (Write Collision Flag)

データ転送中にSPIデータ レジスタ(SPDR)が書かれると、このWCOLビットが設定(1)されます。WCOLビット(とSPIFビット)はWCOLが設定(1) されたSPI状態レジスタ(SPSR)を始めに読み、その後にSPIデータ レジスタ(SPDR)をアクセスすることによって解除(0)されます。

ビット0 - SPI2X : SPIn倍速許可 (Double SPI Speed Bit)

このビットが論理1を書かれると、SPIが主装置動作の時にSCK速度(SCK周波数)が倍にされます(表23-5.参照)。これは最小SCK周期 が2CPUクロック周期であることを意味します。SPIが従装置として設定される時にSPIはfOSC(CPUクロック周波数)/4またはそれ以下での 動作のみ保証されます。

SPIインターフェースはフラッシュ メモリやEEPROMの書き換え(読み書き)にも使用されます。プログラミングと照合については直列プログラミングをご 覧ください。

23.5.3. SPDR - SPIデータ レジスタ (SPI Data Register)

LD系とST系の命令を使用し、データ空間としてI/Oレジスタをアクセスする時は、提供された変位が使用されなければなりません。I/O特定 命令のINとOUTを使用する時は、この変位が$20で減算され、I/Oアドレスの変位は$00~$3F内になります。

名称 : SPDR 変位 : $4E ($2E) リセット : $xx

特質 : I/O特定命令でI/Oレジスタをアクセスする時の変位アドレスは$2Eです。

7 6 5 4 3 2 1 0

ビット

R/W R/W

R/W R/W

R/W R/W

R/W R/W

不定 不定

不定 不定

不定 不定

不定 不定

アクセス種別 リセット値

SPID7~0

ビット7~0 - SPID7~0 : SPIデータ (SPI Data)

SPIデータ レジスタはSPIシフト レジスタとレジスタ ファイル(汎用レジスタ)間のデータ転送に使用される読み書き可能なレジスタです。このレジスタへ の書き込みがデータ送信を開始します。このレジスタの読み込みはシフト レジスタの受信緩衝部読み出しを引き起こします。

ドキュメント内 mega88.pdf (ページ 124-127)