SDIF
简要说明
SDIF(SD Interface)是在SD内存卡接口的基础上发展起来的接口,接口兼容以前的SD内存卡,并且可以连接SD接口的设备。同时支持高速、低速模式。
接口描述
drv_sdif_initialize
sdif_handle_t drv_sdif_initialize(uint32_t idx, sdif_callback_t *callback,
void *user_data);
功能描述:
- 通过设备号初始化对应的SDIF实例,返回SDIF实例的句柄。
参数:
typedef struct {
void (*card_inserted)(uint32_t idx, void *user_data);
void (*card_removed)(uint32_t idx, void *user_data);
void (*sdif_interrupt)(uint32_t idx, void *user_data);
void (*dma_des_unavailable)(uint32_t idx, void *user_data);
void (*command_reload)(uint32_t idx, void *user_data);
void (*transfer_complete)(uint32_t idx, void *state, int32_t status, void *user_data);
} sdif_callback_t;
sdif_callback_t:
名称 |
定义 |
备注 |
card_inserted |
SD卡或设备插入触发回调 |
idx:设备号;user_data:用户注册的回调函数参数。 |
card_removed |
SD卡或设备被拔出触发回调 |
同上 |
sdif_interrupt |
SD卡或 设备产生中断信号 |
同上 |
dma_des_unavailable |
DMA描述符不可用 |
同上 |
command_reload |
命令缓存已满,需要重新执行 |
同上 |
transfer_complete |
发送完毕 |
idx:设备号;user_data:用户回调函数参数;state:;status:;user_data:; |
drv_sdif_uninitialize
void drv_sdif_uninitialize(sdif_handle_t handle);
drv_sdif_config
void drv_sdif_config(sdif_handle_t handle, sdif_config_t *config);
- 功能描述:
- 参数:
handle
: SDIF 实例句柄。
config
: SDIF 配置参数,见sdif_config_t定义。
- 返回值:
sdif_config_t:
名称 |
定义 |
备注 |
response_timeout |
命令响应超时值 |
|
card_det_debounce_clock |
用于检测设备接口反跳的时钟计数,典型值为5-25ms |
|
endian_mode |
定义endian模式,此字段实际上不在此模块中使用,保持与中间件兼容 |
|
data_timeout |
数据超时时间 |
drv_sdif_get_capabilities
void drv_sdif_get_capabilities(sdif_handle_t handle, sdif_capability_t *capability);
- 功能描述:
- 参数:
handle
: SDIF 实例句柄。
capability
: SDIF 功能列表,见sdif_capability_t定义。
- 返回值:
sdif_capability_t:
名称 |
定义 |
备注 |
sd_version |
支持的sd卡/sdif 的版本 |
|
mmc_version |
支持的emmc 卡的版本 |
|
max_block_length |
最大块长度(bytes) |
|
max_block_count |
可以传输的最大字节数 |
|
flags |
指示支持信息的功能标志,见sdif_capability_flag_e定义,对应位为1表示支持 |
sdif_capability_flag_e:
名称 |
定义 |
备注 |
SDIF_SUPPORT_HIGH_SPEED |
高速功能 |
|
SDIF_SUPPORT_DMA_SPEED |
DMA功能 |
|
SDIF_SUPPORT_USPEND_RESUME |
暂停/恢复 |
|
SDIF_SUPPORT_V330 |
3.3v电压 |
|
SDIF_SUPPORT_4BIT |
4bit模式 |
|
SDIF_SUPPORT_8BIT |
8bit模式 |
drv_sdif_power_control
int32_t drv_sdif_power_control(sdif_handle_t handle, csi_power_stat_e state);
- 功能描述:
- 参数:
handle
: SDIF 实例句柄。
state
: 功率状态设置,见csi_power_stat_e定义。
- 返回值:
csi_power_stat_e:
名字 |
定义 |
备注 |
DRV_POWER_OFF |
关电源状态 |
|
DRV_POWER_LOW |
低电平状态 |
|
DRV_POWER_FULL |
全电源状态 |
|
DRV_POWER_SUSPEND |
挂起电源状态 |
drv_sdif_send_command
int32_t drv_sdif_send_command(sdif_handle_t handle, sdif_command_t *cmd,
uint32_t retries);
- 功能描述:
- 参数:
handle
: SDIF 实例句柄。
cmd
: 发送的命令,见sdif_command_t定义。
retries
: 命令重试次数。
- 返回值:
sdif_command_t:
名称 |
定义 |
备注 |
index |
命令索引 |
|
argument |
命令参数 |
|
response |
命令的响应 |
|
type |
命令类型 |
|
response_type |
命令响应类型 |
|
flags |
命令标志 |
|
resopnse_error_flags |
命令响应标志 |
drv_sdif_transfer
int32_t drv_sdif_transfer(sdif_handle_t handle, sdif_dma_config_t *dma_config, sdif_transfer_t *transfer);
- 功能描述:
- SDIF传输函数,在轮询/非阻塞模式下传输 数据/指令。
- 参数:
handle
: SDIF 实例句柄。
dma_config
: dma的参数配置,此参数为NULL使用轮询发送,配置DMA参数使用dma发送,参数见sdif_dma_config_t定义。
transfer
: sdif传输配置,见sdif_transfer_t定义。
- 返回值:
sdif_dma_config_t:
名称 |
定义 |
备注 |
enable_fix_burst_len |
启动修正burst len |
|
mode |
dma模式 |
|
dma_des_buffer_start_addr |
内部DMA描述符启动地址 |
|
dma_des_buffer_len |
内部DMA描述符缓存区长度 |
|
dma_dws_skip_len |
定义描述符跳过长度,该字段的两个描述符之间的长度对于双DMA模式是特殊的 |
sdif_transfer_t:
名称 |
定义 |
备注 |
data |
传输的数据,见sdif_data_t定义 |
|
command |
传输的命令,见sdif_command_t定义 |
sdif_data_t:
名称 |
定义 |
备注 |
stream_transfer |
指示是否是一个流数据传输命令 |
|
enable_auto_command12 |
当数据传输结束时,请指示是否自动停止发送 |
|
enable_ignore_error |
指示传输中是否启动忽略错误 |
|
block_size |
块大小 |
|
block_count |
块计数 |
|
rx_date_buffer |
接收数据缓存区 |
|
tx_data_buffer |
发送数据缓存区 |
drv_sdif_transfer_abort
void drv_sdif_transfer_abort(sdif_handle_t handle);
drv_sdif_bus_width
void drv_sdif_bus_width(sdif_handle_t handle, sdif_bus_width_e bus_width);
- 功能描述:
- 参数:
handle
: SDIF 实例句柄。
bus_width
: sdif设置总线宽度,见bus_width定义。
- 返回值:
名称 |
定义 |
备注 |
SDIF_BUS_1BIT_WIDTH |
1bit总线宽度、1bit模式和4bit模式共享一个寄存器位 |
|
SDIF_BUS_4BIT_WIDTH |
4bit模式 |
|
SDIF_BUS_8BIT_WIDTH |
8bit模式 |
drv_sdif_set_clock
uint32_t drv_sdif_set_clock(sdif_handle_t handle, uint32_t target_hz);
- 功能描述:
- 参数:
handle
: SDIF 实例句柄。
target_hz
: 设置时钟频率。
- 返回值:
drv_sdif_get_handle
sdif_handle_t drv_sdif_get_handle(uint32_t idx);
drv_sdif_get_idx
uint32_t drv_sdif_get_idx(sdif_handle_t handle);