DRV_SPI
DRV_SPI API Status
API |
|---|
DRV_SPI Pin and GPIO Map
SPI Pin |
Number |
|---|---|
SPI0 SCK |
13 |
SPI0 CSN |
14 |
SPI0 MOSI |
15 |
SPI0 MISO |
16 |
DRV_SPI API Reference
Header File
Functions
-
uint32_t drv_spi_init(uint8_t dev_index)
init a spi device.
初始化设备,在使用spi功能前需要调用它获取device instance
- 参数:
dev_index – [in] device index, from 0(the first device)
- 返回值:
0 – fail
other – success
- 返回:
device instance
-
int32_t drv_spi_deinit(uint32_t dev_instance)
deinit a spi device.
反初始化spi设备,对drv_spi_init()进行反向操作
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_config(uint32_t dev_instance, spi_config_t *p_param)
config spi parameter.
对spi设备参数的配置,在配置前需要确保spi处于关闭状态
- 参数:
dev_instance – [in] return value of drv_spi_init()
p_param – [in] 参数结构体指针
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_set_enable(uint32_t dev_instance, uint8_t enable)
enable or disable spi device
开起或者关闭spi的设备
- 参数:
dev_instance – [in] return value of drv_spi_init()
enable – [in] enable or disable
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_register_tx_finish_cbk(uint32_t dev_instance, pfunc_spi_cb_t pfn_cb, void *pv_arg)
register tx finish callback function
注册发送结束回调函数,此函数通知用户此次发送结束
- 参数:
dev_instance – [in] return value of drv_spi_init()
pfn_cb – [in] callback when tx finish
pv_arg – [in] callback parameter
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_register_rx_finish_cbk(uint32_t dev_instance, pfunc_spi_cb_t pfn_cb, void *pv_arg)
register rx finish callback function
注册接收结束回调函数,此函数通知用户此次接收结束
- 参数:
dev_instance – [in] return value of drv_spi_init()
pfn_cb – [in] callback when rx finish
pv_arg – [in] callback parameter
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_register_slv_cs_release_cbk(uint32_t dev_instance, pfunc_spi_cs_release_cb_t pfn_cb, void *pv_arg)
register rx finish callback function
注销CS释放回调函数,仅spi做slave有效
- 参数:
dev_instance – [in] return value of drv_spi_init()
pfn_cb – [in] callback when rx finish
pv_arg – [in] callback parameter
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_unregister_tx_finish_cbk(uint32_t dev_instance)
unregister tx finish callback function
注销接收结束回调函数
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_unregister_rx_finish_cbk(uint32_t dev_instance)
unregister rx finish callback function
注销接收结束回调函数
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_unregister_slv_cs_release_cbk(uint32_t dev_instance)
unregister rx finish callback function
注销CS释放回调函数,仅spi做slave有效 回调函数中会携带,当前实际接收或者发送的数据长度
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_tx_clr(uint32_t dev_instance)
disable spi tx operation
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_rx_clr(uint32_t dev_instance)
disable spi rx operation
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_tx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi master send
spi同步发送,发送完成才会退出函数 发送数据长度的不能大于0xFFF 发送完成不会调用注册的发送完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 发送数据缓存指针
size – [in] 发送的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_rx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi master receive
spi同步接收,接收完成才会退出函数 接收数据长度的不能大于0xFFF 接收完成不会调用注册的接收完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 接收数据缓存指针
size – [in] 接收的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_txrx(uint32_t dev_instance, uint8_t *pu1_tx_buf, uint32_t tx_size, uint8_t *pu1_rx_buf, uint32_t rx_size)
spi master send and receive data
spi同步发送接收,发送接收完成才会退出函数 先发送数据,然后再接收数据 发送数据长度加上接收数据长度的不能大于0xFFF 发送,接收完毕后都不会调用注册的接收完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_tx_buf – [in] 发送数据缓存指针
tx_size – [in] 发送数据长度,byte
pu1_rx_buf – [in] 接收数据缓存指针
rx_size – [in] 接收数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_transmit(uint32_t dev_instance, uint8_t *pu1_tx_buf, uint32_t tx_size, uint8_t *pu1_rx_buf, uint32_t rx_size)
spi master send and receive data
spi全双工同步接口 发送数据长度的不能大于0xFFF 接收数据长度的不能大于0xFFF 发送,接收完毕后都不会调用注册的接收完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_tx_buf – [in] 发送数据缓存指针
tx_size – [in] 发送数据长度,byte
pu1_rx_buf – [in] 接收数据缓存指针
rx_size – [in] 接收数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_tx_async(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi master send
spi异步发送,发送完成会调用注册的发送完成回调函数通知用户 发送数据长度的不能大于0xFFF
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 发送数据缓存指针
size – [in] 发送的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_rx_async(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi master receive
spi异步接收,接收完成会调用注册的接收完成回调函数通知用户 接收数据长度的不能大于0xFFF
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 接收数据缓存指针
size – [in] 接收的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_txrx_async(uint32_t dev_instance, uint8_t *pu1_tx_buf, uint32_t tx_size, uint8_t *pu1_rx_buf, uint32_t rx_size)
spi master send and receive data
spi发送接收异步接口 先发送数据,然后再接收数据 发送数据长度加上接收数据长度的不能大于0xFFF 发送,接收完毕后都会调用注册的接收完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_tx_buf – [in] 发送数据缓存指针
tx_size – [in] 发送数据长度,byte
pu1_rx_buf – [in] 接收数据缓存指针
rx_size – [in] 接收数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_transmit_async(uint32_t dev_instance, uint8_t *pu1_tx_buf, uint32_t tx_size, uint8_t *pu1_rx_buf, uint32_t rx_size)
spi master send and receive data
spi全双工异步接口 发送数据长度的不能大于0xFFF 接收数据长度的不能大于0xFFF 发送,接收完毕后都会调用注册的接收完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_tx_buf – [in] 发送数据缓存指针
tx_size – [in] 发送数据长度,byte
pu1_rx_buf – [in] 接收数据缓存指针
rx_size – [in] 接收数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_dma_tx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi master send
spi 使用dma的异步发送,发送完成会调用注册的发送完成回调函数通知用户 发送数据长度的不能大于0xFFF
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 发送数据缓存指针
size – [in] 发送的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_dma_rx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi master receive
spi使用dma的异步接收,接收完成会调用注册的接收完成回调函数通知用户 接收数据长度的不能大于0xFFF
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 接收数据缓存指针
size – [in] 接收的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_dma_transmit(uint32_t dev_instance, uint8_t *pu1_tx_buf, uint32_t tx_size, uint8_t *pu1_rx_buf, uint32_t rx_size)
spi master send and receive data
spi全双工DMA接口 发送数据长度的不能大于0xFFF 接收数据长度的不能大于0xFFF 此接口与drv_spi_transmit()和drv_spi_transmit_async()接口存在区别,不能做到相互替换
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_tx_buf – [in] 发送数据缓存指针
tx_size – [in] 发送数据长度,byte
pu1_rx_buf – [in] 接收数据缓存指针,接收完毕后接收缓存前面会包含tx_size个无效数据。
rx_size – [in] 接收数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_tx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi slave send
spi同步发送,发送完成才会退出函数 发送数据长度的不能大于0xFFF 发送完成不会调用注册的发送完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 发送数据缓存指针
size – [in] 发送的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_rx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi slave receive
spi同步接收,接收完成才会退出函数 接收数据长度的不能大于0xFFF 接收完成不会调用注册的接收完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 接收数据缓存指针
size – [in] 接收的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_transmit(uint32_t dev_instance, uint8_t *pu1_tx_buf, uint32_t tx_size, uint8_t *pu1_rx_buf, uint32_t rx_size)
spi slave send and receive data
spi全双工同步接口 发送数据长度的不能大于0xFFF 接收数据长度的不能大于0xFFF 发送,接收完毕后都不会调用注册的接收完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_tx_buf – [in] 发送数据缓存指针
tx_size – [in] 发送数据长度,byte
pu1_rx_buf – [in] 接收数据缓存指针
rx_size – [in] 接收数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_tx_aync(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi slave send
spi异步发送,发送完成会调用注册的发送完成回调函数通知用户 发送数据长度的不能大于0xFFF
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 发送数据缓存指针
size – [in] 发送的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_rx_aync(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi slave receive
spi异步接收,接收完成会调用注册的接收完成回调函数通知用户 接收数据长度的不能大于0xFFF
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 接收数据缓存指针
size – [in] 接收的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_transmit_async(uint32_t dev_instance, uint8_t *pu1_tx_buf, uint32_t tx_size, uint8_t *pu1_rx_buf, uint32_t rx_size)
spi slave send and receive data
spi全双工异步接口 发送数据长度的不能大于0xFFF 接收数据长度的不能大于0xFFF 发送,接收完毕后都会调用注册的接收完成回调函数通知用户
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_tx_buf – [in] 发送数据缓存指针
tx_size – [in] 发送数据长度,byte
pu1_rx_buf – [in] 接收数据缓存指针
rx_size – [in] 接收数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_dma_tx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi slave send
spi 使用dma的异步发送,发送完成会调用注册的发送完成回调函数通知用户 发送数据长度的不能大于0xFFF
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 发送数据缓存指针
size – [in] 发送的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_dma_rx(uint32_t dev_instance, uint8_t *pu1_buf, uint32_t size)
spi slave receive
spi使用dma的异步接收,接收完成会调用注册的接收完成回调函数通知用户 接收数据长度的不能大于0xFFF
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_buf – [in] 接收数据缓存指针
size – [in] 接收的数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_spi_slave_dma_transmit(uint32_t dev_instance, uint8_t *pu1_tx_buf, uint32_t tx_size, uint8_t *pu1_rx_buf, uint32_t rx_size)
spi slave send and receive data
spi全双工DMA接口 发送数据长度的不能大于0xFFF 接收数据长度的不能大于0xFFF 此接口与drv_spi_transmit()和drv_spi_transmit_async()接口存在区别,不能做到相互替换
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu1_tx_buf – [in] 发送数据缓存指针
tx_size – [in] 发送数据长度,byte
pu1_rx_buf – [in] 接收数据缓存指针
rx_size – [in] 接收数据长度,byte
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
Structures
-
struct spi_config_t
SPI device config struct definition.
Public Members
-
spi_role_e role
SPI as master or slave
-
uint32_t clk
SPI HW work clock
-
uint32_t baud_rate
SPI transmit and receive SCK clock
-
spi_wire_mode_e wire_mode
SPI wire mode
-
spi_cpol_e cpol
SPI clock cpol
-
spi_cpha_e cpha
SPI clock cpha
-
spi_bit_order_e bit_order
SPI bit order, MSB/LSB
-
spi_role_e role
Macros
-
SPI_DEVICE_NUM
SPI DEVICE NUMBERS
-
CONFIG_SPI_DMA
-
DMA_DEVICE_INDEX_FOR_SPI
Type Definitions
-
typedef void (*pfunc_spi_cb_t)(uint32_t dev_instance, int32_t err_code, uint32_t op_len, void *param)
-
typedef void (*pfunc_spi_cs_release_cb_t)(uint32_t dev_instance, int32_t err_code, uint32_t tx_len, uint32_t rx_len, void *param)
Enumerations
-
enum spi_role_e
SPI device role mode definition.
Values:
-
enumerator SPI_ROLE_SLAVE
SPI as slave
-
enumerator SPI_ROLE_MASTER
SPI as master
-
enumerator SPI_ROLE_SLAVE
-
enum spi_cpol_e
SPI CPOL definition.
Values:
-
enumerator SPI_CPOL_0
SPI clock phase low
-
enumerator SPI_CPOL_1
SPI clock phase high
-
enumerator SPI_CPOL_0
-
enum spi_cpha_e
SPI CPHA definition.
Values:
-
enumerator SPI_CPHA_0
SPI clock phase the first edge
-
enumerator SPI_CPHA_1
SPI clock phase the second edge
-
enumerator SPI_CPHA_0