RXduino  1.20a
RXduinoマニュアル 最終更新日 平成26年6月29日
列挙型 | 関数
tkdn_spi.h

RXマイコンの内蔵RSPIモジュールを利用して、SPI機能を実現する [詳細]

#include "tkdn_hal.h"

ソースコードを見る。

列挙型

enum  SPI_PORT {
  SPI_PORT_NONE = 255, SPI_PORT_CS0_DUINO = 0, SPI_PORT_CS1_MARY1 = 1, SPI_PORT_CS2_MARY2 = 2,
  SPI_PORT_CS3_ROM = 3, SPI_PORT_SDMMC = 4, SPI_SSLB0 = 0, SPI_SSLB1 = 1,
  SPI_PORT_RAXINO_EXT = 0, SPI_PORT_RAXINO_SDMMC = 1, SPI_PORT_RAXINO_ROM = 2, SPI_PORT_RAXINO_ACCEL = 3
}
 SCIポートのCSが出力される場所 [詳細]
 
enum  SPI_BIT_ORDER { SPI_LSBFIRST, SPI_MSBFIRST }
 シリアル変換の際のビットの並び [詳細]
 
enum  SPI_CLK_DIVIDER {
  SPI_CLOCK_DIV2, SPI_CLOCK_DIV4, SPI_CLOCK_DIV8, SPI_CLOCK_DIV16,
  SPI_CLOCK_DIV32, SPI_CLOCK_DIV64, SPI_CLOCK_DIV128
}
 SPIクロックの速度 [詳細]
 
enum  SPI_DATA_MODE { SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3 }
 SPIモード [詳細]
 

関数

void spi_init (void)
 SPIのモジュールスタンバイ状態を解除し、各種レジスタをセットアップする [詳細]
 
void spi_terminate (void)
 SPIライブラリを終了する [詳細]
 
void spi_set_port (SPI_PORT port)
 SPIの使用するポートを設定する [詳細]
 
void spi_set_bit_length (int bit_length)
 SPIのビット長を設定する [詳細]
 
void spi_set_bit_order (SPI_BIT_ORDER bit_order)
 SPIのビットオーダーを設定する [詳細]
 
void spi_set_clock_divider (SPI_CLK_DIVIDER divider)
 SPIのクロック速度(PCLKに対する分周比)を指定する [詳細]
 
void spi_set_data_mode (SPI_DATA_MODE mode)
 SPIのデータモードを指定する [詳細]
 
unsigned long spi_transfer (unsigned long txbyte)
 SPIの送受信を行う [詳細]
 

説明

RXマイコンの内蔵RSPIモジュールを利用して、SPI機能を実現する

tkdn_spi.h で定義されています。

列挙型

enum SPI_PORT

SCIポートのCSが出力される場所

列挙型の値
SPI_PORT_NONE 

CSは自動では出力されない

SPI_PORT_CS0_DUINO 

CS0.

SPI_PORT_CS1_MARY1 

CS1.

SPI_PORT_CS2_MARY2 

CS2.

SPI_PORT_CS3_ROM 

CS3.

SPI_PORT_SDMMC 

ext

SPI_SSLB0 

CS0.

SPI_SSLB1 

CS1.

SPI_PORT_RAXINO_EXT 

Arduino互換ポートのCS端子

SPI_PORT_RAXINO_SDMMC 

メモリカードソケット

SPI_PORT_RAXINO_ROM 

RaXinoの場合のオンボードSPI ROM.

SPI_PORT_RAXINO_ACCEL 

RaXinoの場合のオンボード加速度センサ

tkdn_spi.h37 行で定義されています。

シリアル変換の際のビットの並び

列挙型の値
SPI_LSBFIRST 

LSBを先に送出する

SPI_MSBFIRST 

MSBを先に送出する

tkdn_spi.h53 行で定義されています。

SPIクロックの速度

列挙型の値
SPI_CLOCK_DIV2 

PCLK/2 (24MHz)

SPI_CLOCK_DIV4 

PCLK/4 (12MHz)

SPI_CLOCK_DIV8 

PCLK/8 (6MHz)

SPI_CLOCK_DIV16 

PCLK/16 (3MHz)

SPI_CLOCK_DIV32 

PCLK/32 (1.5MHz)

SPI_CLOCK_DIV64 

PCLK/64 (750kHz)

SPI_CLOCK_DIV128 

PCLK/128 (375kHz)

tkdn_spi.h59 行で定義されています。

SPIモード

列挙型の値
SPI_MODE0 

アイドル時のクロックがL、立ち上がりでサンプリング

SPI_MODE1 

アイドル時のクロックがL、立ち下がりでサンプリング

SPI_MODE2 

アイドル時のクロックがH、立ち上がりでサンプリング

SPI_MODE3 

アイドル時のクロックがH、立ち下がりでサンプリング

tkdn_spi.h70 行で定義されています。

関数

void spi_init ( void  )

SPIのモジュールスタンバイ状態を解除し、各種レジスタをセットアップする

覚え書き
該当するI/O端子は周辺機能モードになる
警告
すべてのSPI関数に先だって、この関数を呼び出さなければならない
戻り値
なし
void spi_terminate ( void  )

SPIライブラリを終了する

覚え書き
該当するI/O端子はGPIOモードになる。モジュールスタンバイ状態には戻さない。
戻り値
なし
void spi_set_port ( SPI_PORT  port)

SPIの使用するポートを設定する

引数
port使用するポート
戻り値
なし
void spi_set_bit_length ( int  bit_length)

SPIのビット長を設定する

引数
bit_length8~16,20,24,32のいずれかの値を指定する。
覚え書き
SPIの送受信はハードウェア的に行っているので、上記以外の長さは設定できない。
戻り値
なし
void spi_set_bit_order ( SPI_BIT_ORDER  bit_order)

SPIのビットオーダーを設定する

引数
bit_orderSPI_MSBFIRST または SPI_LSBFIRST のいずれか
戻り値
なし
void spi_set_clock_divider ( SPI_CLK_DIVIDER  divider)

SPIのクロック速度(PCLKに対する分周比)を指定する

引数
divider次の値のいずれかを指定する
  • SPI_CLOCK_DIV2 : PCLK/2 (24MHz)
  • SPI_CLOCK_DIV4 : PCLK/4 (12MHz)
  • SPI_CLOCK_DIV8 : PCLK/8 (6MHz)
  • SPI_CLOCK_DIV16 : PCLK/16 (3MHz)
  • SPI_CLOCK_DIV32 : PCLK/32 (1.5MHz)
  • SPI_CLOCK_DIV64 : PCLK/64 (750kHz)
  • SPI_CLOCK_DIV128 : PCLK/128 (375kHz) これ以外の値を指定しないこと
覚え書き
デフォルトの分周比は不明
戻り値
なし
void spi_set_data_mode ( SPI_DATA_MODE  mode)

SPIのデータモードを指定する

引数
modeデータモード
  • SPI_MODE0 アイドル時のクロックがL、立ち上がりでサンプリング
  • SPI_MODE1 アイドル時のクロックがL、立ち下がりでサンプリング
  • SPI_MODE2 アイドル時のクロックがH、立ち上がりでサンプリング
  • SPI_MODE3 アイドル時のクロックがH、立ち下がりでサンプリング
覚え書き
デフォルトのモードは0
戻り値
なし
unsigned long spi_transfer ( unsigned long  txbyte)

SPIの送受信を行う

引数
txbyte8~32bitのデータ。リトルエンディアン。実際に送信される長さは spi_set_bit_length() で指定する。
戻り値
受信したデータ