通过 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 响应。整体数据流如下图所示:

../../rst_rtos/0_at_command/figures/sdio_at_data_flow.svg

备注

  • 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 端发送和接收数据的流程差异,接收数据的协议开销更大,所以下行速率会明显低于上行速率。