w5500 多个socket 通信 出现冲突

W5500网关芯片 随笔

最新在使用w5500芯片做 网络通信时 ,遇到一个问题,如果创建两个线程,一个线程 创建一个socket 进行局域网内 的tcp 通信,再创建另一个线程 进行广域网的mqtt 通信(传输层tcp),两个线程之间会出现 冲突的现象。
原因分析:虽然 创建了两个线程 分别进行通信,但是 两个线程 要想网络通信,都需要 通过W5500芯片,而单片机和w5500之间的通信 是通过spi 协议进行的;这样两个线程 同时调用相同的 spi接口,会出现冲突的现象。
解决方法:
使用一个线程 处理 所有网络通信 相关的业务。使用状态机的方式 进行轮寻,这也就是为什么 网上关于W5500的 例程代码 都是通过 switch case… case…的方式。

猜你喜欢

转载自blog.csdn.net/weixin_38949929/article/details/114274024