AirLink物理层描述
当前支持2个模式, SPI和UART, 将来可能添加更多模式, 例如SDIO, I2C
SPI主从模式
- 以其中一端作为SPI主机, 另一端作为SPI从机
- 管脚包括: SPI协议所需要(CLK/MISO/MOSI/CS), 额外的RDY/IRQ脚
由于不同平台的SPI从机支持的波特率不同, 调试时务必协商好两端的SPI速度
管脚描述:
- CLK 主机提供时钟
- MOSI 主机输出数据到从机
- MISO 从机输出数据到主机
- CS 提供片选信号, 拉低有效
- RDY 从机就绪信号, 拉底有效, 若RDY为高电平, 不可进行SPI通信
- IRQ 从机数据通知主机, 拉低有效, 可选
支持轮询和中断模式, 若IRQ不选用, 则为轮询模式, 轮询周期默认5ms, 可配置
SPI数据, 当前固定收发长度是 1600 字节, 发送数据不足时,填0xFF或0x00均可.
SPI帧数据描述
uint8_t [1600]; // 固定收发1600字节, 通过链路层
基本时序
- SPI主机拉低CS
- SPI主机等待从机拉低RDY脚
- SPI主机开始全双工通信, 直至传输完1600字节
- SPI主机拉高CS
数据处理:
- 基于SPI的CS高低电平, 自然实现包的整体分割
- 通过查找到magic的位置后, 裁剪后返回到链路层
UART模式
- 两端是对等的UART通信, 必须使用相同的波特率, 停止位, 校验位, 通信期间不支持切换
- 推荐波特率为2M, Air780E/EPM等可支持6M
管脚描述:
A设备与B设备, 通过UART交叉连接, 确保电平一致, 稳定共地
- A UART TX --> B UART RX
- A UART RX <-- B UART TX
- IRQ 从机数据通知主机, 拉低有效, 可选
数据处理:
- 所有链路层数据, 均按0x7E规则进行转换
- 包头为 0x7E, 包尾是 0x7E
- 包内数据, 若出现 0x7E, 转义为 2字节的 0x7D 0x01, 若出现 0x7D, 转义为 0x7D 0x02
- 不符合转义规则的数据, 抛弃
- 单个链接层数据包, 最大1600字节(转义前, 即未编码的)