串行通信接口
以下内容仅针对TI芯片
SPI (Serial Peripheral Interface)
【总线协议】DSPI/QSPI/OSPI 与 SPI 的区别
SPI接口详细介绍
- 同步串行通信
- 常用引脚
- SCLK:时钟信号
- MOSI:数据发送(若MCU配置为Master)
- MISO:数据接收(若MCU配置为Master)
- CS:片选(低电平有效)
- 部分芯片用D0和D1取代MOSI和MISO,D0和D1支持双向(收发都行)
- 片选了才能开始数据交互
- 无论想读还是想写,都需要执行数据发送的指令,才会产生时钟信号
举个例子,假设我们要读取一个只有CLK和DOUT脚的AD芯片,此时MCU的数据发送脚实际是无用的。但是在软件上仍需要将数据发出去(数据是什么无所谓,位数和待接收的数据帧位数相同即可),这时候MCU才会产生相应位数的时钟信号,用于读取AD芯片的DOUT
- SPI的波形:极性(时钟默认是高电平还是低电平)和相位(时钟发送多久后采样)可以通过POL和PHA位配置,详见芯片技术参考手册(TRM)
UART (Universal Asynchronous Receiver-Transmitter)
- 异步串行通信(靠双方约定好的波特率实现数据对齐)
- 常用引脚
- RXD:数据接收
- TXD:数据发送
- CTS:允许发送(低电平有效),向模块表明MCU已处理完上一帧接收的数据
- RTS:请求发送(低电平有效),用于MCU判断模块是否已处理完上一帧数据
- UART中的硬件流控RTS与CTS
- TTL/RS232/RS485
这些都是接口(物理层) ,不是协议,故使用他们的代码一样,电路才不同- TTL/RS232采用单端传输(信号电压和GND),RS485是差分传输(信号正和信号负)
- RS485各方面性能优越(除了不是全双工,即同时读写),应用领域更广,比如可用于机器人多机通信。RS232只支持一对一通信
- TTL/RS232/RS485之间可以通过电路模块相互转化,也可以转化为PC常用的USB接口
- 【总线】一文看懂RS232和RS485通信总线
- 在部分TI芯片中,UART被称为SCI,详见芯片技术参考手册TRM基于C2000的软件串口(SCI)实现方法
FSI (Fast Serial Interface)
TI推出的快速串行通信接口,性能相较SPI和UART更好,可用于多控制器通信。分为两个端口FSITX和FSIRX,3根线(CLK,D0,D1)。
接线比较有意思,时钟线并不是公用的,而是设备A的TX_CLK接设备B的RX_CLK(一根线),设备A的RX_CLK接设备B的TX_CLK(另一根线)。所以如果是双机通信的话,实际上最少需要CLK线*2+DAT线*2=4根线。
详见图1 基于快速串行接口 (FSI) 的分布式多轴伺服驱动器参考设计