SPISlave
SPISlave
SPI (Serial Peripheral Interface) スレーブ
初期化
SPISlave name(mosi, miso, sclk, ssel);
name: 名前
mosi: 入力ピン名(p5, p11)
miso: 出力ピン名(p6, p12)
sclk: クロックピン名(p7, p13)
ssel: チップセレクトピン名(p8, p14)
通信形式
name.format(bits, mode);
bits: データフレームのビット数(4~16)
mode: 信号形式(下記)
mode | POL | PHA |
---|---|---|
0 | 正パルス | ラッチ先行 |
1 | 正パルス | シフト先行 |
2 | 負パルス | ラッチ先行 |
3 | 負パルス | シフト先行 |
クロックレート
name.frequency(hz);
hz: クロック周波数(デフォルト 1000000Hz=1MHz)
受信チェック
受信データがあるか確認する。
val = name.receive();
val: 0=データなし、1=データあり
受信
val = name.read();
val: 受信データ
送信
次の受信動作時に、送信するデータをセットする。
name.reply(data);
data: 送信データ
例
受信したデータを+1し、次の受信動作時に送信する
// Reply to a SPI master as slave #include "mbed.h" SPISlave device(p5, p6, p7, p8); // mosi, miso, sclk, ssel int main() { device.reply(0x00); // Prime SPI with first reply while(1) { if(device.receive()) { int v = device.read(); // Read byte from master v = (v + 1) % 0x100; // Add one to it, modulo 256 device.reply(v); // Make this the next reply } } }
Please log in to post comments.