CH395网络芯片发送数据太慢,求大神指点

大家好,我使用CH395的UDP发送数据时,如果我直接发送一个数组,每秒发送15次,最多能成功2两次。如果我直接发送一个字符串,每秒可以发送15次,都能成功。这是为什么啊?下面红色框中的就是两个代码。求大神们指点,感谢感谢

Snipaste_2022-08-04_10-40-10.png

这里CH395芯片使用的是UDP协议,用的SPI通信方式。下面是发送字符串时,网络抓包的结果。每秒十几条没问题。
Snipaste_2022-08-04_10-33-28.png

最后这里是发送数组,同样每秒调用十几次,但是数据只能成功发送2两次,剩下的数据就丢失了。下面是抓包的结果。

Snipaste_2022-08-03_15-27-09.png

求助这个问题该怎么解决啊?现在需要将串口接收到的数据,转发到网络中,每秒数据来7个数据帧。或者CH395发送字符串和和发送数组有什么本质区别啊?感谢感谢大家

CH395SendData(0,"342sadfg3sa342sadfg3s342sadfg3sa342sadfg3saa342sadfg3sa342sadfg3sa",100);

上面成功发送。下面会丢数据,只能成功一两次

CH395SendData(0, Com_Msg.net_tx_buf, Com_Msg.net_tx_cnt);



您好,如果您觉得同样的调用函数而效果不一样,您需要查一下是否有差异点:

(1)函数调用的时机,两种状态下CH395SENDDATA调用前后环境堆栈是否一样,大致上您就调试一下查看一下CPU内部寄存器的值是否一样,和调用前的步骤和使能条件是否一致

(2)CH395SendData调用的参数类型是否能和规定的一致,您查看一下您结构体参数的参数类型是否能和函数对应上

(3)您发送字符串抓的数据包数据长度都是100,发送数组抓的包数据长度有206,有29,有67,这些数据是什么您看您能否对应上。


非常感谢大神的指点,我再排查排查,再次感谢


非常感谢指点!

首先我可以确定,我在程序中同一个地方调用发送函数,发送数组和发送字符串结果是不一样的。发送字符串每秒15次左右;发送数组每秒只能成功两次。

其次,字符串发送长度100,是我指定的长度就是100,它每秒15次发送都能成功。而发送数组的长度206、29、67等这些长度,是根据真实协议,接收到不同的一组完整数据帧,接收完成立马发送,就是发送这个数组时,每秒只能成功两次左右的样子。真实协议数据帧每秒6条,四条长度为29,一条长度为67,还有一条为206,但是抓包结果只能收到一条29长度的数据,剩下3条都丢失了。


您好,注意下,每次调用发送函数前,查询下send_buf_free标志,为1可发送,否则会出现UDP粘包或者丢包情况。


只有登录才能回复,可以选择微信账号登录