跳至内容

SPI / UART 传输时间

UART / SPI 的帧时间、吞吐与 CS 开销。

正在准备工具…

UART

UART 每帧包含起始位、数据位、可选校验位和停止位:

tframe=1+d+p+sb⋅n t_{\mathrm{frame}}=\frac{1+d+p+s}{b}\cdot n

dd 为数据位,pp 为校验位,ss 为停止位,nn 为字节数。9600 baud、8N1、10 字节时总位数为 100,传输时间约 10.417 ms。

SPI

SPI 的位时间由时钟决定,字节数乘数据位得到总位数:

tframe=d⋅nfclk+tCS t_{\mathrm{frame}}=\frac{d\cdot n}{f_{\mathrm{clk}}}+t_{\mathrm{CS}}

1 MHz、8 位、10 字节时数据时间为 80 µs;若每帧拉一次 CS 并保持 5 µs,总时间约 85 µs。CS 按每字节拉一次时,开销乘以字节数。

吞吐与占用

吞吐按有效数据字节除以总时间计算,不含协议头、地址和校验。总线占用要再加上帧间隔、DMA 准备和从设备处理时间。UART 的实际波特率误差会直接改变帧时间;高波特率下还要核对线缆和收发器的边沿。

边界

字节数和数据位必须为正;UART 数据位限制 5–9,SPI 数据位限制 1–32。页面不包含起始延迟、时钟拉伸、SPI 模式对应的空闲周期和多从设备切换时间。