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实例的句柄。
  • 参数:

    • idx: 设备号。

    • callback: sdif实例的事件回调函数。应用可根据回调函数做相应的行为。回调函数原型定义见sdif_callback_t。

  /* \brief sdif callback functions. */
    typedef struct {
        void (*card_inserted)(uint32_t idx, void *user_data); ///< card insert call back
        void (*card_removed)(uint32_t idx, void *user_data);  ///< card remove call back      
        void (*sdif_interrupt)(uint32_t idx, void *user_data);  ///< SDIF card interrupt occurs   
        void (*dma_des_unavailable)(uint32_t idx, void *user_data); ///< DMA descriptor unavailable
        void (*command_reload)(uint32_t idx, void *user_data); ///< command buffer full,need re-load    
        void (*transfer_complete)(uint32_t idx, void *state, int32_t status, void *user_data); ///<Transfer complete callback
    } sdif_callback_t;
  • user_data:用户回调函数参数。
  • 返回值:

    • NULL: 初始化失败。
    • 其它: 实例句柄。

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);
  • 功能描述:

    • 反初始化SDIF实例。
  • 参数:

    • handle: SDIF 实例句柄。
  • 返回值:

    • 无。

drv_sdif_config

void drv_sdif_config(sdif_handle_t handle, sdif_config_t *config);
  • 功能描述:
    • SDIF实例配置。
  • 参数:
    • 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);
  • 功能描述:
    • 获取SDIF实例的功能列表。
  • 参数:
    • 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);
  • 功能描述:
    • 获取SDIF实例功率控制。
  • 参数:
    • handle: SDIF 实例句柄。
    • state: 功率状态设置,见csi_power_stat_e定义。
  • 返回值:
    • 0:成功。
    • 其他:错误码。

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);
  • 功能描述:
    • SDIF发送指令。
  • 参数:
    • handle: SDIF 实例句柄。
    • cmd: 发送的命令,见sdif_command_t定义。
    • retries: 命令重试次数。
  • 返回值:
    • 0:成功。
    • 其他:错误码。

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定义。
  • 返回值:
    • 0:成功。
    • 其他:错误码。

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);
  • 功能描述:
    • SDIF中止传输。
  • 参数:
    • handle: SDIF 实例句柄。
  • 返回值:
    • 无。

drv_sdif_bus_width

void drv_sdif_bus_width(sdif_handle_t handle, sdif_bus_width_e bus_width);
  • 功能描述:
    • SDIF设置总线宽度。
  • 参数:
    • 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);
  • 功能描述:
    • SDIF设置时钟频率。
  • 参数:
    • handle: SDIF 实例句柄。
    • target_hz: 设置时钟频率。
  • 返回值:
    • 0:成功。
    • 其他:错误码。

drv_sdif_get_handle

sdif_handle_t drv_sdif_get_handle(uint32_t idx);
  • 功能描述:
    • SDIF通过设备号获取实例句柄。
  • 参数:
    • idx: 设备号。
  • 返回值:
    • NULL:失败。
    • 其他:实例句柄。

drv_sdif_get_idx

uint32_t drv_sdif_get_idx(sdif_handle_t handle);
  • 功能描述:
    • SDIF通过实例句柄获取设备号。
  • 参数:
    • handle: SDIF 实例句柄。
  • 返回值:
    • 设备号

results matching ""

    No results matching ""