最近测试发现串口发送数据会分包发出,如图
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
要发送的内容
串口助手显示内容
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
分包情况有个特点,第一帧数据长度固定在32,第二帧就可以超出32个长度
问题:要怎么修改能让数据不会分包发送?
分包不可避免,还是得从接收那里处理,能准确识别出一包完整数据。
可以参考一下这个帖子,下面坛友们讲解的非常详细了。串口发送数据,接收方收到的数据分了几包
sscom分包依据是sscom界面上设置的超时时间的。所以有两个解决方案:
另外,这个只是sscom的显示问题,最终如果自己写代码解析,可以有多种分包依据
导致接受端分包的原因是你发送的数据字节的发送间隔时间太长,如果你的数据是连续发送,并且字节之间没有间隔是不可能出现分包的。所以你在处理不定长数据时,要将数据放到一个buf中,然后通过发送中断在发送结束后理解取下个数据发送,如果利用发送的FIFO也可以,这样就不会出现分包的现象。
@小小李sunny 感谢回复!我看了这个帖,好像不能解决我目前这个问题
方法一我试过将优先级调至最高,没改善
方法二DMA对不定长数据发送应该还是会分包
方法三数据接收方是第三方设备,我这边应该是改不了的
同时发现一个现象:调试口发送的数据不会出现分包

调用的发送函数及调用位置都是相同的
我可以从这个点看看