- SPI バスをサポートするクラス。
- この仕様書ではマスターデバイス、8bit 単位の転送のみ規定する。
- チップセレクト SS はGPIO機能を使う事とし、SPIクラスでは規定しない。
- id で示す物理ユニットを指定して、SPI オブジェクトを生成する。
- 物理ユニットが1つしか無い場合などは、idは省略可能とする。
オプションパラメータ
| param | type | description |
|---|---|---|
| unit | --- | SPIユニットの指定 |
| frequency | Integer | 周波数 (default 1MHz) |
| mode | Integer | 0 to 3 (default 0) |
| first_bit | Constant | SPI::MSB_FIRST or SPI::LSB_FIRST (default MSB_FIRST) |
使用例
# デフォルトの設定で、spiオブジェクトを生成する。
spi = SPI.new()
# ユニット1 の SPI デバイスを、周波数 10MHz で使う。
spi = SPI.new( unit:1, frequency:10_000_000 )モードパラメータ
| mode | CPOL | CPHA | Idle state clock polarity | Sampling timing | |
|---|---|---|---|---|---|
| 0 | 0 | 0 | Low | Rising edge | ![]() |
| 1 | 0 | 1 | Low | Falling edge | ![]() |
| 2 | 1 | 0 | High | Falling edge | ![]() |
| 3 | 1 | 1 | High | Rising edge | ![]() |
機種依存
- 全てのパラメータがサポートされているとは限らない。
- SPI の動作モード(パラメータ)を変更する。
- パラメータの指定は、コンストラクタに準拠する。
使用例
spi.setmode( mode:3 )- SPIバスから read_bytes バイトのデータを読み込む。
- 同時に出力されるデータは、0が出力される。
使用例
data = spi.read( 32 )- SPIバスへ、outputs で指定したデータを出力する。
- outputsは、Integer, Array<Integer> もしくは String で指定する。
使用例
spi.write( 0x30, 0xa2 )
spi.write( "\x30\xa2" )
spi.write( 0x02, 0xee, 0xad, 0x00, data_string ) # useful for EEPROM- SPIバスへ outputs で指定したデータを出力しながら同時に入力する(汎用転送)
- outputs は、Integer, Array<Integer> もしくは String で指定する。
- additional_read_bytes を指定すると、そのバイト数分の 0x00 を output に続いて出力する。
使用例
s = spi.transfer( 0b0000_0101, 1 ) # s は 2バイトの String が返る


