SPISlave

SPISlave

SPI (Serial Peripheral Interface) スレーブ

http://mbed.org/media/uploads/mbedofficial/spi_interfaces.png

初期化

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: 信号形式(下記)

modePOLPHA
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.