串口收发器接口与定时器详解
1. 串口收发器接口概述
在某些情况下,CPU 需要使用其串行 I2C 或 SPI 接口与 I/O 设备进行通信。串行接口由发送器和接收器组成,发送器用于向 I/O 设备发送串行数据,接收器则在单比特总线上接收来自同一设备的串行数据。
2. 发送器
发送器的数据路径接收来自 CPU 的 32 位数据,存储在两个缓冲区之一,然后从 TXOut 端口串行发送出去。每个缓冲区本质上是一个移位寄存器。当一个 32 位数据包加载到移位寄存器后,位从最低有效位开始向最高有效位移动,直到所有 32 位都发送出去。根据 I/O 设备在接收端使用的总线协议,也可以反向发送串行数据。
发送器采用双缓冲方案,以克服总线流量问题,如访问系统主内存时的长时间等待。如果每次特定缓冲区需要数据时,在主内存数据到达之前有相应的等待期,单缓冲区也可能足够。访问主内存后,将 32 位数据存储到发送器缓冲区之一只需一个周期,而从特定缓冲区流式传输所有 32 位则需要 32 个连续的时钟周期。发送串行数据使用的时钟可能根据设计约束而较慢。
发送器的控制信号包括:
- PassTxBuf:用于 2 - 1 MUX 的控制信号,决定何时切换缓冲区输出。
- LoadTxBuf0 和 LoadTXBuf1:分别决定何时加载第一个和第二个缓冲区。
- ShiftTXBuf0 和 ShiftTXBuf1:分别控制从缓冲区 0 和缓冲区 1 开始和结束串行数据移位。
- CSTX:发送器的片选输入端口,只要系统使用发送器,它就保持逻辑 1。
发送器的工作流程如下:
1. 周期 1:发送器接收