Document

デジタル通信(SPI)
デバイス間のデジタル通信の一つ.Serial Peripheral Interfaceの略
3線式(入力,出力,クロック)のインターフェース,通常はチップセレクトもあるので4線.
シフトレジスタ
シフトレジスタ
クロック
チップセレクト
マスタ(マイコンなど)
スレーブ(センサーなど)
*シフトレジスタ ...クロックに合わせてデータを1ビットシフトさせる(ところてん方式)
出力
8bitシフトレジスタ
b7 b6 b5 b4 b3 b2 b1 b0
クロック
入力
b8
出力
入力
b7
b6 b5 b4 b3 b2 b1 b0 b8
b8
クロックがくると
クロック
デジタル通信(SPI)の動作
10110100
01110101
クロック
チップセレクト
マスタ(マイコンなど)
スレーブ(センサーなど)
1.送りたいデータをシフトレジスタに書き込む(マイコン,センサー両方)
デジタル通信(SPI)の動作
“1”
01101000
“0”
11101011
クロック
チップセレクト
マスタ(マイコンなど)
2.クロックに合わせて1ビット送受信される
スレーブ(センサーなど)
デジタル通信(SPI)の動作
“0”
01110101
“1”
10110100
クロック
チップセレクト
マスタ(マイコンなど)
3.8ビット分送受信すると,データの転送が完了する.
スレーブ(センサーなど)
レベルコンバーター(I2C, SPI)
デジタル値の実際の電圧は,電源電圧(5V,3.3V,1.8Vなどいろいろある)によって違う.
異なる電圧のシステムでデジタルデータをやりとりする場合は,レベルコンバータが必要
5 Vシステム
マイコン
3.3 Vシステム
センサー
電圧が異なるので,直接通信できない
デジタル値High = 5 V
デジタル値Low = 0 V
デジタル値High = 3.3 V
デジタル値Low = 0 V
5V
3.3 V
5V
3.3 V
レベルコンバーター(I2C, SPI)
5 Vシステム
3.3 Vシステム
+5 V
5V
+3.3 V
S
D
+3.3 V
G
3.3 V
http://akizukidenshi.com/img/g
oods/L/I-03918.jpg
3.3 V → 5 V への信号伝達
5 Vシステム
3.3 Vシステム
3.3 V → 0V の信号伝達
+5 V
(3)
5V
→ 0V
D
+3.3 V
+3.3 V
S
(1)
3.3 V
→0V
ON
G (2)
VGS > 2V
(1)3.3Vのデバイスが,バスに信号を送る
(バスをGNDラインにする)
(2)VGSがしきい値(2Vくらい,物による)を越えると,
FETがONになる
(3)5VのラインもGNDレベルになる
3.3 V → 5 V への信号伝達
5 Vシステム
3.3 Vシステム
0 V → 3.3 V の信号伝達
+5 V
(3)
0V
→5V
D
+3.3 V
+3.3 V
S
(1)
0V
→ 3.3 V
OFF
G (2)
VGS < 2V
(1)3.3Vのデバイスが,バスに信号を送る
(バスを開放する.すると,プルアップ抵抗により
3.3Vになる)
(2)VGSがしきい値(2Vくらい,物による)を下回るので,
FETがOFFになる
(3)5VのラインもHighレベル(=5 V)になる
5 V → 3.3 V への信号伝達
5 Vシステム
3.3 Vシステム
5V → 0V の信号伝達
+5 V
(1)
5V
→ 0V
D
+3.3 V
+3.3 V
S
(2)
3.3 V
→ 0.6Vくらい
(4)
0V
ON
G (3)
VGS > 2V
(1)5Vのデバイスが,バスに信号を送る
(バスをGNDラインにする)
(2)MOSFET内のダイオードをとおして,3.3V
ラインの電圧が下がる
(3)VGSがしきい値(2Vくらい,物による)を越えると,
FETがONになる
(4)最終的に3.3VのラインもGNDレベルになる
5 V → 3.3 V への信号伝達
5 Vシステム
3.3 Vシステム
0V → 5V の信号伝達
+5 V
(1)
0V
→ 5V
D
+3.3 V
+3.3 V
S
(2)
0V
→ 1.3Vくらい
(4)
3.3V
OFF
G (3)
VGS < 2V
(1)5Vのデバイスが,バスに信号を送る
(バスを開放する.プルアップ抵抗により5Vになる)
(2)この瞬間は,まだFETがONなのでD → Sにむかって
電流が流れる.するとSの電圧が上がる
(3)VGSがしきい値(2Vくらい,物による)を下回ると,
FETがOFFになる
(4)最終的に3.3Vのラインはプルアップ抵抗によって
3.3Vになる
SPIのモード
クロック信号のどのタイミングでデータを送受信するかは,以下のように4モードあるので注意
クロックの正/負論理 ( CPOL(Clock Polarity), CKPなどとよばれる)
データの取り込みタイミング( CPHA(Clock Phase), CKE(Clock select)などとよばれる)
の4つの組み合わせ(モード)がある
注) 正論理では,論理'0'が 'L' (または0 V), 論理'1' が'H'(または5 V, 3.3 V)に対応する,
負論理では,論理'0'が 'H' (または5 V, 3.3 V),論理'1'が 'L'(または0 V)に対応する.
SPI (SKP=0, SKE=0)
クロックは正論理 (CKP=0)
0 (='L')
1 (='H')
0
1
0
1
0
1
0
PIC → センサ
クロック0 → 1 のタイミングでデータを転送(SKE=0)
b7
b6
b5
b4
b3
b6
b5
b4
b3
センサ → PIC
b7
SMP =0
の時はここ
で読み込む
SMP=1の時は
ここで読み込む
1
0
SPI (SKP=0, SKE=1)
クロックは正論理 (CKP=0)
0 (='L')
1 (='H')
0
1
0
1
0
1
0
1
PIC → センサ
クロック1 → 0 のタイミングでデータを転送 (CKE=1)
b7
b6
b5
b4
b3
b7
b6
b5
b4
b3
センサ → PIC
SMP =0
の時はここ
で読み込む
SMP=1の時は
ここで読み込む
0
SPI (SKP=1, SKE=0)
クロックは負論理 (SKP=1)
0 (='H')
1 (='L')
0
1
0
1
0
1
0
PIC → センサ
クロック0 → 1 のタイミングでデータを転送 (SKE=0)
b7
b6
b5
b4
b3
b6
b5
b4
b3
センサ → PIC
b7
SMP =0
の時はここ
で読み込む
SMP=1の時は
ここで読み込む
1
0
SPI (SKP=1, SKE=1)
クロックは負論理 (SKP=1)
0 (='H')
1 (='L')
0
1
0
1
0
1
0
1
PIC → センサ
クロック1 → 0 のタイミングでデータを出力 (SKE=1)
b7
b6
b5
b4
b3
b7
b6
b5
b4
b3
センサ → PIC
SMP =0
の時はここ
で読み込む
SMP=1の時は
ここで読み込む
0