通过 SDIO 接口使用 AT 命令
概述
在 主控控制模式 下,为满足高性能和高吞吐量需求,可以使用 SDIO 外设接口进行数据传输。
主控设备作为 SDIO Host,AT 设备作为 SDIO Device,双方通过 SDIO 协议和特定通信格式进行 AT 命令交互。
请参考 AT 配置修改 设置 SDIO 接口。
引脚说明
SDIO 接口支持一线或四线两种模式,所需引脚如下:
一线模式(必须):CMD、CLK、DATA0、DATA1
四线模式(可选):DATA2、DATA3
GND 接地引脚
请参考 AT 配置修改 配置对应引脚组。
主控参考示例
代码仓库:https://github.com/Ameba-AIoT/ameba-rtos/tree/master/component/example/atcmd_host/atcmd_sdio_host
主控示例代码基于 STM32F429 平台,演示了 SDIO 主机与设备通信的流程,请参考 {SDK}/component/example/atcmd_host/atcmd_sdio_host/STM32/README.md
使用 Keil5 进行编译烧录。建议在正式开发前运行此代码示例,以验证连接和配置的正确性。之后,参考代码示例将其适配到特定 MCU 平台应用程序中。
在示例代码中,添加了一个 UART 任务用来接收 AT 命令并打印 AT 响应。整体数据流如下图所示:
备注
SDIO host 初始化的过程中,会配置 SDIO 协议,包括一线或四线模式、SDIO 频率等。
SDIO host 初始化需要等待 device 初始化完成后再开始。
如果发生接收或发送错误,需要 host 和 device 重新初始化 SDIO。
通信格式
通过 SDIO AT 命令传输或接收数据,需遵循以下格式规范:
Tx Descripter(16 字节) |
Data(Data Len 字节) |
Rx Descripter(16 字节) |
Data(Data Len 字节) |
字段说明:
- Tx Descripter:
发送数据的固定头,主要包含数据长度等信息。
- Rx Descripter:
接收数据的固定头,主要包含数据长度等信息。
备注
Tx/Rx Descripter 具体需要填充和识别的内容,可以参考主控示例代码的实现。
通信速率
SDIO 链路速率测试,请参考 AT+TEST 命令。
备注
由于 SDIO 协议在 host 端发送和接收数据的流程差异,接收数据的协议开销更大,所以下行速率会明显低于上行速率。