通过串口波特率计算数据传输速率(每秒字节数)

这个是个古老的问题。。上次用串口还是本科时候,最近面试被问到了这个问题竟然整蒙了,大致是:

面试老师问:9600的波特率每秒可以传输多少个字节?

我:e...直接除以8...emmm是 1200 Byte 吧(感觉哪里不对劲,但又理直气壮感觉是对的)

面试官表示怀疑....我知道应该不是这么算的,应该得算上开始位之类的。。懵逼地进入了下一个问题 T_T

正片开始:由波特率怎么计算每秒传输的字节数呢?

在信息传输通道中,携带数据信息的信号单元叫码元,单位时间内通过信道传输的码元数称为码元传输速率,简称波特率,其单位是波特(Baud,symbol/s)——百度百科

在单片机这种串口的通信环境下,一个码元就是一个数据位(bit),因此波特率在这里就是每秒能传输多少位数据。即波特率在这里可以等效为:bps(bits per second),常用的波特率为:9600、19200、38400、57600、115200等。

以 9600 的波特率为例,就是每秒可以传输 9600 个位,但需要注意的是,串口通信传输的不是字节流,而是数据包!要传输的字节是含在这个数据包中的,数据包中还有其他辅助传输位:

UART数据包含有1个起始位,5至9个数据位(取决于UART,一般都是一个字节8位),一个可选的奇偶校验位以及1个或2个停止位,默认是1位。其中起始位停止位是必须的。

因此在只有起始位和1位停止位的情况下,传输一个字节的数据包长度为 10 个 bits ,这种情况下的每秒钟可以传输的字节数为 :9600/10=960 bytes 。如果考虑奇偶校验位的话就是 9600/11=872.72 bytes 。

奇偶校验位:如果有奇偶校验位,则可以选择 奇校验 或 偶校验,可以检验数据在传输过程中是否出错。奇校验时,发送方应使数据位中1的个数与校验位中1的个数之和为奇数;接收方在接收数据时,对1的个数进行检查,若不为奇数,则说明数据在传输过程中出了差错。同样,偶校验则检查1的个数是否为偶数。

数据传输速度的计算方法因场景和数据传输类型而异,以下是一些常见的计算方式: ### 基于比特和时间的基本计算 数据传输速率(bps)指信道在单位时间内可以传输的最大比特。若已知在一段时间 \(t\) 内传输的据比特 \(N\),则数据传输速率 \(R\) 可通过公式 \(R=\frac{N}{t}\) 计算。例如,在 10 秒内传输了 1000 比特的据,那么传输速率 \(R = \frac{1000}{10}=100\) bps [^1]。 ### PCIe 传输速率计算 PCIe 传输速率计算中,原始传输速率(Raw Transfer Rate)指每一秒内传输的次,单位是 GT/s(Giga Transmission per second,千兆传输/秒),其值等于 PCIe 总线的时钟频率,与 lane 量无关 [^2]。PCIe 实际有效传输速率还需考虑编码方式等因素。例如 PCIe 3.0 采用 128b/130b 编码,其有效传输速率为原始传输速率乘以 \(\frac{128}{130}\) 再乘以 lane 量。假设 PCIe 3.0 x1 链路,原始传输速率为 8GT/s,那么其有效传输速率为 \(8\times\frac{128}{130}\approx7.88\) GT/s。 ### 网络带宽与实际传输速度换 在网络传输中,通常提到的带宽单位是 bps(比特每秒),而下载工具显示的速度单位一般是 B/s(字节每秒)。由于 1 字节(Byte)等于 8 比特(bit),所以若网络带宽为 \(B_{bps}\),则理论最大下载速度 \(S_{B/s}=\frac{B_{bps}}{8}\)。例如,网络带宽为 100Mbps(100×10⁶ bps),则理论最大下载速度为 \(\frac{100\times10^{6}}{8}=12.5\times10^{6}\) B/s = 12.5MB/s。 ```python # 示例代码:计算网络带宽对应的下载速度 bandwidth_bps = 100 * 10**6 # 100Mbps download_speed_Bps = bandwidth_bps / 8 download_speed_MBps = download_speed_Bps / (1024 * 1024) print(f"理论最大下载速度: {download_speed_MBps:.2f} MB/s") ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地球被支点撬走啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值