00000-A Rev. 1.00 ルネサス エレクトロニクス株式会社 ルネサス半導体トレーニングセンター © 2013 Renesas Electronics Corporation. All rights reserved. 2013/08/02 RX63N 周辺機能紹介 RSPI ルネサスシリアルペリフェラルインタフェース
00000-A
Rev. 1.00
ルネサス エレクトロニクス株式会社
ルネサス半導体トレーニングセンター
© 2013 Renesas Electronics Corporation. All rights reserved.
2013/08/02
RX63N 周辺機能紹介 RSPI ルネサスシリアルペリフェラルインタフェース
© 2013 Renesas Electronics Corporation. All rights reserved. 2
コンテンツ
シリアルペリフェラルインタフェースの概要
RSPIの概要
プログラムサンプル
© 2013 Renesas Electronics Corporation. All rights reserved. 3
シリアルペリフェラルインタフェースの概要
© 2013 Renesas Electronics Corporation. All rights reserved. 4
シリアルペリフェラルインタフェースとは
モトローラ(現フリースケール・セミコンダクタ)社によって提唱されたクロッ
ク同期式のシリアルバス規格
SC
LK
MO
SI
MIS
O
SSL1
SSL2
SSL3
SC
LK
MO
SI
MIS
O
SSL
SC
LK
MO
SI
MIS
O
SSL
SC
LK
MO
SI
MIS
O
SSL
SPIバス
マスタ スレーブA スレーブB スレーブC
マスタがスレーブAと送受信を行う
© 2013 Renesas Electronics Corporation. All rights reserved. 5
SPIモード
SCLK
MOSI MISO
L SPIモード0
SCLK
MOSI MISO
L SPIモード1
SCLK
MOSI MISO
H SPIモード2
SCLK
MOSI MISO
H SPIモード3
CPOL=0(正パルス)、CPHA=0(奇数エッジでデータサンプル、偶数エッジでデータ変化)
CPOL=0(正パルス)、CPHA=1(奇数エッジでデータ変化、偶数エッジでデータサンプル)
CPOL=1(負パルス)、CPHA=0(奇数エッジでデータサンプル、偶数エッジでデータ変化)
CPOL=1(負パルス)、CPHA=1(奇数エッジでデータ変化、偶数エッジでデータサンプル)
※CPOL (Clock POLarity:極性)、CPHA (Clock PHAse:位相)、 × データサンプル
© 2013 Renesas Electronics Corporation. All rights reserved. 6
RSPIの概要
© 2013 Renesas Electronics Corporation. All rights reserved. 7
RSPIの仕様
© 2013 Renesas Electronics Corporation. All rights reserved.
RSPIのブロック図
モジュールデータバス バスインタフェース
周辺バス
ボーレート ジェネレータ
クロック 設定用レジスタ
PCLK
送受信 コントロール
送受信 制御用レジスタ
クロック
RSPCK
SSL1~3 SSL0 割り込み
要求
MISO
MOSI
SPTX SPRX
パリティ回路
シフトレジスタ
セレクタ
マスタ
スレーブ
マスタ
マスタ
スレーブ
8
© 2013 Renesas Electronics Corporation. All rights reserved. 9
プログラムサンプル
© 2013 Renesas Electronics Corporation. All rights reserved. 10
プログラムサンプル シングルマスタ仕様
■シングルマスタの例
下記の仕様を満たすよう送受信を行います。
仕様
・チャネル チャネル1
・動作モード シングルマスタモード(全二重) ・ビットレート 12Mbps(RSPCK:12MHz) ・SPIモード モード3 ・転送データ長 8 ・ビットの送り順 MSBファースト ・バースト転送 使用 ・遅延時間 RSPCK遅延、SSLネゲート遅延:1RSPCK 次アクセス遅延:1RSPCK+2PCLK ・端子 RSPCKB、MOSIB、MISOB、SSLB0 ・割り込み 使用せず
© 2013 Renesas Electronics Corporation. All rights reserved. 11
初期化フロー
初期化関数
通信形式の設定
マスタモードに設定
モジュールストップ解除
終了
SPDRのアクセスサイズ設定
ビットレートの設定
端子の設定
RSPI チャネル1
消費電力低減機能
I/Oポート
レジスタの設定が可能
© 2013 Renesas Electronics Corporation. All rights reserved. 12
モジュールストップコントロールレジスタB(MSTPCRB)
チャネル1使用可 C言語マクロ表記: MSTP(RSPI1) = 0;
© 2013 Renesas Electronics Corporation. All rights reserved. 13
PEn 端子機能制御レジスタ(PEnPFS)(n=0 ~ 7)
<仕様>
・端子 RSPCKB、MOSIB、MISOB、SSLB0
© 2013 Renesas Electronics Corporation. All rights reserved. 14
書き込みプロテクトレジスタ(PWPR)
© 2013 Renesas Electronics Corporation. All rights reserved. 15
ビットレートの設定
n: SPBRの設定値(0≦n≦255) N:分周の設定(0≦n≦3)
ビットレートレジスタ( SPBR ) コマンドレジスタの分周の設定
© 2013 Renesas Electronics Corporation. All rights reserved. 16
RSPI ビットレートレジスタ(SPBR)
© 2013 Renesas Electronics Corporation. All rights reserved. 17
ビットレート分周設定ビット(BRDV)
コマンドレジスタ0
© 2013 Renesas Electronics Corporation. All rights reserved. 18
通信形式の設定
SSLB0-A
1 2 3 5 7 4 6 8
開始 終了 シリアル転送期間
t1 t2 t3
RSPCKB-A
MISOB-A
MOSIB-A
RSPCK周期
データのサンプル
RSPCK=12MHz
SPIモード3 MSB LSB
t1:RSPCK遅延時間=1RSPCK t2:SSLネゲート遅延時間=1RSPCK t3:次アクセス遅延時間=1RSPCK+2PCLK
© 2013 Renesas Electronics Corporation. All rights reserved. 19
RSPCK位相設定ビット(CPAH)とRSPCK極性設定ビット(CPOL)
SPIモード3
RSPCKB-A
MISOB-A
MOSIB-A
コマンドレジスタ0
© 2013 Renesas Electronics Corporation. All rights reserved. 20
RSPIデータ長設定ビット(SPB)
コマンドレジスタ0
1 2 3 5 7 4 6 8
開始 終了 シリアル転送期間
RSPCK周期
RSPCKB-A
© 2013 Renesas Electronics Corporation. All rights reserved. 21
RSPI LSBファーストビット(LSBF)
MSB
MISOB-A
MOSIB-A
LSB
コマンドレジスタ0
© 2013 Renesas Electronics Corporation. All rights reserved. 22
SSL信号レベル保持ビット(SSLKP)
SSLKPビット = 0
転送終了
SSLKPビット = 1(バースト転送) SSLB0-A
RSPCKB-A
コマンドレジスタ0
© 2013 Renesas Electronics Corporation. All rights reserved. 23
RSPCK遅延設定許可ビット(SCKDEN)
コマンドレジスタ0
SSLB0-A
t1
RSPCKB-A
t1:RSPCK遅延時間=1RSPCK
© 2013 Renesas Electronics Corporation. All rights reserved. 24
SSLネゲート遅延設定許可ビット(SLNDEN)
コマンドレジスタ0
SSLB0-A
RSPCKB-A
t2:SSLネゲート遅延時間=1RSPCK t2
© 2013 Renesas Electronics Corporation. All rights reserved. 25
RSPI次アクセス遅延設定許可ビット(SPNDEN)
コマンドレジスタ0
SSLB0-A
RSPCKB-A
t3:SSLネゲート遅延時間=1RSPCK t3
© 2013 Renesas Electronics Corporation. All rights reserved. 26
RSPI データレジスタ(SPDR)
モジュールデータバス
SPTX SPRX SPDRにマッピング
SPDRのライト SPDRのリード
ワードアクセス
ロングワードアクセス
SPDRのアクセスサイズ≧転送データ長
© 2013 Renesas Electronics Corporation. All rights reserved. 27
RSPI データコントロールレジスタ(SPDCR)
© 2013 Renesas Electronics Corporation. All rights reserved. 28
RSPI 制御レジスタ(SPCR) -マスタモードの設定-
設定後はリードすること
© 2013 Renesas Electronics Corporation. All rights reserved. 29
RSPIのシングルマスタ動作の初期化関数
void init_RSPI1(void) { uint8_t dummy; // Wakeup RSPI1 MSTP(RSPI1) = 0; // RSPCKB, MOSIB, MISOB,SSLB0 pin is enabled MPC.PWPR.BYTE = 0x40; MPC. PE4PFS.BIT.PSEL = 0xB; MPC. PE5PFS.BIT.PSEL = 0xB; MPC. PE6PFS.BIT.PSEL = 0xB; MPC. PE7PFS.BIT.PSEL = 0xB; // SPDR is accessed in longwords RSPI1.SPDCR.BIT.SPLW = 1; // set for bitrate RSPI1.SPBR.BYTE = 1; // SPCMD0 settings RSPI1.SPCMD0.WORD = 0x0783; // set to master mode RSPI1.SPCR.BIT.MSTR = 1; // dummy read dummy = RSPI1.SPCR.BIT.MSTR }
初期化関数
転送フォーマットの設定
マスタモードに設定
モジュールストップ解除
終了
SPDRのアクセスサイズ設定
ビットレートの設定
端子の設定
© 2013 Renesas Electronics Corporation. All rights reserved. 30
マスタ送受信関数仕様
宣言
説明
引数
戻り値
uint8_t communicate8bit( uint8_t transmit );
引数で指定した8ビットデータを送信し、受信した8ビットデータをリターンする。
uint8_t transmit
8ビット受信データ
注意事項 全二重通信を行い、受信エラーは考慮しない。
8ビット送信データ
概要 8ビットデータの送受信
※uint8_t(unsigned char)
© 2013 Renesas Electronics Corporation. All rights reserved. 31
マスタ送受信関数のフロー
マスタ送受信関数
SPDRへ書き込み(送信)
終了
SPDRの読み出し(受信)
受信完了? no
yes
送信が不要な場合も、 ダミーデータを書き込む
受信が不要な場合も、 ダミーリードを行う
© 2013 Renesas Electronics Corporation. All rights reserved. 32
SPDRの書き込みと読み込み
SPDR
書き込みデータ
32ビット
送信データ
8ビット
SPDR
読み出しデータ
32ビット
受信データ
8ビット
© 2013 Renesas Electronics Corporation. All rights reserved. 33
RSPI ステータスレジスタ(SPSR)
データ通信開始
SPDRへ書き込み(送信)
データ通信終了
SPDRの読み出し(受信)
受信完了? no
yes
© 2013 Renesas Electronics Corporation. All rights reserved. 34
マスタ送受信関数
uint8_t communicate8bit( uint8_t transmit ) { uint32_t receive; // start communication RSPI1.SPDR.LONG = (uint32_t) transmit; // wait for end of communication while( RSPI1.SPSR.BIT.SPRF != 1 ); // read receive data receive = RSPI1.SPDR.LONG; return (uint8_t) (receive & 0xFF ); }
マスタ送受信関数
SPDRへ書き込み(送信)
終了
SPDRの読み出し(受信)
受信完了? no
yes
© 2013 Renesas Electronics Corporation. All rights reserved. 35
マスタ送受信関数の使用フロー
送信するデータがある?
RSPI機能を無効に設定
開始
終了
マスタ送受信関数
NO
yes
RSPI機能を有効に設定
クロックとデータの ビットずれ防止
© 2013 Renesas Electronics Corporation. All rights reserved. 36
RSPI 制御レジスタ(SPCR) -RSPI機能有効ビット-
送受信する前
送受信した後
© 2013 Renesas Electronics Corporation. All rights reserved. 37
マスタ送受信関数の使用
void sample(void) { uint8_t send[16] = {‘0’, ‘1’, ‘2’, ・・・ ‘F’}; uint8_t receive[16]; int i; // enable RSPI1.SPCR.BIT.SPE = 1; for(i=0; i<16; i++){ receive[i] = communicate8bit( send[i] ); } // disable RSPI1.SPCR.BIT.SPE = 0; }
送信するデータがある?
RSPI機能を無効に設定
開始
終了
マスタ送受信関数
NO
yes
RSPI機能を有効に設定
例:16バイトの送受信
ルネサス エレクトロニクス株式会社 © 2013 Renesas Electronics Corporation. All rights reserved.
END