ch392 接收缓冲区的数据读取后仍然保留在接收缓冲区中, CH392ClearRecvBuf 无效

发现用CH392GetRecvLength获取长度,CH392GetRecvData读取数据后,接收缓冲区的数据任然保留着,于是在CH392GetRecvData读取数据后,主动用 CH392ClearRecvBuf 清除该socket的接收缓存,但是无效,这可能是什么原因造成呢?

我的应用轮询读CH392接收缓冲区的有效数据长度,有数据就进行处理,实际没有用到中断,是这种方式不可行吗?


我用的淘宝买的以太网模块,spi接口,读到的芯片版本23.又发现2个问题

  1. 按照例程 tcp _server的设置打开socket 0 后,在发送listen命令后,用串口读取到的数据是socket 0 的第一个状态码即socket状态时0x05,但第二个TCP状态码是关闭状态,如果延时20ms多发送几次listen命令,读到的第一和第二状态码都是2f,并且listen命令的返回码是0x2c

  2. 还是做tcp server 实验,如果只打开socket3,会同时检测到socket 0 的第一状态码也打开了。之前的实验也发现打开socket 0,1,2 没有打开socket3,却发现在收到syn报文后,socket 3自动打开并进入connect状态。

    程序方面已经按例程改到最简,区别就是uart接口和spi的区别了

  3. 1653008683893463.png

  4. 1653008683164198.jpg




“我的应用轮询读CH392接收缓冲区的有效数据长度,有数据就进行处理,实际没有用到中断,是这种方式不可行吗?”,这种方式不太合理,会很占用CH392的处理,正常情况是读出数据后缓冲区数据就会自动清空。


还是不太对,可能是硬件问题,不知有没有朋友用过这个款的模块,是否有成功工作的?


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