SPI - SPIマスター

SPI - SPIマスター

Information

本ページは私家版のため、誤り等あればご指摘ください。
最新の情報は公式のドキュメントをご参照ください。 http://mbed.org/handbook/SPI

SPI (Serial Peripheral Interface)

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

初期化

SPI name(mosi, miso, sclk);

name: 名前
mosi: 出力ピン名(p5, p11)
miso: 入力ピン名(p6, p12)
sclk: クロックピン名(p7, p13)

通信形式

name.format(bits, mode);

bits: データフレームのビット数(4~16)
mode: 信号形式(下記)

modePOLPHA
0立ち上がり先行ラッチ先行
1立ち上がり先行シフト先行
2立ち下がり先行ラッチ先行
3立ち下がり先行シフト先行

/media/uploads/okini3939/spi_mode.png

モード 0, 2 は1ワード転送ごとにCSをいったんHighにしなければならない。 モード 1,3 は複数ワード転送の間CSをLowのままにできる。

クロックレート

name.frequency(hz);

hz: クロック周波数(デフォルト 1000000Hz=1MHz)

送受信

データを送信し、同時に受信されたデータを返す。

val = name.write(data);

data: 送信データ
val: 受信データ

加速度センサーLIS302のWHOAMIレジスタを読み込む

#include "mbed.h"

SPI spi(p5, p6, p7); // mosi, miso, sclk
DigitalOut cs(p8);

Serial pc(USBTX, USBRX); // tx, rx

int main() {
    // Setup the spi for 8 bit data, high steady state clock,
    // second edge capture, with a 1MHz clock rate
    spi.format(8,3);
    spi.frequency(1000000);

    // Select the device by seting chip select low
    cs = 0;

    // Send 0x8f, the command to read the WHOAMI register
    spi.write(0x8F);

    // Send a dummy byte to receive the contents of the WHOAMI register
    int whoami = spi.write(0x00);
    pc.printf("WHOAMI register = 0x%X\n", whoami);

    // Deselect the device
    cs = 1;
}

詳細 戻る


Please log in to post comments.