第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance...

26
© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース (SPI) 23 23 シリアル周辺インターフェース (SPI) ハイライト 本章では次のトピックについて説明します。 23.1 はじめに ............................................................. 23-2 23.2 ステータス 制御レジスタ ............................................ 23-3 23.3 動作 モード........................................................... 23-7 23.4 マスター モードのクロック周波数...................................... 23-18 23.5 省電力モードでの動作 ................................................ 23-19 23.6 レジスタ マップ...................................................... 23-20 23.7 電気的仕様 .......................................................... 23-21 23.8 関連するアプリケーション ノート...................................... 23-25 23.9 改版履歴 ............................................................ 23-26

Transcript of 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance...

Page 1: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)

シリアル周辺インター

フェース

(SPI)

23

ハイライト

本章では次のトピックについて説明します。

23.1 はじめに ............................................................. 23-223.2 ステータス と 制御レジスタ ............................................ 23-323.3 動作 モード........................................................... 23-723.4 マスター モードのクロック周波数...................................... 23-1823.5 省電力モードでの動作 ................................................ 23-1923.6 レジスタ マップ...................................................... 23-2023.7 電気的仕様 .......................................................... 23-2123.8 関連するアプリケーション ノート...................................... 23-2523.9 改版履歴 ............................................................ 23-26

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1

Page 2: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

23.1 はじめに

シリアル周辺インターフェース (SPI) モジュールは、他の周辺モジュールまたはマイクロコントローラ デバイスと通信するために役立つ同期式シリアル インターフェースです。これらの周辺デバイスとしてはシリアル EEPROM、シフト レジスタ、ディスプレイ デバイス、A/D 変換器などがあります。SPI モジュールは、モトローラ社の SPI および SIOP インターフェースと互換性があります。

PIC24F ファミリのバリエーションによって、1 つのデバイスに 1 つまたは 2 つの SPI モジュールがあります。これらのモジュールは、SPI1 と SPI2 として区別されますが機能的には同一です。SPI1 モジュールはすべてのデバイスで利用できますが、SPI2 モジュールは多ピンパッケージ (64 ピン以上 ) のもので利用できます。

SPIx シリアル インターフェースは 4 ピンで構成されます。

• SDIx: シリアル データ入力

• SDOx: シリアル データ出力

• SCKx: シフト クロック入力または出力

• SSx/FSYNCx: アクティブ Low のスレーブ選択またはフレーム同期 I/O パルス

SPIx モジュールは、2、3、または 4 ピンで構成できます。3 ピン モードでは、 SSx/FSYNCxが使われず、2 ピン モードでは、SDOx 、SSx/FSYNCx の両方が使用されません。

モジュールのブロック図を図 23-1 に示します。

図 23-1: SPIx モジュールブロック図

注 : この章では、SPI モジュールは SPIx として一緒に参照されるか、または SPI1 と SPI2として個別に参照されます。特殊機能レジスタ (SFR) についても同様の表記に従います。例えば、SPIxCON は、SPI1 または SPI2 モジュールのためのコントロールレジスタのことを表します。

内部データ バス

SDIx

SDOx

SSx/FSYNCx

SCKx

SPIxSRビット 0

シフト制御

選択エッジ

FCY1次プリ1:1/4/16/64

マスター クロック

スケーラ

同期制御

クロック

SPIxBUF

制御

送信送信

SPIxBUF 書き込みSPIxBUF 読み出し

16

SPIxCON1<1:0>

SPIxCON1<4:2>

イネーブル

2 次プリスケーラ

1:1 ~ 1:8

DS39699A_JP - ページ 23-2 Advance Information © 2007 Microchip Technology Inc.

Page 3: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

23.2 ステータス と 制御レジスタ

SPI シリアル ポートは、次の特殊機能レジスタで構成されています。

• SPIxBUF: 送信されるバッファ データおよび受信されるデータで使用される SFR スペース内アドレスのこと。このアドレスは仮想の SPIxTXB と SPIxRXB レジスタにより共有される

• SPIxCON1 と SPIxCON2: モジュールの多様な動作モードを設定するためのコントロール レジスタ

• SPIxSTAT: 多様なステータス状態を示すステータス レジスタ

さらに、16 ビット シフト レジスタの SPIxSR があり、SPI ポートの入出力のデータのシフトに使われます。シフト レジスタはメモリにマップされていません。

23.2.1 SPIxBUF レジスタ

メモリにマップされたレジスタSPIxBUF は、SPI xデータ受信・送信レジスタです。SPIxBUFレジスタは実際には 2 つの個別レジスタから成り立っています。送信バッファレジスタSPIxTXB と、受信バッファレジスタ SPIxRXB です。この 2 つの一方向の 16 ビットレジスタは、SPIxBUF の SFR アドレスを共有します。ユーザーが送信されるデータを SPIxBUFアドレスに書き込めば、内部ではそのデータは SPIxTXB レジスタに書き込まれます。同様に、ユーザーが受信したデータを SPIxBUF から読み出せば、内部ではそのデータはSPIxRXB レジスタから読み出されます。

この送受信のダブルバッファ テクニックにより、バックグラウンドでの連続したデータ転送が可能になります。送信受信は同時に発生します。

23.2.2 ステータスと制御レジスタ

SPIxSTAT と SPIxCON1/SPIxCON2 レジスタにより、モジュール動作を制御するためのインターフェースが提供されます。それらの詳細を、 レジスタ 23-1、 レジスタ 23-2 、レジスタ 23-3 に示します。

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-3

Page 4: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

レジスタ 23-1: SPIxSTAT: SPIx ステータスと制御レジスタ

R/W-0 U-0 R/W-0 U-0 U-0 R-x R-x R-x

SPIEN — SPISIDL — — r r rビット 15 ビット 8

U-0 R/C-0 U-0 U-0 U-0 U-0 R-0 R-0

— SPIROV — — — — SPITBF SPIRBFビット 7 ビット 0

凡例 : C = クリアのみ ( ソフトウェアでセット不可 )R = 読み出し可 W = 書き込み可 U = 未実装、読むと「0」-n = POR 後の値 ‘1’ = セット ‘0’ = クリア x = 不定

ビット 15 SPIEN: SPIx 有効化ビット

1 = モジュールを有効化し、SCKx、 SDOx、 SDIx、SSx をシリアル ポート ピンとして構成する0 = モジュールを無効化する

ビット 14 未実装 : 読むと「0」ビット 13 SPISIDL: アイドル モード中停止ビット

1 = デバイスがアイドル モードに入ったらモジュール動作を停止する0 = アイドル モード中も動作を継続する

ビット 12-11 未実装 : 読むと「0」ビット 10-8 予約 : 値は不定

ビット 7 未実装 : 読むと「0」ビット 6 SPIROV: 受信オーバーフロー フラグ ビット

1 = 新たなバイト/ワードを受信完了したが廃棄された。ユーザー ソフトウェアでSPIxBUF レジスタ内の以前のデータを読み出していない

0 = オーバー フローは発生していない

ビット 5-2 未実装 : 読むと「0」ビット 1 SPITBF: SPIx 送信バッファ フル ステータス ビット

1 = 送信はまだ開始されていない。SPIxTXB は満杯。CPU が SPIxBUF に書き込む、つまり SPIxTXB にロードするとハードウェアで自動的にセットされる

0 = 送信開始。SPIxTXB は空。SPIx モジュールがデータを SPIxTXB から SPIxSR に転送すると自動的にクリアされる

ビット 0 SPIRBF: SPIx 受信バッファ フル ステータス ビット

1 = 受信完了。 SPIxRXB は満杯。SPIx がデータを SPIxSR から SPIxRXB に転送すると ハードウェアで自動的にセットされる

0 = 受信未完了で SPIxRXB は空。コアが SPIxBUF を読み出すと、つまり SPIxRXB を読み出すとハードウェアで自動的にクリアされる

DS39699A_JP - ページ 23-4 Advance Information © 2007 Microchip Technology Inc.

Page 5: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

レジスタ 23-2: SPIxCON1: SPIx 制御レジスタ 1

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — — DISSCK DISSDO MODE16 SMP CKEビット 15 ビット 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

SSEN CKP MSTEN SPRE2 SPRE1 SPRE0 PPRE1 PPRE0ビット 7 ビット 0

凡例 : R = 読み出し可 W = 書き込み可 U = 未実装、読むと「0」-n = POR 後の値 ‘1’ = セット ‘0’ = クリア x = 不定

ビット 15-13 未実装 : 読むと「0」ビット 12 DISSCK: SCKx ピン無効化ビット (SPIx マスター モードのみ )

1 = 内蔵 SPIx クロックを無効とし、ピンを I/O 機能とする0 = 内蔵 SPIx クロックを有効とする

ビット 11 DISSDO: SDOx ピン無効化ビット

1 = SDOx ピンはモジュールで使用せず、ピンを I/O 機能とする0 = SDOx ピンはモジュールで制御される

ビット 10 MODE16: ワード / バイト通信選択ビット

1 = 通信をワード幅 (16 ビット ) とする0 = 通信をバイト幅 (8 ビット ) とする

ビット 9 SMP: SPIx データ入力サンプル位相ビット

マスター モードの場合 :1 = 入力データをデータ出力時間の後縁でサンプルする0 = 入力データをデータ出力時間の中央でサンプリングする

スレーブ モードの場合 :SPIx がスレーブ モードの場合は、SMP はクリアとする

ビット 8 CKE: SPIx クロック エッジ選択ビット

1 = シリアル出力データ変化は、クロックのアクティブ 状態からアイドル状態への遷移時 (ビット6参照 )0 = シリアル出力データ変化は、クロックのアイドル状態からアクティブ状態への遷移時 (ビット6参照 ) 注 : CKE ビットはフレーム化 SPIx モードでは使用しない

フレーム化 SPIx モード (FRMEN = 1) の場合は、本ビットは「0」とする

ビット 7 SSEN: スレーブ選択有効化 ( スレーブ モード ) ビット

1 = SSx ピンをスレーブ モードで使用する0 = SSx ピンはモジュールで使用せず、このピンはポート機能で制御

ビット 6 CKP: クロック極性選択ビット

1 = クロックのアイドル状態を High レベルとし、アクティブ状態を Low レベルとする0 = クロックのアイドル状態を Low レベルとし、アクティブ状態を High レベルとする

ビット 5 MSTEN: マスター モード有効化ビット

1 = マスター モードとする0 = スレーブ モードとする

ビット 4-2 SPRE2:SPRE0: 2 次プリスケール ビット ( マスター モードの場合 )111 = 2 次プリスケール 1:1110 = 2 次プリスケール 2:1...000 = 2 次プリスケール 8:1

ビット 1-0 PPRE1:PPRE0: 1 次プリスケール ビット ( マスター モードの場合 )11 = 1 次プリスケール 1:110 = 1 次プリスケール 4:101 = 1 次プリスケール 16:100 = 1 次プリスケール 64:1

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-5

Page 6: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

レジスタ 23-3: SPIxCON2: SPIx 制御レジスタ 2

R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0 U-0

FRMEN SPIFSD SPIFPOL — — — — —ビット 15 ビット 8

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R-0

— — — — — — SPIFE rビット 7 ビット 0

凡例 : R = 読み出し可 W = 書き込み可 U = 未実装、読むと「0」-n = POR 後の値 ‘1’ = セット ‘0’ = クリア x = 不定

ビット 15 FRMEN: フレーム化 SPIx サポート ビット

1 = フレーム化 SPIx サポートを有効化する0 = フレーム化 SPIx サポートを無効化する

ビット 14 SPIFSD: SSx ピンのフレーム同期パルス方向制御ビット

1 = フレーム同期パルスは入力 ( スレーブ )0 = フレーム同期パルスは出力 ( マスター )

ビット 13 SPIFPOL: SSx ピンのフレーム同期パルス極性制御ビット ( フレーム化モードのみ )1 = フレーム同期パルスをアクティブ High とする0 = フレーム同期パルスをアクティブ Low とする

ビット 12-2 未実装 : 読むと「0」ビット 1 SPIFE: フレーム同期パルス エッジ選択ビット

1 = フレーム同期パルスを最初のビット クロックと同時とする0 = フレーム同期パルスを最初のビットクロックより先行させる

ビット 0 予約 : 「0」のまま

DS39699A_JP - ページ 23-6 Advance Information © 2007 Microchip Technology Inc.

Page 7: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

23.3 動作 モード

SPI モジュールは、次の項で説明するように柔軟な動作モードを持っています。

• 8 ビットと 16 ビット データの送信・受信

• マスターとスレーブ モード

• フレーム化 SPI モード

23.3.1 8 ビット対 16 ビット動作

MODE16(SPIxCON<10>) 制御ビットにより、モジュールは 8 ビット モードまたは 16 ビット モードのいずれかで通信ができます。送受信されるビット数を除き、機能は各モードで同じです。さらに、次のことについて注意する必要があります。

モジュールは MODE16 (SPIxCON<10>) ビットの変更時にリセットされます。したがって、このビットは通常動作中には変更しないで下さい。

送信する場合には、データは 8 ビット動作のときは SPIxSR のビット 7 から、16 ビット動作のときは SPIxSR のビット 15 から送信されます。どちらのモードでも、データは SPIxSRのビット 0 にシフト入力されます。

SCKx ピンのクロックは、8 ビット モードのときは 8 クロック パルスが、16 ビット モードのときは 16 クロック パルスが、データの送受信のために必要とされます。」

23.3.2 マスターとスレーブ モード

データは、一方のモジュールのシフト レジスタの最上位ビットと、もう一方の最下位ビットを結ぶ直接の経路とみなされ、そして適切な送信、または受信バッファに入ります。マスター モジュールとなったモジュールがシリアル クロックと同期信号 ( 必要な場合 )をスレーブ デバイスに対して提供します。マスターとスレーブ モジュールの関係を図 23-2 に示します。

図 23-2: SPIx マスター・スレーブ接続

シリアル受信バッファ(SPIxRXB)

シフト レジスタ(SPIxSR)

LSbMSb

SDIx

SDOx

プロセッサ 2 (SPIx スレーブ )

SCKx

SSx(1)

シリアル送信バッファ(SPIxTXB)

シリアル受信バッファ(SPIxRXB)

シフト レジスタ(SPIxSR)

MSb LSb

SDOx

SDIx

プロセッサ 1 (SPIx マスター)

シリアル クロック

SSEN (SPIxCON1<7>) = 1 かつ MSTEN (SPIxCON1<5>) = 0

注 1: スレーブ モード動作での SSx ピン使用はオプションです。

2: 送信の場合も受信の場合も SPIxBUF を読み書きします。SPIxTXB と SPIxRXB レジスタは、いずれも SPIxBUF にメ

モリ マッピングされています。

SSx

SCKx

シリアル送信バッファ(SPIxTXB)

MSTEN (SPIxCON1<5>) = 1

SPIx バッファ(SPIxBUF)(2)

SPIx バッファ(SPIxBUF)(2)

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-7

Page 8: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

23.3.2.1 マスター モード

マスター モードでは、システム クロックを分周してシリアル クロックとして使用します。分周比は PPRE1:PPRE0 (SPIxCON1<1:0>) および SPRE2:SPRE0 (SPIxCON1<4:2>) ビットの設定に基づいています。シリアル クロックは SCKx ピンを経由してスレーブ デバイスへ出力されます。クロック パルスは、送信するデータがある時だけ生成されます。詳細は、23.4 項 「マスター モードのクロック周波数」を参照して下さい。CKP と CKE ビットがクロックのどちらのエッジでデータ遷移をさせるかを決めます。

送信されるデータと受信されたデータは、それぞれ SPIxBUF レジスタに書き込むか、SPIxBUF レジスタから読み出されます。

マスター モードのときの SPIx モジュールの動作を次に説明します。

1. モジュールをマスター モードに設定し、有効化すると送信するデータは SPIxBUF レジスタに書き込まれる。これで SPITBF(SPIxSTAT<1>) がセットされる

2. SPIxTXB の内容がシフト レジスタである SPIxSR に移されると、SPITBF ビットはモジュールによりクリアされる

3. 一連の 8/16 クロック パルスによって SPIxSR から SDOx ピンに送信データの 8/16 ビットがシフト出力され、同時に SDIx ピンのデータが SPIxSR にシフト入力される

4. 送信が完了すると次のイベントが発生する

• 割込みフラグビットである SPIxlF がセットされる。SPIx 割込みは割り込み有効化ビット SPIxlE がセットされると有効化される。SPIxlF フラグはハードウエアでは自動的にクリアされない

• 継続中の送受信動作が完了すると、SPIxSR の内容は SPIxRXB レジスタに移される

• SPIRBF (SPIxSTAT<0>) ビットがモジュールによりセットされ、受信バッファが一杯であることが示される。ユーザー コードにより SPIxBUF が読み出されると、ハードウエアが SPIRBF ビットをクリアする

5. SPIx モジュールが SPIxSR から SPIxRXB へデータを転送しなければならない時、SPIRBF ビットがセット ( 受信バッファは一杯 ) されていると、モジュールはSPIROV(SPIxSTAT<6>) ビットをセットしてオーバー フロー状態を示す

6. 送信されるデータは、SPITBF (SPIxSTAT<1>) がクリア状態である限り、いつでもユーザー ソフトウエアにより SPIxBUF に書き込める。連続送信を可能とするため、先に書き込まれたデータを SPIxSR がシフト出力している間でも書込みできる

SPIx モジュールをマスター モード動作に設定する手順です。

1. 割り込みを使う場合

• 対応する IFSn レジスタ内の SPIxIF ビットをクリアする

• 対応する IECn レジスタ内の SPIxIE ビットをセットする

• 対応する IPCn レジスタ内の SPIxIP ビットに割り込み優先レベルを書き込む

2. MSTEN (SPIxCON1<5>) = 1 として望む設定値を SPIxCON レジスタに書き込む 3. SPIROV ビット (SPIxSTAT<6>) をクリアする

4. SPIEN ビット (SPIxSTAT<15>) をセットして SPIx 動作を有効化する

5. 送信するデータを SPIxBUF レジスタに書き込む。SPIxBUF レジスタにデータが書き込まれると直ぐ送信 ( 同時に受信も ) が開始される

23.3.2.1.1 マスター モードにおける外部クロック

マスター モードでも、モジュールを外部 データ クロックで動作させる構成が可能です。SPIx クロック動作は DISSCK ビット (SPIxCON1<12>) で制御されます。このビットがセットされると、内部データ クロックが無効となり、データは SCKx ピンに外部から供給されるクロック パルスで転送されます。その他のマスター モードの動作はこれまでと同様です。

注 : SPIxSR レジスタはユーザーによって直接書き込むことはできません。SPIxSR レジスタへの書込みはすべて SPIxBUF レジスタを通じて実行されます。

注 : DISSCK ビットは SPI マスター モードの場合にのみ使用できます。

DS39699A_JP - ページ 23-8 Advance Information © 2007 Microchip Technology Inc.

Page 9: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

図 23-3: SPIx マスター モードのタイミング

SCKx(CKP = 0

SCKx(CKP = 1

SCKx(CKP = 0

SCKx(CKP = 1

4 クロックモード

入力サンプル

入力サンプル

SDIx

ビット 7 ビット 0

SDOxビット 7 ビット 6 ビット 5 ビット 4 ビット 3 ビット 2 ビット 1 ビット 0

ビット 7

SDIx

SPIxIF

(SMP = 1)(2)

(SMP = 0)(2)

(SMP = 1)(2)

CKE = 1)(1)

CKE = 0)(1)

CKE = 1)(1)

CKE = 0)(1)

(SMP = 0)(2)

SPIxBUF に書き込み

SDOxビット 7 ビット 6 ビット 5 ビット 4 ビット 3 ビット 2 ビット 1 ビット 0

(CKE = 0)

(CKE = 1)

SPIxIF フラグビットのセットは

1 命令サイクル遅れる

注 1: 4 種の SPIx クロック モードは CKP (SPIxCON1<6>) と CKE (SPIxCON1<8>) ビットの機能の説明用にのみ示しています。

動作にはこの中の1モードのみが選択可能です。 2: SDIx と入力サンプルは SMP (SPIxCON1<9>) ビットの 2 つの異なる値を説明用にのみ示しています。SMP ビットの 2 つの

いずれか片方だけが実際の動作用に選択可能です。

3: 送信待ちが無ければ、ユーザーが SPIxBUF に書き込むと直ぐ SPIxTXB から SPIxSR に転送されます。

4: 8 ビット モード動作のみを示していますが、16 ビット モードも同様です。

SPIxSR を

SPIxRXB へ移動

SPIxBUF を

読み出し

(SCKx ピンへの クロック出力、 マスターモード時 )

(SPIxSTAT<0>)

SPITBF

SPIxTXB から SPIxSR へ (3) ユーザーが送信中に新たな

データを書き込み

SPIRBF

2 モード

が有効

SMP 制御

ビット (4)

ビット 0

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-9

Page 10: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

23.3.2.2 スレーブ モード

スレーブ モードでは、データは SCKx ピンに入力される外部クロック パルスにより送受信されます。CKP(SPIxCON<6>) および CKE(SPIxCON<8>) ビットにより、どちらのクロックのエッジでデータ送信するかが決定されます。送信されるデータと受信されたデータは、それぞれ SPIxBUF レジスタに書き込むか、SPIxBUF レジスタから読み出されます。このモジュールのその他の動作は、マスター モードにおけるものと同じです。

SPIx モジュールをスレーブ モード動作に設定する手順です。

1. SPIxBUF レジスタをクリアする

2. 割り込みを使う場合

• 対応する IFSn レジスタ内の SPIxIF ビットをクリアする

• 対応する IECn レジスタ内の SPIxIE ビットをセットする

• 対応する IPCn レジスタ内の SPIxIP ビットに割り込み優先レベルを書き込む

3. MSTEN (SPIxCON1<5>) = 0 として望む設定値を SPIxCON1 と SPIxCON2 レジスタに書き込む

4. SMP ビットをクリアする

5. CKE ビットをセットしたら、SSx ピンを有効とするため SSEN ビット (SPIxCON1<7>)をセットする

6. SPIROV ビット (SPIxSTAT<6>) をクリアする

7. SPIEN ビット (SPIxSTAT<15>) をセットして SPIx 動作を有効化する

23.3.2.2.1 スレーブ選択の同期化

SSx ピンにより同期スレーブ モードが可能になります。SSEN(SPIxCON<7>) ビットがセットされると、 SSx ピンが Low の状態に駆動された時のみ、スレーブモードで送受信が有効化されます ( 図 23-5 参照 )。ポート出力、その他の周辺モジュール出力は、 SSx ピンが入力として機能できるように無効化する必要があります。SSEN ビットがセットされ、 SSx ピンが High に駆動されると、SDOx ピンはもはや駆動されず、モジュールが送信中であってもハイ インピーダンス状態になります。中断された送信は、次回 SSx ピンが Low に駆動されたとき、SPIxTXB レジスタに保持されているデータを使って再試行されます。SSENビットがセットされていなければ、スレーブ モードのモジュール動作は SSx ピンにより影響を受けません。

23.3.2.2.2 SPITBF ステータス フラグの動作

SPITBF(SPIxSTAT<1>) ビットの機能は、スレーブ モード動作においては異なります。

SSEN(SPIxCON<7>) がクリアされていると、ユーザー コードにより SPIxBUF にロードされると SPITBF がセットされます。それはモジュールがデータを SPIxTXB から SPIxSR に転送するとクリアされます。これはマスター モードでの SPITBF ビット機能に類似しています

SSEN (SPIxCON<7>) がセットされていると、ユーザー コードにより SPIxBUF にロードされると SPITBF がセットされます。しかし、それは SPIx モジュールによりデータ送信が完了したときにのみクリアされます。 SSx ピンが High になると送信は中断され、後ほど再送されます。すべてのビットが受信側に送信されるまで、各データ ワードは SPIxTXB に保持されます。

注 : CKE = 1 のときは、モジュールのタイミング要求を満たすために、スレーブ モードでは SSx ピンを有効化しなければなりません ( 詳細は図 23-6 を参照 )。

DS39699A_JP - ページ 23-10 Advance Information © 2007 Microchip Technology Inc.

Page 11: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

図 23-4: SPIx スレーブモードのタイミング ( スレーブ選択ピン無効の場合 )(3)

SCKx 入力(CKP = 1

SCKx 入力(CKP = 0

入力サンプル

SDIx 入力

ビット 7 ビット 0

SDOx ビット 7 ビット 6 ビット 5 ビット 4 ビット 3 ビット 2 ビット 1 ビット 0

SPIxIF

(SMP = 0)

CKE = 0)(1)

CKE = 0)(1)

(SMP = 0)

に書き込み

SPIxBUF(2)

SPIxSR からSPIxRXB へ

SPITBF

SPIRBF

出力

注 1: 2 種の SPIx クロック モードは CKP (SPIxCON<6>) と CKE (SPIxCON<8>) ビットの機能の説明用にのみ示しています。

CKP と CKE ビットのどの組み合わせでもモジュール動作として選択可能です。

2: 送信待ちが無いか送信中であれば、SPIxBUF に書き込むと直ぐ SPIxBUF から SPIxSR に転送されます。

3: 8 ビット モード動作のみを示していますが、16 ビット モードも同様です。

SPIxIF フラグビットのセットは

1 命令サイクル遅れる

ビット 3

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-11

Page 12: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

図 23-5: SPIx スレーブ モードのタイミング ( スレーブ選択ピン有効の場合 )(3)

SCKx(CKP = 1

SCKx(CKP = 0

入力サンプル

SDIxビット 7 ビット 0

SDOx ビット 7 ビット 6 ビット 5 ビット 4 ビット 3 ビット 2 ビット 1

SPIxIF

(SMP = 0)

CKE = 0)

CKE = 0)

(SMP = 0)

SPIxBUF

SPIxSR からSPIxBUF

SSx(1)

注 1: SSEN (SPIxCON1<7>) ビットが「1」にセットされているとき、SSx ピンを Low に駆動して下さい。これでスレーブ

モード時の送受信が有効となります。

2: 全ビットが送信完了するまで送信データは SPIxTXB と SPITBF に保持されています。

3: 8 ビット モード動作のみを示していますが、16 ビット モードも同様です。

SPIxBUF

SPIRBF

1 命令サイクルの遅れ

SPITBF(2)

SPIxBUF から SPIxSR

ビット 0

へ書き込み

を読み出し

DS39699A_JP - ページ 23-12 Advance Information © 2007 Microchip Technology Inc.

Page 13: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

図 23-6: SPIx スレーブ モードのタイミング (CKE = 1)(4)

SCK 入力(CKP = 1

SCK 入力(CKP = 0

入力サンプル

SDI 入力

bit 7 bit 0

SDO bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

SPIxIF

(SMP = 0)

CKE = 1)

CKE = 1)

(SMP = 0)

SPIxBUF SPIxSR からSPIxRXB

SSx(1,2)

SPITBF(3)

SPIRBF

出力

注 1: CKE = 1 のときスレーブ モードでは SSx ピンを使用しなければなりません。

2: SSEN (SPIxCON1<7>) ビットが「1」にセットされているとき、SSx ピンを Low に駆動しなければなりません。これでス

レーブ モード時の送受信が有効となります。

3: 全ビットが送信完了するまで送信データは SPIxTXB と SPITBF に保持されています。

4: 8 ビット モード動作のみを示していますが、16 ビット モードも同様です。

へ書き込み

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-13

Page 14: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

23.3.3 フレーム化 SPIx モード

モジュールは、マスターまたはスレーブ モードいずれの動作でも、基本的なフレーム化SPIx プロトコルをサポートしています。モジュールはフレーム化 SPIx モードを構成するため 4 つの制御ビットを使います。

• FRMEN (SPIxCON2<15>) でフレーム化 SPIx モードを有効化し、SSx ピンをフレーム同期用パルスの入出力ピンとして使うようにする。SSEN (SPIxCON1<7>) の状態は無視される

• SPIFSD (SPIxCON2<14>) が SSx ピンの入出力を決定する ( つまりモジュールがフレーム同期パルスを生成するか受信するかを決める )

• SPIFPOL (SPIxCON2<13>) で単一 SPIx データ フレームのフレーム同期パルスの極性を選択 ( アクティブ High またはアクティブ Low)

• SPIFE (SPIxCON2<1>) で同期パルスを最初のクロック パルスと同時にするか先行させるかを選択する

SPIx モジュールは 2 種類のフレーム化モードの動作をサポートしています。フレーム化マスター モードでは、SPIx モジュールはフレーム同期パルスを生成し、他のデバイスのSSx/FSYNCx ピンに供給します。フレーム化スレーブ モードでは、SPIx モジュールはフレーム同期パルスを SSx/FSYNCx ピンで受信します。

フレーム化 SPIx モードは非フレーム化のマスターおよびスレーブ モードと連動してサポートされています。したがってユーザーは以下の 4 つのフレーム化 SPIx 構成を利用できます。

• SPIx マスター モードおよびフレーム化マスター モード

• SPIx マスター モードおよびフレーム化スレーブ モード

• SPIx スレーブ モードおよびフレーム化マスター モード

• SPIx スレーブ モードおよびフレーム化スレーブ モード

シリアル クロックとフレーム同期化パルスを SPIx モジュールが生成するかどうかが、この 4 つのモードにより決定されます。

23.3.3.1 フレーム化 SPIx モードのときの SCKx ピン

FRMEN = 1 かつ MSTEN = 1 の場合は、SCKx ピンは出力になり、SCKx での SPI クロックはフリーラン クロックになります。FRMEN = 1 かつ MSTEN = 0 の場合は、SCKx ピンは入力になります。SCKx ピンに提供されるクロック源はフリーラン クロックであると想定されます。

クロックの極性は CKP(SPIxCON<6>) ビットにより選択されます。CKE (PIxCON<8>) ビットはフレーム化 SPIx モードでは使用されず、ユーザー ソフトウエアによって「0」 にプログラムする必要があります。CKP = 0 の場合は、フレーム同期パルス出力および SDOx データ出力は、SCKx ピンのクロック パルスの立ち上がりエッジで変化します。入力データは、SDIx 入力ピンにおいてシリアル クロックの立下りエッジでサンプルされます。CKP = 1の場合は、フレーム同期パルス出力および SDOx データ出力は、SCKx ピンのクロック パルスの立ち下がりエッジで変化します。入力データは、SDIx 入力ピンにおいてシリアルクロックの立上がりエッジでサンプルされます。

23.3.3.2 フレーム化 SPIx モード時の SPIx 入力

SPIFSD(SPIxCON<13>) = 0 の場合、SPIx モジュールはフレーム化マスター モード動作になります。このモードでは、ユーザー ソフトウエアで SPIxBUF に送信データを書き込んだとき、フレーム同期パルスがモジュールによって生成され始めます ( 送信データはSPIxTXB レジスタに書き込まれる )。フレーム同期パルスの終了時に、SPIxTXB の内容がSPIxSR に転送され、データの送受信が始まります。

SPIFSD (SPIxCON<13>) = 1 の場合、モジュールはフレーム化スレーブ モードになります。このモードでは、フレーム同期パルスは外部ソースによって生成されます。モジュールがフレーム同期パルスをサンプルすると、SPIxTXB レジスタの内容が SPIxSR に転送され、データ送受信が始まります。ユーザーはフレーム同期パルスが受信される前に、正しいデータを送信用の SPIxBUF にロードする必要があります。

注 : 全てのフレーム化 SPIx モードにおいて、 SSx/FSYNCx と SCKx ピンの使用は必須です。

注 : フレーム同期パルスの受信により、データが SPIxBUF に書き込まれているかどうかにかかわらず送信が開始されます。書き込みが実行されていなければ、SPIxTXB の古い内容が送信されます。

DS39699A_JP - ページ 23-14 Advance Information © 2007 Microchip Technology Inc.

Page 15: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

23.3.3.3 SPIx マスター モードとフレーム化マスター モード

マスター/フレーム化マスター モードの場合は、図 23-7 に示すように SPIx モジュールはクロックとフレーム同期信号の両方を生成します。このモードは、MSTEN と FRMEB ビットの両方を「1」にセットし、SPIFSD ビットを「0」にすると有効となります。

このモードでは、モジュールが送信中であるかどうかにかかわらず、シリアル クロックがSCKx ピンから継続的に出力されます。SPIxBUF に書き込まれると、FSYNCx ピンが SCKxクロックの適切な送信エッジでそのアクティブ状態 (SPIFPOL ビットで決定される ) に駆動され、1 データ フレーム間アクティブに維持されます。SPIFE 制御ビット (SPIxCON2<1>)がクリアされている場合は、図 23-8 に示したようにフレーム同期パルスがデータ送信に先行します。SPIFE がセットされている場合は、図 23-9 に示したようにフレーム同期パルスはデータ送信の最初と同時になります。モジュールは SCKx の次の送信エッジでデータ送信を開始します。

図 23-7: SPIx マスター、フレーム化マスターの接続図

図 23-8: SPIx マスター、フレーム化マスターのタイミング (SPIFE = 0)

図 23-9: SPIx マスター、フレーム化マスターのタイミング (SPIFE = 1)

SDOx

SDIx

PIC24F

シリアルクロック

SSx

SCKx

フレーム同期パルス

SDIx

SDOx

プロセッサ 2

SSx

SCKx

(SPIx マスター、フレーム化マスター)

SCKx

FSYNCx

SDOx

(CKP = 0)

bit 14 bit 13 bit 12

SDIx

bit 14 bit 13 bit 12

SPIxBUF へ書き込み SDIx の受信データをサンプル

SSx ピンに出力されるパルス

SCKx(CKP = 1)

(SPIFPOL = 1)FSYNCx

(SPIFPOL = 0)

bit 15

bit 15

SCKx

SDOx

(CKP = 0)

bit 14 bit 13 bit 12

SDIx bit 14 bit 13 bit 12

SPIxBUF へ書き込み FSYNCx によりパルス生成、

SCKx(CKP = 1)

FSYNCx(SPIFPOL = 1)

FSYNCx(SPIFPOL = 0)

SDIx の受信データ サンプル

bit 15

bit 15

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-15

Page 16: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

23.3.3.4 SPIx マスター モードとフレーム化スレーブ モード

マスター/フレーム化スレーブ モードの場合、モジュールはクロック信号は生成しますが、データ送信にはスレーブ モジュールのフレーム同期信号を使います ( 図 23-10)。このモードは、MSTEN、FRMEN、SPIFSD ビットを「1」にセットすると有効となります。

このモードでは、FSYNCx ピンは入力となり、SPIx クロックのサンプル エッジでサンプルされます。アクティブ状態でサンプルされたときは、その次の SPIx クロックの送信エッジでデータが送信されます。送信完了により割り込みフラグ SPIxIF がセットされます。ユーザーは、FSYNCx ピンに信号が受信される前に、正しいデータが送信用の SPIxBUF レジスタにロードされていることを確認しなければなりません。

図 23-10: SPIx マスター、フレーム化スレーブの接続図

図 23-11: SPIx マスター、 フレーム化スレーブのタイミング (SPIFE = 0)

図 23-12: SPIx マスター、フレーム化スレーブのタイミング (SPIFE = 1)

SDOx

SDIx

PIC24F

シリアル クロック

SSx

SCKx

フレーム同期パルス

SDIx

SDOx

プロセッサ 2

SSx

SCKx

(SPIx マスター、フレーム化スレーブ )

SCKx

SDOx

(CKP = 0)

bit 14 bit 13 bit 12

SDIx

FSYNCx ピンのパルスをサンプル

SDIx の受信データ サンプル

bit 14 bit 13 bit 12

SPIxBUF へ書き込み

SCKx(CKP = 1)

FSYNCx(SPIFPOL = 1)

FSYNCx(SPIFPOL = 0)

bit 15

bit 15

SCKx

SDOx

(CKP = 0)

bit 14 bit 13 bit 12

SDIx bit 14 bit 13 bit 12

SCKx(CKP = 1)

SPIxBUF へ書き込み FSYNCx によりパルス生成、SDIx の受信データ サンプル

FSYNCx(SPIFPOL = 1)

FSYNCx(SPIFPOL = 0)

bit 15

bit 15

DS39699A_JP - ページ 23-16 Advance Information © 2007 Microchip Technology Inc.

Page 17: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

23.3.3.5 SPIx スレーブ モードとフレーム化マスター モード

スレーブ/フレーム化マスター モードでは、モジュールは SPIx スレーブとして動作し、他の SPIx モジュールからのクロックを取り込みます。しかし、データ送信を制御するためのフレーム同期信号は生成します ( 図 23-13)。このモードは、MSTEN ビットは「0」、FRMEN ビットは「1」、SPIFSD ビットは「0」に設定すると有効となります。

スレーブ モードでは SPIx クロック入力は連続です。SPIFSD ビットが Low のときは、FSYNCx ピンは出力となります。したがって SPIxBUF に書き込まれると、モジュールはSPIx クロックの適切な送信エッジで FSYNCx ピンを SPIx の 1 クロック サイクル間アクティブ状態に駆動します。SPIx クロックの適切な送信エッジでデータが送信開始されます。

図 23-13: SPIx スレーブ、フレーム化マスターの接続図

23.3.3.6 SPIx スレーブ モードとフレーム化スレーブ モード

スレーブ/フレーム化スレーブ モードの場合は、モジュールはクロックもフレーム同期パルスもマスター モジュールから取り込みます ( 図 23-14)。このモードは、MSTEN は「0」、FRMEN は「1」、SPIFSD は「1」に設定すると有効となります。

このモードでは、SCKx ピンも FSYNCx ピンも入力となります。FSYNCx ピンは SPIx クロックのサンプル エッジでサンプルされます。FSYNCx がアクティブ状態でサンプルされた場合、SCKx の適切な送信エッジでデータが送信されます。

図 23-14: SPIx スレーブ、フレーム化スレーブの接続図

SDOx

SDIx

PIC24F

シリアル クロック

SSx

SCKx

フレーム同期パルス

SDIx

SDOx

プロセッサ 2

SSx

SCKx

(SPIx スレーブ、フレーム化マスター)

SDOx

SDIx

PIC24F

シリアル クロック

SSx

SCKx

フレーム同期パルス

SDIx

SDOx

プロセッサ 2

SSx

SCKx

(SPIx スレーブ、フレーム化スレーブ )

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-17

Page 18: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

23.3.4 SPIx 受信 のみの動作

DISSDO 制御ビット (SPIxCON<11>) をセットすることにより、SDOx ピンでの送信が無効化されます。これにより、SPIx モジュールは受信のみのモードに構成されます。DISSDOビットがセットされると、SDOx ピンはそれぞれのポート機能により制御されます。DISSDO 機能は、すべての SPI 動作モードに適用されます。

23.3.5 SPIx エラーの取り扱い

新しいデータ ワードが SPIxSR にシフトされたとき、SPIxRXB の以前の内容がユーザーソフトウエアによって読み出されていなかった場合、SPIROV ビット (SPIxSTAT<6>) がセットされます。SPIxSR の中のいずれの受信データも SPIxRXB へ転送されることはありませんし、SPIROV ビットがクリアされるまで、さらにデータを受信することはできません。SPIROV ビットはモジュールにより自動的にクリアされず、ユーザー ソフトウエアによってクリアする必要があります。

SPIx 割り込みフラグ SPIxIF は、SPIROV、 SPIRBF (SPIxSTAT<0>) または SPITBF(SPIxSTAT<1>) がセットされると常にセットされます。割り込みフラグはハードウェアでクリアされませんので、ソフトウェアでリセットして下さい。実際の SPIx の割り込みは、IECn 制御レジスタ内の対応する SPIxIE ビットがセットされているときのみ発生します。

23.4 マスター モードのクロック周波数マスター モードでは、SPI モジュールに供給されるクロックは命令サイクル (TCY) です。次にこのクロックは、 PPRE1:PPRE0(SPIxCON1<1:0>) に設定された第 1 プリスケーラおよび SPRE2:SPRE0 (SPIxCON1<4:2>)に設定された第 2 プリスケーラ によって分周されます。分周された命令クロックはシリアル クロックになり、SCKx ピンから外部デバイスに供給されます。

式 23-1 は、第 1、第 2 プリスケーラ設定の関数として SCKx クロック周波数の計算に使用できます。

式 23-1:

SPIx クロック周波数 (kHz) の例を次の 表 23-1 に示します。

表 23-1: SCKx 周波数例 (1、2)

注 : SCKx 信号クロックは、ノーマル SPI モードのときはフリーランではないことにご注意ください。このクロックは SPIxBUF にデータがロードされた時に、8 または 16パルスのみ出力されます。ただし、フレーム化モードのときは連続です。

第 1プリスケーラ値 * 第 2 プリスケーラ値

FCY FSCK =

FCY = 16 MHz第2プリスケーラ

1:1 2:1 4:1 6:1 8:1

第1プリスケーラ 設定 1:1 16000 8000 4000 2667 2000

4:1 4000 2000 1000 667 500

16:1 1000 500 250 167 125

64:1 250 125 63 42 31

FCY = 5 MHz

第1プリスケーラ 設定 1:1 5000 2500 1250 833 625

4:1 1250 625 313 208 156

16:1 313 156 78 52 39

64:1 78 39 20 13 10

注 1: TCY = TOSC/2 に基づく。ダズ モードと PLL は無効とする。

2: SCKx 周波数は kHz で示す。

注 : すべてのクロック レートがサポートされるわけではありません。詳細は、特定デバイスのデータ シートの SPI x タイミング仕様をご参照ください。

DS39699A_JP - ページ 23-18 Advance Information © 2007 Microchip Technology Inc.

Page 19: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

23.5 省電力モードでの動作

PIC24F ファミリは 3 種類の電力モードを持っています。通常動作モード ( フル パワー) とPWRSAV 命令により入れる2種類の省電力モードです。選択されたSPIxモードにより、省電力モードに入ったときのモジュール動作に影響します。

23.5.1 スリープ モード

デバイスがスリープ モードに入るとシステム クロックが無効となります。スリープ モードに入ったときの影響は、スリープ モードに入ったときのモジュールの構成モード ( マスターかスレーブか ) に依存します。

23.5.1.1 マスター モードの場合の動作

SPIx モジュールがマスター動作に構成されている場合にスリープ モードに入ったときの影響は次のようになります。

• SPIx 内のボーレート ジェネレータは停止しリセットされる。

• スリープ中は送受信は停止する。途中停止した送受信は、ウェイク アップ時には継続されない。

• SPIx モジュールが送受信の途中でスリープ モードに入ると、その送受信は中断される。送信や受信の途中でスリープ モードに入るのを防ぐための自動的な方法がないので、ユーザー ソフトウエアにより送信が中断されるのを避けるために、SPIx モジュールの動作とスリープ への移行の同期をとる必要がある。

23.5.1.2 スレーブ モードのときの動作

スレーブ モードでは、SCKx でのクロック パルスが外部から供給されるので、モジュールはスリープ モードでも機能を継続します。スリープへの移行の間いずれの転送も完了します。転送が完了すると、SPIRBF フラグがセットされます。その結果、SPIxlF ビットがセットされます。SPIx 割り込みが有効化 (SPIxIE = 1) されていれば、そのデバイスはスリープからウェイク アップします。SPIx 割り込み優先レベルが現在の CPU 優先レベルより大きければ、コード実行が SPIx 割り込みベクトル位置から再起動されます。そうでなければ、スリープ モードを呼び出した PWRSAV 命令の次の命令からコード実行が継続されます。スレーブ デバイスとして動作中の場合、スリープ モードに入ってもモジュールはリセットされません。

SPIx モジュールがスリープ モードに移行するとき、あるいは抜け出すときに、レジスタ内容は影響を受けません。

23.5.2 アイドル モード

デバイスがアイドル モードに入っても、システム クロック源は機能を続けます。SPISIDLビット (SPIxSTAT<13>) により、アイドル中にモジュールを停止させるか動作継続させるかを選択します。

SPISIDL = 1 ならば、SPxI モジュールはアイドル モードに入ったら動作を停止します。このとき、スリープ モードのときと同じ動作になります。 SPISID = 0( デフォルト選択 ) ならば、モジュールはアイドル モード中も動作継続します。

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-19

Page 20: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F フ

ァミ

リ リ

ファ

レン

ス マ

ニュ

アル

DS

39699A_JP

- ペー

ジ 23-20

© 2007 M

icrochip Technology Inc.

ト 4 ビット 3 ビット 2 ビット 1 ビット 0 リセット

時の値

— — — SPITBF SPIRBF 0000

RE2 SPRE1 SPRE1 PPRE1 PPRE0 0000

— — — SPIFE r 0000

0000

I2MD SPI1MD — — ADCMD 0000

5MD OC4MD OC3MD OC2MD OC1MD 0000

— — — I2CMD — 0000

23.6 レジスタ マップ

PIC24F SPI モジュールに関連するレジスタのまとめを表 23-2 に示します。

表 23-2: SPI メモリ マップ

名称 ビット 15 ビット 14 ビット 13 ビット 12 ビット 11 ビット 10 ビット 9 ビット 8 ビット 7 ビット 6 ビット 5 ビッ

SPIxSTAT SPIEN — SPISIDL — — r r r — SPIROV —SPIxCON1 — — — DISSCK DISSDO MODE16 SMP CKE SSEN CKP MSTEN SPSPIxCON2 FRMEN SPIFSD SPIFPOL — — — — — — — —SPIxBUF SPIx 送受信バッファ

PMD1 T5MD T4MD T3MD T2MD T1MD — — — I2C1MD U2MD U1MD SPPMD2 — — — IC5MD IC4MD IC3MD IC2MD IC1MD — — — OCPMD3 — — — — — CMPMD RTCCMD PMPMD CRCPMD — —

凡例 : — = 未実装、読むと「0」。リセット時の値は 16 進数で示す。

Page 21: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

23.7 電気的仕様

図 23-15: SPIx モジュールのマスター モードのタイミング特性 (CKE = 0)

表 23-3: SPIx モジュールのマスター モードのタイミング要求 (CKE = 0) AC 特性 標準動作条件 : 2.0V ~ 3.6V

( 特に指定のない限り )動作温度範囲 -40°C ≤ TA ≤ +85°C 工業用品

パラメー

タ No. 記号 特性 Min Typ(1) Max 単位 条件

SP10 TscL SCKx 出力 Low 時間 (2) TCY/2 — — nsSP11 TscH SCKx 出力 High 時間 (2) TCY/2 — — nsSP20 TscF SCKx 出力立下り時間 (3) — 10 25 nsSP21 TscR SCKx 出力立ち上がり時間 (3) — 10 25 nsSP30 TdoF SDOx データ出力立下り時間 (3) — 10 25 nsSP31 TdoR SDOx データ出力立ち上がり時間 (3) — 10 25 nsSP35 TscH2doV,

TscL2doVSCKx エッジから SDOx データ出力

有効までの時間

— — 30 ns

SP40 TdiV2scH,TdiV2scL

SCKx エッジに対する SDIx データ

入力のセットアップ時間

20 — — ns

SP41 TscH2diL,TscL2diL

SCKx エッジに対する SDIx データ

入力のホールド時間

20 — — ns

注 1: 特に指定のない限り「Typ」欄のデータは 3.3V、 25 ℃での値です。パラメータは設計目標値であって未テストです。

2: SCKx の最小クロック周期は 100 ns です。したがって、マスター モードで生成するクロックは、この仕様範囲内とする必要

があります。 3: すべての SPI ピンの負荷を 50 pF とみなす。

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDIx

SP11 SP10

SP40 SP41

SP21SP20SP35

SP20SP21

MSb LSbビット 14 - - - - - -1

LSb 入力ビット 14 - - - -1

SP30SP31

MSb 入力

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-21

Page 22: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

図 23-16: SPIx モジュール マスター モードのタイミング特性 (CKE = 1)

表 23-4: SPIx モジュールのマスター モードのタイミング要求 (CKE = 1) AC 特性 標準動作条件 : 2.0V ~ 3.6V

( 特に指定のない限り )動作温度範囲 -40°C ≤ TA ≤ +85°C 工業用品

パラメー

タ No. 記号 特性 Min Typ(1) Max 単位 条件

SP10 TscL SCKx 出力 Low 時間 (2) TCY/2 — — nsSP11 TscH SCKx 出力 High 時間 (2) TCY/2 — — nsSP20 TscF SCKx 出力立下り時間 (3) — 10 25 nsSP21 TscR SCKx 出力立ち上がり時間 (3) — 10 25 nsSP30 TdoF SDOx データ出力立下り時間 (3) — 10 25 nsSP31 TdoR SDOx データ出力立ち上がり時間

(3)— 10 25 ns

SP35 TscH2doV,TscL2doV

SCKx エッジから SDOx データ出

力有効までの時間

— — 30 ns

SP36 TdoV2sc, TdoV2scL

最初の SCKx エッジに対する

SDOx データ出力の

セットアップ時間

30 — — ns

SP40 TdiV2scH, TdiV2scL

SCKx エッジに対する SDIx データ

入力のセットアップ時間

20 — — ns

SP41 TscH2diL, TscL2diL

SCKx エッジに対する SDIx データ

入力のホールド時間

20 — — ns

注 1: 特に指定のない限り「Typ」欄のデータは 3.3V、 25 ℃での値です。パラメータは設計目標値であって未テストです。

2: SCKx の最小クロック周期は 100 ns です。したがって、マスター モードで生成するクロックは、この仕様範囲内とする必要

があります。 3: すべての SPI ピンの負荷を 50 pF とみなす。

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDIx

SP36

SP30,SP31

SP35

MSb ビット 14 - - - - - -1

LSb 入力ビット 14 - - - -1

LSb

SP11 SP10

SP21SP20

SP41

MSb 入力

SP40

SP20SP21

DS39699A_JP - ページ 23-22 Advance Information © 2007 Microchip Technology Inc.

Page 23: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

図 23-17: SPIx モジュールのスレーブ モードのタイミング特性 (CKE = 0)

表 23-5: SPIx モジュールのスレーブ モードのタイミング要求 (CKE = 0) AC 特性 標準動作条件 : 2.0V ~ 3.6V

( 特に指定のない限り )動作温度範囲 -40°C ≤ TA ≤ +85°C 工業用品

パラメー

タ No. 記号 特性 Min Typ(1) Max 単位 条件

SP70 TscL SCKx 入力 Low 時間 30 — — nsSP71 TscH SCKx 入力 High 時間 30 — — nsSP72 TscF SCKx 入力立下り時間 (2) — 10 25 nsSP73 TscR SCKx 入力立ち上がり時間 (2) — 10 25 nsSP30 TdoF SDOx データ出力立下り時間 (2) — 10 25 nsSP31 TdoR SDOx データ出力立ち上がり時間 (2) — 10 25 nsSP35 TscH2doV,

TscL2doVSCKx エッジから SDOx データ出力

有効までの時間

— — 30 ns

SP40 TdiV2scH, TdiV2scL

SCKx エッジに対する SDIx データ

入力のセット アップ時間

20 — — ns

SP41 TscH2diL, TscL2diL

SCKx エッジに対する SDIx データ

入力のホールド時間

20 — — ns

SP50 TssL2scH, TssL2scL

SSx から SCKx↑までか SCKx 入力

まで

120 — — ns

SP51 TssH2doZ SSx↑から SDOx 出力ハイ インピー

ダンスまで (3)10 — 50 ns

SP52 TscH2ssHTscL2ssH

SCKx エッジの後の SSx↑ 1.5 TCY + 40 — — ns

注 1: 特に指定のない限り「Typ」欄のデータは 3.3V、 25 ℃での値です。パラメータは設計目標値であって未テストです。

2: すべての SPI ピンの負荷を 50 pF とみなす。

SSx

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDI

SP50

SP40

SP41

SP30,SP31 SP51

SP35

SDIx

MSb LSbビット 14 - - - - - -1

ビット 14 - - - -1 LSb 入力

SP52

SP73SP72

SP72SP73SP71 SP70

MSb 入力

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-23

Page 24: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

図 23-18: SPIx モジュールのスレーブ モードの阿智ミング特性 (CKE = 1)

SSx

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SP60

SDIx

SP30,SP31

MSb ビット 14 - - - - - -1 LSb

SP51

ビット 14 - - - -1 LSb 入力

SP35

SP52

SP52

SP73SP72

SP72SP73SP71 SP70

SP40

SP41

SP50

MSb 入力

表 23-6: SPIx モジュールのスレーブ モードのタイミング要求 (CKE = 1) AC 特性 標準動作条件 : 2.0V ~ 3.6V

( 特に指定のない限り )動作温度範囲 -40°C ≤ TA ≤ +85°C 工業用品

パラ

メータNo.

記号 特性 Min Typ(1) Max 単位 条件

SP70 TscL SCKx 入力 Low 時間 30 — — nsSP71 TscH SCKx 入力 High 時間 30 — — nsSP72 TscF SCKx 入力立下り時間 (2) — 10 25 nsSP73 TscR SCKx 入力立ち上がり時間 (2) — 10 25 nsSP30 TdoF SDOx データ出力立下り時間 (2) — 10 25 nsSP31 TdoR SDOx データ出力立ち上がり時間 (2) — 10 25 nsSP35 TscH2doV,

TscL2doVSCKx エッジから SDOx データ出力有効まで

の時間— — 30 ns

SP40 TdiV2scH, TdiV2scL

SCKx エッジに対する SDIx データ入力

のセット アップ時間20 — — ns

SP41 TscH2diL, TscL2diL

SCKx エッジに対する SDIx データ入力

のホールド時間20 — — ns

SP50 TssL2scH, TssL2scL

SSx↓ から SCKx↓ または SCKx↑入力まで 120 — — ns

SP51 TssH2doZ SSx↑から SDOx 出力

ハイ インピーダンスまで (3)10 — 50 ns

SP52 TscH2ssHTscL2ssH

SCKx エッジの後の SSx↑ 1.5 TCY + 40 — — ns

SP60 TssL2doV SSx エッジの後の SDOx データ出力有効まで — — 50 ns注 1: 特に指定のない限り「Typ」欄のデータは 3.3V、 25 ℃での値です。パラメータは設計目標値であって未テストです。

2: SCKx の最小クロック周期は 100 ns です。したがって、マスター モードで生成するクロックは、この仕様範囲内とする必要

があります。 3: すべての SPI ピンの負荷を 50 pF とみなす。

DS39699A_JP - ページ 23-24 Advance Information © 2007 Microchip Technology Inc.

Page 25: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

第 23 章 シリアル周辺インターフェース (SPI)シリアル周辺インター

フェース(

SPI)

23

23.8 関連するアプリケーション ノート

この項では、マニュアルのこの章に関連するアプリケーションノートをリストアップします。これらのアプリケーションノートは、特に PIC24F デバイス ファミリー用に書かれているわけではありませんが、その概念は適切であり、変更、あるいは制限事項を考慮に入れて使用可能です。現状、シリアル周辺インターフェース (SPI) に関連するアプリケーションノートは次の通りです。

タイトル                       アプリケーション ノート #Interfacing Microchip’s MCP41XXX and MCP42XXX Digital Potentiometers to a PICmicro® Microcontroller AN746Interfacing Microchip’s MCP3201 Analog-to-Digital Converter to the PICmicro® Microcontroller AN719

注 : PIC24F ファミリ デバイスに関するその他のアプリケーション ノートやコード例についてはマイクロチップ ウェブ サイト (www.microchip.com) をご覧下さい。

© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-25

Page 26: 第23 章 シリアル周辺インターフェース (SPI)© 2007 Microchip Technology Inc. Advance Information DS39699A_JP - ページ 23-1 シリアル周辺インター フェース

PIC24F ファミリ リファレンス マニュアル

23.9 改版履歴

リビジョン A (2006 年 8 月 )本書の初版リリース

DS39699A_JP - ページ 23-26 Advance Information © 2007 Microchip Technology Inc.