stm32 的UART串口波特率115200bps,一秒钟能发多少个数据包,实测给出结论

问题描述

之前觉得串口波特率115200bps,算下来115.2kbps,一秒钟发1k个数据包很容易就实现。

但是实际应用的时候,就发现不一样了。

每个数据包格式如下:

16进制:0A 55 55 00 0D 0A 55 06 24 05 4C 05 5F 05 CE 05 0E 04 F5 00 00 02 38 16 

24个字节。

通过定时器触发,每秒发送1000个数据包。

结果总是数据包不完整的,跳包的情况。

0A 55 55 00 0D 0A 55 06 24 05 4C 05 5F 05 CE 05 0E 04 F5 00 00 02 38 16 
0A 55 55 00 0D 0A 55 06 2A 05 4B 05 50 05 D1 05 0C 05 01 00 00 04 46 16 
0A 55 55 00 0D 0A 55 06 22 05 4D 05 
0A 55 55 00 0D 0A 55 06 2E 05 46 05 54 05 D0 05 10 04 FF 00 00 08 2B 16 
0A 55 55 00 0D 0A 55 06 24 05 3E 05 
0A 55 55 00 0D 0A 55 06 2F 05 44 05 57 05 D0 05 0B 04 FD 00 00 0C 47 16 
0A 55 55 00 0D 0A 55 06 27 05 4D 05 
0A 55 55 00 0D 0A 55 06 2E 05 43 05 58 05 CA 05 0F 04 FB 00 00 10 59 16 
0A 55 55 00 0D 0A 55 06 2A 05 46 05 
0A 55 55 00 0D 0A 55 06 24 05 4E 05 5D 05 CE 05 13 04 F4 00 00 14 0E 16 
0A 55 55 00 0D 0A 55 06 2F 05 4B 05 

单个数据包发送用时计算

理论计算,

单个串口包格式为

huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;

1个起始位,8个数据位,1个停止位。

那么对于115200bps的波特率来说。

一个串口包的发送用时=   10 /115200 =86.80555us

一个数据包的发送用时 = 2.083 ms

那么1秒钟能发送的数据包数量就是 =1 s/   2.083 ms =480个

后续验证

通过理论计算得出1秒钟最大发送量是480个,出于冗余考虑,

设置每秒发送400个数据包。

发送一段时间后,打开日志

总共接收了581256个数据。

按照一个字节占了3列,一个数据包24个字节。

581256 /72=8,073 

查看计数器

16进制 1F 89 

换算成十进制是8073,都对的上。

对于串口转网络芯片。选用的时候要考虑虽然外接网络带宽能到百兆。但限定于串口的波特率瓶颈,整体的发送速率跟着受限。

设计的时候要充分考虑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值