[讨论]CH395+外置协议栈,有些PC能连接,有些不能连接

由于软件的需求,CH395内置协议栈4个socket不够用,现在改用外部协议栈keil的RL_TCPnet, 主控是M3 ARM--LPC1788,CH395的socket 0工作在macraw模式。 CH395作为TCP server,PC上用客户端来连接。 现在发现的问题是我用网线跟一台PC机直连,TCP连接正常,收发正常。但是在这台PC机和板子间用一个交换机连在一起的时候就无法连接了。通过协议栈的debug信息可以看到当PC上客户端发起TCP连接的时候,板子能收到ARP报文,且解析正常。通过把协议栈响应的报文打印出来发现跟之前直连的时候是一样的(这里打印是在协议栈发送驱动里将数据通过SPI发送给CH395之前),PC端我用网卡抓包软件也没发现有ARP响应报文到达PC的网卡。 我换了一台PC机直连,发现也无法连接,现象跟用交换机一样。

这个问题找了好几天了,一直没找到原因,为什么在一台机子上是可以连接,换了机子和用交换机都不行了。 我能确认的是协议栈生成了ARP响应报文后,确实调用了CH395SendData函数,把数据发送给了CH395,但是CH395有没有收到报文,有没有发送出去我就不知道了。 请问有没有办法可以查询CH395是否收到报文,且发送了报文??

或者这个问题大家有啥想法可以分享出来交流交流,让我也有点启发。谢谢

今天试验的时候发现之前好的那台PC机也无法连接了。 通过打印CH395CMDGetGlobIntStatus的返回值发现每次都是0x10,也就是每次都有socket0中断。 但是CH395GetSocketInt产讯socket0状态的时候,返回值一直是0x00和0x04,0x04是接收中断可以理解,但是0x00为什么会触发中断呢??


请问你需要多少Socket进行通信?CH395内置协议栈,不建议客户重新重新开发外置协议栈使用。


多个TCP server,web server,telnet加起来估计要10多个socket。不重新用外置的不行啊。 用内置的TCP协议栈也有问题。当3个client同时连接到CH395时,每隔3S,3个client同时发送数据给CH395,CH395上3个TCP server中有一个肯定挂掉。就是无法收到数据,client也无法断开连接,只能重启。


如果考虑多连接的话,建议你考虑一下CH563,内置TCP/IP协议栈,Socket个数可配置,最多支持31个TCP连接。


你们不能老是让别人换器件诶。 对于问题你们自己是否有测试过,或者有什么建议?


目前版本已全面支持,您可在我司官网下载相关资料。如需要样品,可直接与我司销售人员联系。


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