spi = SPI.new( machine dependent parameters )
spi 0.1.1 https://rubygems.org/gems/spi
spi = SPI.new(device: '/dev/spidev32766.0')
fubuki 1.0.1 https://rubygems.org/gems/fubuki
spi_bus = 0
spi_device = 0
spi = Fubuki::SPI.new(spi_bus, spi_device)
spi = SPI(0, baudrate=400000) # 周波数 400kHz で SPI ペリフェラル 0 を作成
# ユースケースによっては、追加のパラメータが必要な場合があります。使用するバスの
# 特性やピンを選択するための追加のパラメータが必要になる場合があります。
SPI.begin()
なし
s.speed=500000
init(baudrate=1000000, *, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=None, mosi=None, miso=None, pins=(SCK, MOSI, MISO))
SPI.setBitOrder(order)
SPI.setClockDivider(SPI_CLOCK_DIV2)
SPI.setDataMode(SPI_MODE0)
SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0))
Rubygem版は、スピードの設定のみ存在するようだ。
MicroPython の用語 baudrate は、SPIに使うには少々奇妙だと思ったが、フリースケールセミコンダクタのSPI規格書に使われている正式な単語であった。
read( read_bytes ) -> String
read(nbytes, write=0x00) # write で指定した1バイトを連続で書き込みながら、 nbytes で指定したバイト数を読み込みます。
# 読み込んだデータを持つ bytes 型オブジェクトを返します。
readinto(buf, write=0x00) # write で指定した1バイトを連続で書き込みながら、 buf に指定したバッファに読み込みます。
Rubygem, Aruduino版は、汎用関数のみしか無いので、そちらへ記載。
write( data1, data2,... )
write( "string" )
write(buf) # buf に含まれる bytes 型オブジェクトを書き込みます。 None を返します。
Rubygem, Aruduino版は、汎用関数のみしか無いので、そちらへ記載。
transfer( [d1, d2,...], recv_size ) -> String
xfer(txdata: [], length: 0)
spi_speed = 1_000_000
spi_delay = 10 # usec
response = spi.transfer([0x01, 0x02, 0x03], spi_speed, spi_delay)
write_readinto(write_buf, read_buf) # read_buf に読込みながら write_buf の bytes 型オブジェクトを書き込みます。
# 両バッファは同じでも異なっていてもかまいませんが、同じ長さでなければなりません。
# None を返します。
receivedVal = SPI.transfer(val)
receivedVal16 = SPI.transfer16(val16)
SPI.transfer(buffer, size)
SPIバスの動作(FIFO)を最も良く表す機能だが、メソッド名に悩む。Arduinoの transfer
が良いように思うが3種類も必要ない。