C2A_Core
spi.h
[詳解]
1 
10 #ifndef SPI_H_
11 #define SPI_H_
12 
13 #include <stdint.h>
14 
20 typedef enum
21 {
22  SPI_MODE_0 = 0,
23  SPI_MODE_1 = 1,
24  SPI_MODE_2 = 2,
25  SPI_MODE_3 = 3
27 
33 typedef enum
34 {
38 
43 typedef struct
44 {
45  uint8_t comm_ch;
46  uint8_t gpio_ch;
47  uint32_t frequency_khz;
49  uint8_t tx_data_for_rx;
50  uint16_t rx_length;
52 } SPI_Config;
53 
60 typedef enum
61 {
66  SPI_ERR_GPIO = -5,
67  SPI_ERR_YET = -4,
70  SPI_ERR_CH = -1,
71  SPI_ERR_OK = 0
73 
81 int SPI_init(void* my_spi_v);
82 
93 int SPI_rx(void* my_spi_v, void* data_v, int buffer_size);
94 
102 int SPI_tx(void* my_spi_v, void* data_v, int data_size);
103 
110 int SPI_reopen(void* my_spi_v, int reason);
111 
118 void SPI_set_rx_length(void* my_spi_v, const uint16_t rx_length);
119 
126 void SPI_set_cs_state_after_tx(void* my_spi_v, const SPI_CS_STATE_AFTER_TX cs_state_after_tx);
127 
128 #endif
int SPI_tx(void *my_spi_v, void *data_v, int data_size)
SPI_Config構造体にて指定されたchへデータを送信します
void SPI_set_cs_state_after_tx(void *my_spi_v, const SPI_CS_STATE_AFTER_TX cs_state_after_tx)
cs_state_after_txを設定する
SPI_CS_STATE_AFTER_TX
Definition: spi.h:34
@ SPI_CS_STATE_AFTER_TX_LOW
送信後にCSをLowのままにし、そのまま受信動作などを行う
Definition: spi.h:36
@ SPI_CS_STATE_AFTER_TX_HIGH
送信後にCSをHighにする
Definition: spi.h:35
void SPI_set_rx_length(void *my_spi_v, const uint16_t rx_length)
rx_lengthを設定する
int SPI_reopen(void *my_spi_v, int reason)
指定されたchを開きなおす
int SPI_init(void *my_spi_v)
SPI_Config構造体をグローバルインスタンスとして定義し、ポインタを渡すことでポートを初期化します。
SPI_ERR_CODE
SPI用の汎用エラーコード
Definition: spi.h:61
@ SPI_ERR_DATA_NEGA
送受信データサイズが負のエラー
Definition: spi.h:64
@ SPI_ERR_ALREADY
チャンネルオープン済み
Definition: spi.h:68
@ SPI_ERR_RX_BUFFER_SMALL
受信バッファサイズが受信データ長より小さい
Definition: spi.h:63
@ SPI_ERR_FREQUENCY
周波数異常
Definition: spi.h:69
@ SPI_ERR_UNKNOWN
原因不明
Definition: spi.h:62
@ SPI_ERR_YET
チャンネル未オープン
Definition: spi.h:67
@ SPI_ERR_CH
チャンネル異常 (Port_configに無い)
Definition: spi.h:70
@ SPI_ERR_DATA_LARGE
送受信データサイズが大きすぎる
Definition: spi.h:65
@ SPI_ERR_OK
OKは0を踏襲
Definition: spi.h:71
@ SPI_ERR_GPIO
GPIO関連エラー
Definition: spi.h:66
int SPI_rx(void *my_spi_v, void *data_v, int buffer_size)
SPI_Config構造体にて指定されたchからデータを受信します
SPI_MODE
SPI動作モードの設定
Definition: spi.h:21
@ SPI_MODE_0
CPOL=0, CPHA = 0
Definition: spi.h:22
@ SPI_MODE_2
CPOL=1, CPHA = 0
Definition: spi.h:24
@ SPI_MODE_1
CPOL=0, CPHA = 1
Definition: spi.h:23
@ SPI_MODE_3
CPOL=1, CPHA = 1
Definition: spi.h:25
C89 環境用 stdint.h
SPIポートの初期化、データ送信・受信の際に必要となる設定情報を格納する構造体です。
Definition: spi.h:44
SPI_CS_STATE_AFTER_TX cs_state_after_tx
送信動作後にChip SelectをHighにするかどうかのフラグ
Definition: spi.h:51
uint8_t tx_data_for_rx
RX動作をするために定期的に送るTXデータ
Definition: spi.h:49
SPI_MODE mode
SPI動作モード
Definition: spi.h:48
uint16_t rx_length
受信するデータ数、受信動作前に設定する
Definition: spi.h:50
uint8_t comm_ch
継承先の機器がつながっている通信ポート番号
Definition: spi.h:45
uint8_t gpio_ch
継承先の機器がつながっているChip Select用GPIOポート番号
Definition: spi.h:46
uint32_t frequency_khz
SPIクロックの周波数 単位:kHz
Definition: spi.h:47