是时候通过9600波特串行发送32KB?

时间:2012-09-28 21:52:15

标签: embedded serial-port baud-rate

我想知道我的数学是否正确。如果我的波特率是9600那么这意味着每秒发送9600位,对吧?如果是,那么:

9600 bit/sec <=> 1000 ms/ 9600 bit = 0.1042 ms/bit

因此,发送32KB应该采取:

32,000*(8+2) bits = 320,000 bits -- (8+2) because 8 data bits + 1 start bit + 1 stop bit
320,000 bits*0.1042 ms/bit = 33344 ms = 33.344 sec

这是对的吗?

3 个答案:

答案 0 :(得分:10)

确实,你通过乘以位宽的近似值来丢失精度,这样就可以指定三位小数的时间是不正确的。

为避免精度损失,请勿使用舍入的中间表达式,而应使用:

bytes x bits_per_character / bits_per_second

所以在你的情况下:

32000 x 10 / 9600 = 33.333(recurring) seconds.

传统上,32Kb是指32 x 1024字节,因此在这种情况下:

32 x 1024 x 10 / 9600 = 34.1333(recurring) seconds.

答案 1 :(得分:8)

如果您需要粗略检查幅度(无论是3s还是30或300),请记住9600 kbps~1KB /秒(如果你有2个额外的奇偶校验/停止位,则为10位),所以32KB - &gt;大约32秒。

答案 2 :(得分:0)

我想知道我的数学是否正确。如果我的波特率为 9600,那么这意味着每秒发送 9600 位,对吗?如果是这样,那么:

9600 位/秒 <=> 1000 毫秒/9600 位 = 0.1042 毫秒/位

因此,发送 32KB 应该需要:

32,000*(8+2) bits = 320,000 bits -- (8+2) 因为 8 个数据位 + 1 个起始位 + 1 个停止位 320,000 位*0.1042 毫秒/位 = 33344 毫秒 = 33.344 秒

正确吗?

没有。更像是 3.33 秒。