class ENZI::SPI

SPIクラス

SPI(Serial Peripheral Interface)機能を提供するクラス

SAMPLE

spi = SPI.new(LSBFIRST, CLOCK_DIV4)
v = spi.transfer(0x41)

Constants

CLOCK_DIV128

SPIクロック分周器(1/128)

CLOCK_DIV16

SPIクロック分周器(1/16)

CLOCK_DIV2

SPIクロック分周器(1/2)

CLOCK_DIV32

SPIクロック分周器(1/32)

CLOCK_DIV4

SPIクロック分周器(1/4)

CLOCK_DIV64

SPIクロック分周器(1/64)

CLOCK_DIV8

SPIクロック分周器(1/8)

LSBFIRST

ビットオーダー(LSB first)

MODE0

転送モード0(CPOL=0, CPHA=0)

MODE1

転送モード1(CPOL=0, CPHA=1)

MODE2

転送モード2(CPOL=1, CPHA=0)

MODE3

転送モード3(CPOL=1, CPHA=1)

MSBFIRST

ビットオーダー(MSB first)

Public Class Methods

new(order, mode, div = CLOCK_DIV4) click to toggle source
コンストラクタ
SPIオブジェクトを生成する。

Args

order ビットオーダー

LSBFIRST LSB first
MSBFIRST MSB first

mode 転送モード

MODE0 CPOL=0, CPHA=0
MODE1 CPOL=0, CPHA=1
MODE2 CPOL=1, CPHA=0
MODE3 CPOL=1, CPHA=1

div 転送速度

CLOCK_DIV2 1/2
CLOCK_DIV4 1/4
CLOCK_DIV8 1/8
CLOCK_DIV16 1/16
CLOCK_DIV32 1/32
CLOCK_DIV64 1/64
CLOCK_DIV128 1/128

Return

生成されたSPIオブジェクト

Exception

ArgumentError パラメータエラー

# File enzi-lib.rb, line 445
def initialize(order, mode, div = CLOCK_DIV4)
  # check bit order
  raise ArgumentError, "Invalid bit order :" + order.to_s unless [LSBFIRST,MSBFIRST].include?(order)
  # check transfer mode
  raise ArgumentError, "Invalid mode :" + mode.to_s unless (MODE0..MODE3).include?(mode)
  # check clock div
  raise ArgumentError, "Invalid clock div :" + div.to_s unless [CLOCK_DIV2,CLOCK_DIV4,CLOCK_DIV8,CLOCK_DIV16,CLOCK_DIV32,CLOCK_DIV64,CLOCK_DIV128].include?(div)

  @order = order
  @mode = mode
  @div = div
end

Public Instance Methods

transfer(v) click to toggle source
SPIバイト転送
SPIデバイスより1バイトの値を転送(送受信)する。

Args

v 出力値(数値または文字列)

出力値に文字列が指定された場合は1文字目を出力する。

Return

読み込んだデータを数値形式で返す。

Exception

# File enzi-lib.rb, line 466
def transfer(v)
  0 # dummy
end