串口传输速度
UART transfer speed
我想检查一下我的理解是否正确,但是我找不到任何准确的解释或例子。假设我将 UART 通信设置为 57600 bits/second 并且我正在传输 8 位字符。假设我选择没有奇偶校验,因为我需要一个起始位和一个停止位,这意味着基本上为了传输一个字符,我需要传输 10 位。这是否意味着传输速度将是 5760 chars/second?
你的计算基本正确。
但是 5760 chars/second 将是最大传输速率。由于它是异步的 link,UART 发送器允许空闲字符帧之间的线路。
IOW 波特率仅适用于字符帧的位。
传输字符的速率取决于是否有数据可用于保持传输器 busy/saturated.
例如,如果微控制器使用编程 I/O(使用轮询或中断)而不是 DMA 进行 UART 传输,则高优先级中断可能会停止传输并在帧之间引入延迟。
Baudrate = 57600
Time for 1 Bit: 1 / 57600 = 17,36 us
Time for a frame with 10 Bit = 173,6 us
this means max. 1 / 1736 us = 5760 frames(characters) / s**
我想检查一下我的理解是否正确,但是我找不到任何准确的解释或例子。假设我将 UART 通信设置为 57600 bits/second 并且我正在传输 8 位字符。假设我选择没有奇偶校验,因为我需要一个起始位和一个停止位,这意味着基本上为了传输一个字符,我需要传输 10 位。这是否意味着传输速度将是 5760 chars/second?
你的计算基本正确。
但是 5760 chars/second 将是最大传输速率。由于它是异步的 link,UART 发送器允许空闲字符帧之间的线路。
IOW 波特率仅适用于字符帧的位。
传输字符的速率取决于是否有数据可用于保持传输器 busy/saturated.
例如,如果微控制器使用编程 I/O(使用轮询或中断)而不是 DMA 进行 UART 传输,则高优先级中断可能会停止传输并在帧之间引入延迟。
Baudrate = 57600
Time for 1 Bit: 1 / 57600 = 17,36 us
Time for a frame with 10 Bit = 173,6 us
this means max. 1 / 1736 us = 5760 frames(characters) / s**