DRV_SDIO
DRV_SDIO API Status
API |
|---|
DRV_SDIO Pin and GPIO Map
SDIO Pin |
Number |
|---|---|
SDIO CLK |
2 |
SDIO CSN |
3 |
SDIO DATA[0] |
4 |
SDIO DATA[1] |
5 |
SDIO DATA[3] |
10 |
SDIO DATA[4] |
11 |
DRV_SDIO API Reference
Header File
Functions
-
uint32_t drv_sdio_init(uint32_t dev_index)
Init the sdio host driver.
This API init the resoure common:
Power up the sdio
Enable sdio host interrupt
Configure the sdio clock soure to 26M
- Attention
1. This API should be called before any other sdio host APIs
- 返回值:
0 – fail
other – success
- 返回:
device instance
-
int32_t drv_sdio_deinit(uint32_t dev_instance)
Deinit the sdio host driver.
Reset all configuration of sdio host to default value
Clear sdio host interrupt status
Power down the sdio host
Disable sdio host interrupt
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
void drv_sdio_set_sys_clk(sdio_clock_src_e clock_src, sdio_clock_div_e clock_div)
Set the sdio clock.
- 参数:
clock_src – [in] clock的源头
clock_div – [in] 分频系数
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_send_cmd(uint32_t dev_instance, sdio_cmd_config_t *p_cmd)
Send the command from host to slave.
- 参数:
dev_instance – [in] return value of drv_spi_init()
p_cmd – [in] command the configuration information for the command
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_wait_cmd_rsp(uint32_t dev_instance, uint32_t cmd_index)
Host wait for salve command response.
函数是阻塞式等待slave响应,不能与drv_sdio_interrupt_callback_register进行混用
- 参数:
dev_instance – [in] return value of drv_spi_init()
cmd_index – [in] cmd_index the command index
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
uint32_t drv_sdio_get_cmd_rsp_argument(uint32_t dev_instance, sdio_response_e argument_index)
Get the command response.
- 参数:
dev_instance – [in] return value of drv_spi_init()
argument_index – [in] argument_index the command argument index
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_set_data_timeout(uint32_t dev_instance, uint32_t timeout)
Set the data timeout.
- 参数:
dev_instance – [in] return value of drv_spi_init()
timeout – [in] timeout the data timeout
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_config_data(uint32_t dev_instance, const sdio_data_config_t *data_config)
Config the data.
- 参数:
dev_instance – [in] return value of drv_spi_init()
data_config – [in] data_config the configuration information for the data
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_read_data_fifo(uint32_t dev_instance, uint32_t *pu4_buf)
Read data from rx fifo.
- 参数:
dev_instance – [in] return value of drv_spi_init()
pu4_buf – [in] pointer to read data
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_write_data_fifo(uint32_t dev_instance, uint32_t write_data)
Write data to tx fifo.
- 参数:
dev_instance – [in] return value of drv_spi_init()
write_data – [in] write_data pointer to data to write
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_read_data_start(uint32_t dev_instance)
host starts reading data from slave
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_write_data_start(uint32_t dev_instance)
host starts writing data to slave
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_wait_read_done(uint32_t dev_instance)
wait read data done
函数是阻塞式等待slave响应,不能与drv_sdio_interrupt_callback_register进行混用
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_wait_write_done(uint32_t dev_instance)
wait read data done
函数是阻塞式等待host发送数据完成,,不能与drv_sdio_interrupt_callback_register进行混用
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
int32_t drv_sdio_interrupt_callback_register(uint32_t dev_instance, pfunc_sdio_cb_t pfn_cb, void *pv_arg)
register callback to sdio drvier
注册了此函数,sdio的操作结果将通过回调函数通知用户。 此函数不能drv_sdio_wait_write_done(),drv_sdio_wait_read_done(),drv_sdio_wait_cmd_rsp()进行混用
- 参数:
dev_instance – [in] return value of drv_spi_init()
pfn_cb – [in] callback function for async recevie. it can be NULL if you do not want async recevie
pv_arg – [in] callback function paramters
- 返回值:
0 – success [BK_RET_OK]
other – fail
- 返回:
result
-
uint32_t drv_sdio_get_rx_fifo_addr(uint32_t dev_instance)
get rx fifo address
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回:
address
-
uint32_t drv_sdio_get_tx_fifo_addr(uint32_t dev_instance)
get tx fifo address
- 参数:
dev_instance – [in] return value of drv_spi_init()
- 返回:
address
-
int32_t drv_sdio_set_tx_empty(uint32_t dev_instance, uint32_t enable)
-
int32_t drv_sdio_wait_tx_fifo_empty(uint32_t dev_instance)
-
int32_t drv_sdio_sd_reset(uint32_t dev_instance)
-
int32_t drv_sdio_clear_wr_end_int(uint32_t dev_instance)
Structures
-
struct sdio_cmd_config_t
Public Members
-
uint32_t cmd_index
sdio command index, between 0 and 63
-
uint32_t argument
sdio command argument
-
sdio_cmd_rsp_e response
sdio command response type
-
uint32_t wait_rsp_timeout
sdio wait for slave command response timeout
-
bool crc_check
sdio whether need to check slave response crc value
-
uint32_t cmd_index
-
struct sdio_data_config_t
Public Members
-
sdio_data_direction_e data_dir
sdio data direction
-
bool multi_block_flag
sdio received data multiple blocks true: multiple blocks flash: single block
-
uint32_t data_block_size
sdio data block size
-
uint32_t data_timeout
sdio data timeout
-
uint32_t data_len
sdio data length
-
sdio_bus_width_e bus_width
sdio data bus width
-
sdio_data_byte_sel_e data_byte_sel
sdio wires transfer data with little-endian or big-endian
-
sdio_data_direction_e data_dir
Macros
-
SDIO_DEV_NUM
Type Definitions
-
typedef void (*pfunc_sdio_cb_t)(int32_t status, sdio_op_type_e op_type, void *param)
Enumerations
-
enum sdio_response_e
Values:
-
enumerator SDIO_RSP0
sdio response regiseter 0
-
enumerator SDIO_RSP1
sdio response regiseter 1
-
enumerator SDIO_RSP2
sdio response regiseter 2
-
enumerator SDIO_RSP3
sdio response regiseter 3
-
enumerator SDIO_RSP0
-
enum sdio_cmd_rsp_e
Values:
-
enumerator SDIO_CMD_RSP_NONE
sdio not need slave respond the command
-
enumerator SDIO_CMD_RSP_SHORT
sdio need slave long response
-
enumerator SDIO_CMD_RSP_LONG
sdio need slave short response
-
enumerator SDIO_CMD_RSP_NONE
-
enum sdio_data_direction_e
Values:
-
enumerator SDIO_DATA_DIR_RD
sdio data direction read
-
enumerator SDIO_DATA_DIR_WR
sdio data direction write
-
enumerator SDIO_DATA_DIR_RD
-
enum sdio_clock_src_e
Values:
-
enumerator SDIO_CLK_XTAL
sdio clk source, XTAL 26M
-
enumerator SDIO_CLK_DPLL
sdio clk source, DPLL top:336M
-
enumerator SDIO_CLK_XTAL
-
enum sdio_clock_div_e
Values:
-
enumerator SDIO_CLK_DIV1
sdio clk source, division 1
-
enumerator SDIO_CLK_DIV2
sdio clk source, division 2
-
enumerator SDIO_CLK_DIV3
sdio clk source, division 3
-
enumerator SDIO_CLK_DIV4
sdio clk source, division 4
-
enumerator SDIO_CLK_DIV5
sdio clk source, division 5
-
enumerator SDIO_CLK_DIV6
sdio clk source, division 6
-
enumerator SDIO_CLK_DIV7
sdio clk source, division 7
-
enumerator SDIO_CLK_DIV8
sdio clk source, division 8
-
enumerator SDIO_CLK_DIV1
-
enum sdio_bus_width_e
Values:
-
enumerator SDIO_BUS_WIDTH_1LINE
sdio bus width 1 line
-
enumerator SDIO_BUS_WIDTH_4LINE
sdio bus width 4 line
-
enumerator SDIO_BUS_WIDTH_1LINE