6. SPI デバイスの活用
6.2. A/D コンバーター(MCP3204)を使用する
6.2.4. プロトコル
MCP3204 は、SPI モード 0(CPOL=0、CPHA=0)または SPI モード 3(CPOL=1、CPHA=1)で通信 をおこないます。MCP3204 の通信フォーマットを「図 6.10. MCP3204 通信フォーマット」に示しま す。
0 0 0 0 0 1 SGL/DIFF D2 D1 D0 X X X X X X X X X X X X X X
Z Z Z Z Z Z Z Z Z Z Z 0 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
MOSI MISO
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
X : Don't care Z : High impedance D2~D0 : Channel select B11~B0 : Result
図 6.10 MCP3204 通信フォーマット
MOSI から 1 を出力することで、転送の開始を MCP3204 に指示します。SGL/DIFF*、D2、D1、D0 の組み合わせにより、A/D 変換をおこなうチャンネルを指定します。D0 以降、MOSI から出力される データは意味を持ちません。
表 6.2 MCP3204 チャンネル指定
SGL/DIFF D2[a] D1 D0 入力構成 チャンネル
1 d.c. 0 0 シングルエンド CH0
1 d.c. 0 1 シングルエンド CH1
1 d.c. 1 0 シングルエンド CH2
1 d.c. 1 1 シングルエンド CH3
0 d.c. 0 0 ディファレンシャル
CH0=IN+、CH1=IN-0 d.c. 0 1 ディファレンシャル CH0=IN-、CH1=IN+
0 d.c. 1 0 ディファレンシャル
CH2=IN+、CH3=IN-0 d.c. 1 1 ディファレンシャル CH2=IN-、CH3=IN+
[a]MCP3204 では D2 は意味を持ちません。
Armadillo 標準ガイド ハードウェア拡張編 SPI デバイスの活用
MCP3204 は、11 番目のクロックの立ち上がりでアナログ入力のサンプリングを開始し、次のクロッ クの立ち下がりで完了します。A/D 変換結果は、B11~B0 に出力されます。
Armadillo 標準ガイド ハードウェア拡張編 SPI デバイスの活用
7. 1-Wire デバイスの活用
7.1. 1-Wire とは
1-Wire は主に機器内のセンサー等との通信に用いられる通信方式です。
一般的な接続方法を下図に示します。なお、Armadillo-640 は、マスターとして別のデバイスと通信 できます。
DQ DQ
Slave Master
Pull-up
図 7.1 1-Wire の接続方法
Master Slave 0
Slave 1
Slave 2
DQ DQ
DQ
DQ
図 7.2 複数のスレーブを接続する場合 1-Wire の主な特徴を以下に示します。
• 非同期式シリアル通信
• デバイスはマスターとスレーブが存在
• 1 つのバス上にマスターは 1 つ、スレーブは複数接続可能
• 信号線は 1 本のみ[1]
• 信号線はオープンドレインなため、プルアップが必要
• スレーブは製造時に与えられた 64 ビットの固有 ID を持つ
• 通信は常にマスターが開始し、固有 ID でスレーブを選択
• 約 16.3kbps
固有 ID はマスターがバスを起動した際、もしくはスレーブがバスに接続された際にマスターによって 読み出され記憶されます。
1-Wire ではクロック信号を別途設けず、Low パルスの幅を用いてデータの転送をおこないます。1 ビットに対応する周期を「タイムスロット」といいます。
なお、タイムスロットにはスタンダード(1 タイムスロット 60μsec)とオーバードライブ(1 タイムス ロット 8μsec)の二つがあります。以下の説明はスタンダードの場合のタイミングです。
[1]通信線で電源供給も行う場合もあります。
Armadillo 標準ガイド ハードウェア拡張編 1-Wire デバイスの活用
マスターは 1 を送信する場合は、1μs 以上かつ短いパルスを出力します。0 を送信する場合は、
60~120μs のパルスを出力します。スレーブは立ち下がりエッジから 15~60μs の間に信号線のサン プリングをおこないます。
WRITE=1 WRITE=0
device sample window (Grid=15us)
図 7.3 1-Wire プロトコル(書き込みスロット)
値を読み出す場合、まず、マスターが 1μs 以上かつ短いパルスを出力します。スレーブは 1 を送信し たい場合は何もしません。0 を送信したい場合、立ち下がりエッジから 15μs 信号線を L レベルに保ち ます。マスターはマスター自体が出力するパルス期間が終わったあと、立ち下がりエッジから 15μs 以 内に信号線のサンプリングをおこないます。
READ=1 READ=0
master sample window (Grid=15us)
図 7.4 1-Wire プロトコル(読み出しスロット)
マスターとスレーブ間でのデータ転送は 3 つのシーケンスでおこないます。3 つのシーケンスは、リ セットシーケンス、ROM コマンドシーケンス、ファンクションシーケンスの順番に実行されます。
リセットシーケンスでは、まず、マスターがリセットパルスを出力します。1-Wire バスにスレーブが 接続されている場合、スレーブはプレゼンスパルスを出力します。
ROM コマンドシーケンスでは、マスターが 8 ビットの ROM コマンドを出力した後、64 ビットの ROM ID を出力します。ROM ID の先頭 8 ビットはデバイス種類を示すファミリーコードです。続く 48 ビットがシリアルナンバーになっています。最後の 8 ビットは CRC です。ROM コマンドには次のもの があります。
1. SEARCH ROM(0xF0): バスに接続されているスレーブデバイスの ROM ID を得ることができま す。1 回の SEARCH ROM コマンドで 1 つのデバイスの ROM ID を特定することができます。
2. READ ROM(0x33): バスに接続されているスレーブデバイスが一つだけの場合、SEARCH ROM コマンドの代わりに READ ROM コマンドを使用して、ROM ID を得ることができます。
3. MATCH ROM(0x55): MATCH ROM コマンドでマスターが出力した ROM ID に一致したスレー ブデバイスが、続くファンクションコマンドに応答します。それ以外のデバイスは、次のリセッ トシーケンスを待ちます。
4. SKIP ROM(0xcc): SKIP ROM コマンドに続いて送信されたファンクションコマンドは、バスに 接続されているスレーブデバイス全てに同時に適用されます。
Armadillo 標準ガイド ハードウェア拡張編 1-Wire デバイスの活用
ファンクションシーケンスは、スレーブデバイスごとに異なります。基本的には、マスターが 8 ビッ トのフォワードコマンド出力した後、データの読み出しまたは書き込みをおこないます。
ROM
Command ROM ID Function Command
R/W Data(s) ROM Command sequence Function sequence
Device presence pulse Reset pulse by master
図 7.5 1-Wire プロトコル