SDIO
SDIO Slave 模式下 WS63 作为从设备通过 SDIO 总线与主机通信。物理层使用 6 线(CLK + CMD + DATA0~DATA3),所有传输由主机发起,从机响应。
提供消息机制(sched_msg/sync_msg/process_msg)和完整的中断回调覆盖(读/写/消息/复位)。典型场景:WiFi/BT 模组通过 SDIO 向应用处理器上报数据,速率可达数十 MB/s。
头文件清单
接口清单
Functions
uapi_sdio_slave_init
头文件清单
功能说明
- 初始化指定SDIO从设备总线,完成硬件资源配置与中断注册
- 初始化成功后SDIO从设备进入工作状态,可响应Host端读写操作
- 调用该接口前需确保SDIO对应引脚已通过pinctrl完成复用配置
前置条件
- SDIO对应引脚已通过pinctrl完成复用配置
- SDIO硬件资源已就绪
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 初始化成功 Other 其他错误码,参考errcode_t 执行失败
uapi_sdio_slave_deinit
头文件清单
功能说明
- 去初始化SDIO从设备,释放硬件资源与中断注册
- 调用后SDIO从设备停止工作,不再响应Host端操作
- 与uapi_sdio_slave_init配对使用
前置条件
- SDIO从设备已通过uapi_sdio_slave_init初始化完成
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
uapi_sdio_slave_reinit
头文件清单
功能说明
- 重新初始化SDIO从设备,用于设备异常恢复或配置变更后重新建立通信
- 调用后SDIO从设备重新进入工作状态
- 适用于SDIO通信异常后需要重新建立连接的场景
前置条件
- SDIO从设备已通过uapi_sdio_slave_init初始化完成
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 重新初始化成功 Other 其他错误码,参考errcode_t 执行失败
uapi_sdio_slave_soft_reset
头文件清单
功能说明
- 复位SDIO IP芯片,将SDIO控制器恢复到初始状态
- 软复位后SDIO控制器寄存器恢复默认值,需重新初始化
- 适用于SDIO控制器异常需硬件级复位的场景
前置条件
- SDIO从设备已初始化
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 复位成功 Other 其他错误码,参考errcode_t 复位失败
uapi_sdio_slave_register_callback
头文件清单
功能说明
- 注册SDIO中断回调函数,当Host端发起读写操作、消息接收或软复位时触发对应回调
- 通过sdio_callback_func_t结构体指定各类回调函数
- 回调函数在中断上下文中执行,禁止在回调中执行阻塞操作
前置条件
- SDIO从设备已初始化
- cb_func指针不为NULL且指向已分配的回调函数结构体
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 cb_func const sdio_callback_func_t* 回调函数结构体指针,参考sdio_callback_func_t 非NULL
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 注册成功 Other 其他错误码,参考errcode_t 注册失败
uapi_sdio_slave_complete_send
void uapi_sdio_slave_complete_send(sdio_bus_t bus, uint32_t admatable_addr, uint32_t data_len, bool is_complete)
头文件清单
功能说明
- 配置EDMA描述符结束标志,标记数据发送是否完成
- 通过ADMA表地址和数据长度配置EDMA传输描述符
- is_complete为true时标记本次发送为最后一帧数据
前置条件
- SDIO从设备已初始化
- admatable_addr指向有效的ADMA描述符表
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 admatable_addr uint32_t ADMA描述符表地址 有效的ADMA表地址 data_len uint32_t 发送数据长度 大于0 is_complete bool 是否为最后一帧发送标志 true/false
uapi_sdio_slave_set_pad_admatab
void uapi_sdio_slave_set_pad_admatab(sdio_bus_t bus, uint32_t admatable_addr, uint32_t pad_len, uint32_t data_len, bool is_complete)
头文件清单
功能说明
- 配置数据对齐后的ADMA表,用于处理数据长度非对齐情况下的ADMA描述符
- pad_len指定对齐填充长度,data_len指定实际数据长度
- is_complete为true时标记本次发送为最后一帧数据
前置条件
- SDIO从设备已初始化
- admatable_addr指向有效的ADMA描述符表
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 admatable_addr uint32_t ADMA描述符表地址 有效的ADMA表地址 pad_len uint32_t 对齐填充长度 大于等于0 data_len uint32_t 实际数据长度 大于0 is_complete bool 是否为最后一帧发送标志 true/false
uapi_sdio_slave_write_extend_info
头文件清单
功能说明
- 写SDIO扩展信息,将扩展功能结构体数据写入SDIO扩展寄存器区域
- 用于配置SDIO从设备与Host之间的扩展通信参数
- 写入后Host端可通过SDIO扩展寄存器读取配置信息
前置条件
- SDIO从设备已初始化
- extend_info指针不为NULL且指向有效的扩展功能结构体
- CONFIG_SDIO_EXTEND_INFO宏已定义
Kconfig
配置项 宏类型 说明 默认值 CONFIG_SDIO_EXTEND_INFO 功能宏 支持SDIO扩展信息功能 n
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 extend_info const sdio_extendfunc_t* 扩展功能结构体指针,参考sdio_extendfunc_t 非NULL
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 写入成功 Other 其他错误码,参考errcode_t 写入失败
uapi_sdio_slave_get_extend_info
头文件清单
功能说明
- 获取SDIO扩展区配置信息,读取SDIO扩展寄存器区域的当前配置
- 通过输出参数返回扩展功能结构体数据
- 用于查询SDIO从设备与Host之间的扩展通信参数
前置条件
- SDIO从设备已初始化
- extend_info指针不为NULL且指向已分配的内存
- CONFIG_SDIO_EXTEND_INFO宏已定义
Kconfig
配置项 宏类型 说明 默认值 CONFIG_SDIO_EXTEND_INFO 功能宏 支持SDIO扩展信息功能 n
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
出参
名称 数据类型 输出说明 extend_info sdio_extendfunc_t* 扩展功能结构体指针,参考sdio_extendfunc_t
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 获取成功 Other 其他错误码,参考errcode_t 获取失败
uapi_sdio_slave_prepare_send_data
errcode_t uapi_sdio_slave_prepare_send_data(sdio_bus_t bus, uint32_t admatable_addr, uint32_t data_len, uint16_t msg, bool is_complete)
头文件清单
功能说明
- 启动数据发送,配置ADMA描述符表并通知Host端有数据待读取
- 同时指定消息ID,Host端通过消息ID识别数据类型
- is_complete为true时标记本次发送为最后一帧数据
前置条件
- SDIO从设备已初始化
- admatable_addr指向有效的ADMA描述符表
- msg为有效的消息ID
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 admatable_addr uint32_t ADMA描述符表地址 有效的ADMA表地址 data_len uint32_t 发送数据长度 大于0 msg uint16_t 消息ID 0~31 is_complete bool 是否为最后一帧发送标志 true/false
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 发送准备完成 Other 其他错误码,参考errcode_t 准备失败
uapi_sdio_slave_set_admatab
void uapi_sdio_slave_set_admatab(sdio_bus_t bus, uint32_t admatable_addr, uint32_t data_len, uint16_t msg, bool is_complete)
头文件清单
功能说明
- 设置ADMA传输通道,配置ADMA描述符表、数据长度和消息ID
- 与uapi_sdio_slave_prepare_send_data类似,但不触发发送通知
- 适用于预先配置ADMA传输通道后再统一调度发送的场景
前置条件
- SDIO从设备已初始化
- admatable_addr指向有效的ADMA描述符表
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 admatable_addr uint32_t ADMA描述符表地址 有效的ADMA表地址 data_len uint32_t 发送数据长度 大于0 msg uint16_t 消息ID 0~31 is_complete bool 是否为最后一帧发送标志 true/false
uapi_sdio_slave_sched_msg
头文件清单
功能说明
- 调度SDIO挂起消息,将指定消息ID加入挂起队列并通知Host
- Host端收到通知后可读取对应消息的数据
- 适用于已通过uapi_sdio_slave_set_admatab配置好传输通道后调度发送
前置条件
- SDIO从设备已初始化
- msg为有效的消息ID
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 msg uint16_t 消息ID 0~31
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 调度成功 Other 其他错误码,参考errcode_t 调度失败
uapi_sdio_slave_sync_msg
头文件清单
功能说明
- 将消息加入消息队列并发送,同步等待Host端确认接收
- timeout指定同步等待超时时间,超时后返回错误码
- 适用于需要确认Host端已接收消息的同步通信场景
前置条件
- SDIO从设备已初始化
- msg为有效的消息ID
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 msg uint16_t 消息ID 0~31 timeout uint32_t 同步等待超时时间 大于0
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 消息同步发送成功 Other 其他错误码,参考errcode_t 同步发送失败或超时
uapi_sdio_slave_send_msg_ack
头文件清单
功能说明
- 发送指定消息ACK,通知Host端该消息已被Device端确认处理
- 用于Host-Device消息确认机制
- 适用于Host端发送消息后Device端需回复确认的场景
前置条件
- SDIO从设备已初始化
- msg为有效的消息ID
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 msg uint16_t 消息ID 0~31
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 ACK发送成功 Other 其他错误码,参考errcode_t ACK发送失败
uapi_sdio_slave_process_msg
头文件清单
功能说明
- 清除挂起消息并加入新消息发送,用于消息处理流程
- 先清除当前挂起的指定消息,再将新消息加入发送队列
- 适用于消息状态切换场景
前置条件
- SDIO从设备已初始化
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 msg uint32_t 消息ID 0~31
uapi_sdio_slave_is_pending_msg
头文件清单
功能说明
- 判断指定消息是否处于挂起状态
- 挂起状态表示消息已加入队列但尚未被Host端读取
- 用于查询消息发送流程中的当前状态
前置条件
- SDIO从设备已初始化
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 msg uint32_t 消息ID 0~31
返回值
- 返回类型:bool
返回值 文字含义 触发场景 true 消息处于挂起状态 指定消息已挂起 false 消息未处于挂起状态 指定消息未挂起
uapi_sdio_slave_is_sending_msg
头文件清单
功能说明
- 判断指定消息是否处于发送状态
- 发送状态表示消息正在通过SDIO总线传输中
- 用于查询消息发送流程中的当前状态
前置条件
- SDIO从设备已初始化
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 msg uint32_t 消息ID 0~31
返回值
- 返回类型:bool
返回值 文字含义 触发场景 true 消息处于发送状态 指定消息正在发送 false 消息未处于发送状态 指定消息未在发送
uapi_sdio_slave_register_notify_message_callback
void uapi_sdio_slave_register_notify_message_callback(sdio_bus_t bus, notify_host_event_t event_callback)
头文件清单
功能说明
- 注册通知Host消息事件回调,当SDIO从设备有消息或数据需要通知Host时触发
- 回调函数类型为notify_host_event_t,参数为SDIO总线编号
- 注册后Device端发送消息时自动通过回调通知Host
前置条件
- SDIO从设备已初始化
- event_callback为有效的回调函数指针
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 event_callback notify_host_event_t 通知Host事件回调函数,参考notify_host_event_t 非NULL
uapi_sdio_slave_read_retry_when_read_err
头文件清单
功能说明
- 读错误时重试读取,当Host端读数据发生错误时由Device端调用
- 重新配置ADMA传输通道以允许Host端重新发起读操作
- 适用于Host端读数据校验失败后需要重试的场景
前置条件
- SDIO从设备已初始化
- Host端读数据发生错误
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
uapi_sdio_slave_init_no_wait
头文件清单
功能说明
- 非阻塞初始化SDIO从设备,初始化后不等待Host端就绪
- 与uapi_sdio_slave_init的区别在于不阻塞等待Host端卡就绪和Function1就绪
- 适用于Host端初始化时序不确定或异步初始化场景
前置条件
- SDIO对应引脚已通过pinctrl完成复用配置
- SDIO硬件资源已就绪
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 非阻塞初始化成功 Other 其他错误码,参考errcode_t 初始化失败
uapi_sdio_slave_host_clk_ready
头文件清单
功能说明
- 判断Host端时钟是否就绪
- Host端时钟就绪后Device端可正常进行SDIO数据传输
- 适用于非阻塞初始化后轮询Host端状态的场景
前置条件
- SDIO从设备已初始化
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
返回值
- 返回类型:bool
返回值 文字含义 触发场景 true Host时钟就绪 Host端时钟已就绪 false Host时钟未就绪 Host端时钟未就绪
uapi_sdio_slave_get_status
头文件清单
功能说明
- 获取当前SDIO通道的状态信息,包括睡眠允许状态、发送状态、睡眠状态和工作状态
- 通过输出参数返回状态信息结构体
- 用于查询SDIO从设备的运行状态
前置条件
- SDIO从设备已初始化
- satus_info指针不为NULL且指向已分配的内存
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
出参
名称 数据类型 输出说明 satus_info sdio_status_info_t* 存储状态信息的缓冲区指针,参考sdio_status_info_t
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 获取成功 Other 其他错误码,参考errcode_t 获取失败
uapi_sdio_slave_set_status
头文件清单
功能说明
- 设置当前SDIO通道的状态信息,包括睡眠允许状态、发送状态、睡眠状态和工作状态
- 通过输入参数指定目标状态信息结构体
- 用于配置SDIO从设备的运行状态
前置条件
- SDIO从设备已初始化
- satus_info指针不为NULL且指向有效的状态信息结构体
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 satus_info const sdio_status_info_t* 指向存储状态信息的缓冲区,参考sdio_status_info_t 非NULL
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 设置成功 Other 其他错误码,参考errcode_t 设置失败
uapi_sdio_slave_memory_init
头文件清单
功能说明
- SDIO内存初始化函数,初始化SDIO从设备所需的内存资源
- 用于SDIO从设备启动时或重置后重新分配内存
- 调用后SDIO从设备内存空间完成初始化
前置条件
- SDIO硬件资源已就绪
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
uapi_sdio_slave_get_info
头文件清单
功能说明
- 获取SDIO状态信息,包括电压切换标志、Host到Device消息标志、重初始化次数、GPIO中断次数、SDIO状态和通道信息等
- 返回指向sdio_info_t结构体的指针
- 用于查询SDIO从设备的综合运行信息
前置条件
- SDIO从设备已初始化
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线
返回值
- 返回类型:sdio_info_t*
返回值 文字含义 触发场景 非NULL指针 sdio_info_t结构体指针 获取成功 NULL 空指针 获取失败或总线无效
参考案例
include/driver/sdio/sdio_slave.h#uapi_sdio_slave_get_info
uapi_sdio_slave_set_extend_val_info
头文件清单
功能说明
- 写扩展信息指定偏移量的值,向SDIO扩展信息区域的指定地址偏移量写入数据
- 用于配置SDIO从设备扩展寄存器区域的通信参数
- CONFIG_SDIO_EXTEND_INFO宏未定义时此接口不可用
前置条件
- SDIO从设备已初始化
- CONFIG_SDIO_EXTEND_INFO宏已定义
Kconfig
配置项 宏类型 说明 默认值 CONFIG_SDIO_EXTEND_INFO 功能宏 支持SDIO扩展信息功能 n
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 offset uint32_t 地址偏移量 有效扩展信息区域偏移 val uint32_t 设置的值 32位无符号整数
uapi_sdio_slave_get_extend_val_info
头文件清单
功能说明
- 获取扩展信息指定偏移量的值,从SDIO扩展信息区域的指定地址偏移量读取数据
- 用于查询SDIO从设备扩展寄存器区域的配置参数
- CONFIG_SDIO_EXTEND_INFO宏未定义时此接口不可用
前置条件
- SDIO从设备已初始化
- CONFIG_SDIO_EXTEND_INFO宏已定义
Kconfig
配置项 宏类型 说明 默认值 CONFIG_SDIO_EXTEND_INFO 功能宏 支持SDIO扩展信息功能 n
入参
名称 参数类型 详细说明 约束取值范围 bus sdio_bus_t SDIO总线编号 由sdio_porting.h定义的有效SDIO总线 offset uint32_t 地址偏移量 有效扩展信息区域偏移
返回值
- 返回类型:uint32_t
返回值 文字含义 触发场景 扩展信息值 偏移量对应的值 读取成功
Type definitions
notify_host_event_t
notify_host_event_t
使用说明:用于uapi_sdio_slave_register_notify_message_callback接口的event_callback参数,当SDIO从设备有消息或数据需要通知Host时通过此回调触发事件通知
Enumerations
sdio_channel_t
sdio_channel_t
typedef enum {
SDIO_CHANNEL_ERR = 0x0, /*!< SDIO错误 */
SDIO_CHANNEL_RESET, /*!< 重置SDIO */
SDIO_CHANNEL_INIT, /*!< 初始化SDIO */
SDIO_CHANNEL_SLEEP, /*!< SDIO睡眠状态 */
SDIO_CHANNEL_WAKE, /*!< 唤醒SDIO */
SDIO_CHANNEL_WORK, /*!< SDIO工作状态 */
SDIO_CHANNEL_BUTT /*!< SDIO状态枚举数 */
} sdio_channel_t;
枚举成员 取值 描述 SDIO_CHANNEL_ERR 0x0 SDIO错误状态 SDIO_CHANNEL_RESET 0x1 重置SDIO状态 SDIO_CHANNEL_INIT 0x2 初始化SDIO状态 SDIO_CHANNEL_SLEEP 0x3 SDIO睡眠状态 SDIO_CHANNEL_WAKE 0x4 唤醒SDIO状态 SDIO_CHANNEL_WORK 0x5 SDIO工作状态 SDIO_CHANNEL_BUTT 0x6 SDIO状态枚举总数(无效值,用于边界校验)
Structures
sdio_msg_t
sdio_msg_t
typedef struct sdio_msg {
uint32_t pending_msg; /*!< 挂起中的消息 */
uint32_t sending_msg; /*!< 发送中的消息 */
} sdio_msg_t;
成员说明:
成员名称 数据类型 描述 pending_msg uint32_t 挂起中的消息 sending_msg uint32_t 发送中的消息
sdio_status_info_t
sdio_status_info_t
typedef struct sdio_status_info {
uint8_t allow_sleep; /*!< 允许睡眠 */
uint8_t tx_status; /*!< tx状态 */
uint8_t sleep_status; /*!< 睡眠状态 */
sdio_channel_t work_status; /*!< 工作状态 */
} sdio_status_info_t;
成员说明:
成员名称 数据类型 描述 allow_sleep uint8_t 允许睡眠标志 tx_status uint8_t 发送状态 sleep_status uint8_t 睡眠状态 work_status sdio_channel_t 工作状态,参考sdio_channel_t
sdio_extendfunc_t
sdio_extendfunc_t
#if defined(CONFIG_SDIO_EXTEND_INFO)
typedef struct sdio_extendfunc {
uint32_t int_stat;
uint32_t msg_stat;
uint32_t xfer_count;
uint32_t credit_info;
uint8_t comm_reg[SDIO_EXTENDREG_COUNT];
int32_t valid_commreg_cnt;
int8_t commreg_isvalid;
int8_t credit_isvalid;
} sdio_extendfunc_t;
#endif
Kconfig
配置项 宏类型 说明 默认值 CONFIG_SDIO_EXTEND_INFO 功能宏 支持SDIO扩展信息功能 n
成员说明:
成员名称 数据类型 描述 int_stat uint32_t 中断状态 msg_stat uint32_t 消息状态 xfer_count uint32_t 传输计数 credit_info uint32_t 信用(credit)信息 comm_reg uint8_t[SDIO_EXTENDREG_COUNT] 通信寄存器数组,SDIO_EXTENDREG_COUNT由sdio_porting.h定义 valid_commreg_cnt int32_t 有效通信寄存器计数 commreg_isvalid int8_t 通信寄存器有效性标志 credit_isvalid int8_t 信用信息有效性标志
sdio_status_t
sdio_status_t
typedef struct sdio_status {
uint16_t rd_arg_invalid_cnt;
uint16_t wr_arg_invlaid_cnt;
uint16_t unsupport_int_cnt;
uint16_t mem_int_cnt;
uint16_t fn1_wr_over;
uint16_t fn1_rd_over;
uint16_t fn1_rd_error;
uint16_t fn1_rd_start;
uint16_t fn1_wr_start;
uint16_t fn1_rst;
uint16_t fn1_msg_rdy;
uint16_t fn1_ack_to_arm_int_cnt;
uint16_t fn1_adma_end_int;
uint16_t fn1_suspend;
uint16_t fn1_resume;
uint16_t fn1_adma_int;
uint16_t fn1_adma_err;
uint16_t fn1_en_int;
uint16_t fn1_msg_isr;
uint16_t soft_reset_cnt;
} sdio_status_t;
成员说明:
成员名称 数据类型 描述 rd_arg_invalid_cnt uint16_t 读参数无效计数 wr_arg_invlaid_cnt uint16_t 写参数无效计数 unsupport_int_cnt uint16_t 不支持中断计数 mem_int_cnt uint16_t 内存中断计数 fn1_wr_over uint16_t Function1写溢出计数 fn1_rd_over uint16_t Function1读溢出计数 fn1_rd_error uint16_t Function1读错误计数 fn1_rd_start uint16_t Function1读启动计数 fn1_wr_start uint16_t Function1写启动计数 fn1_rst uint16_t Function1复位计数 fn1_msg_rdy uint16_t Function1消息就绪计数 fn1_ack_to_arm_int_cnt uint16_t Function1 ACK到ARM中断计数 fn1_adma_end_int uint16_t Function1 ADMA结束中断计数 fn1_suspend uint16_t Function1挂起计数 fn1_resume uint16_t Function1恢复计数 fn1_adma_int uint16_t Function1 ADMA中断计数 fn1_adma_err uint16_t Function1 ADMA错误计数 fn1_en_int uint16_t Function1使能中断计数 fn1_msg_isr uint16_t Function1消息中断服务计数 soft_reset_cnt uint16_t 软复位计数
sdio_chan_info_t
sdio_chan_info_t
typedef struct sdio_chan_info {
uint32_t send_data_len;
uint16_t last_msg;
uint16_t panic_forced_timeout;
uint16_t chan_msg_cnt[D2H_MSG_COUNT];
} sdio_chan_info_t;
成员说明:
成员名称 数据类型 描述 send_data_len uint32_t 发送数据长度 last_msg uint16_t 最后一条消息 panic_forced_timeout uint16_t panic强制超时 chan_msg_cnt uint16_t[D2H_MSG_COUNT] 通道消息计数数组,D2H_MSG_COUNT由配置定义
sdio_info_t
sdio_info_t
typedef struct sdio_info {
uint8_t volt_switch_flag;
uint8_t host_to_device_msg_flag;
uint16_t reinit_times;
uint16_t gpio_int_times;
uint16_t pad;
sdio_status_t sdio_status;
sdio_chan_info_t chan_info;
sdio_msg_t sdio_msg_status;
} sdio_info_t;
成员说明:
成员名称 数据类型 描述 volt_switch_flag uint8_t 电压切换标志 host_to_device_msg_flag uint8_t Host到Device消息标志 reinit_times uint16_t 重初始化次数 gpio_int_times uint16_t GPIO中断次数 pad uint16_t 填充对齐字段 sdio_status sdio_status_t SDIO状态,参考sdio_status_t chan_info sdio_chan_info_t 通道信息,参考sdio_chan_info_t sdio_msg_status sdio_msg_t 消息状态,参考sdio_msg_t
sdio_callback_func_t
sdio_callback_func_t
typedef struct sdio_callback_func {
uint32_t (*read_start_callback)(uint32_t len, uint8_t *dma_tbl); /*!< DEVICE感知到HOST发起了读操作 */
uint32_t (*read_over_callback)(void); /*!< DEVICE感知到HOST读操作结束 */
void (*read_err_callback)(void); /*!< DEVICE感知到HOST读数据错误 */
uint32_t (*write_start_callback)(uint32_t len, uint8_t *dma_tbl); /*!< DEVICE感知到HOST发起了写操作 */
uint32_t (*write_over_callback)(void); /*!< DEVICE感知到HOST写操作结束 */
void (*process_msg_callback)(uint32_t); /*!< DEVICE接收到HOST发来的消息 */
void (*soft_rst_callback)(void); /*!< DEVICE接收到HOST发来的软复位 */
} sdio_callback_func_t;
成员说明:
成员名称 数据类型 描述 read_start_callback uint32_t ()(uint32_t len, uint8_t dma_tbl) Host发起读操作时回调,DEVICE感知到HOST发起了读操作 read_over_callback uint32_t (*)(void) Host读操作结束时回调,DEVICE感知到HOST读操作结束 read_err_callback void (*)(void) Host读数据错误时回调,DEVICE感知到HOST读数据错误 write_start_callback uint32_t ()(uint32_t len, uint8_t dma_tbl) Host发起写操作时回调,DEVICE感知到HOST发起了写操作 write_over_callback uint32_t (*)(void) Host写操作结束时回调,DEVICE感知到HOST写操作结束 process_msg_callback void (*)(uint32_t) Device接收到Host消息时回调,DEVICE接收到HOST发来的消息 soft_rst_callback void (*)(void) Device接收到Host软复位时回调,DEVICE接收到HOST发来的软复位