关于STM32F103+CH395Q网络芯片开发所遇到的问题总结

在一次项目开发中需要使用到CH395Q网络芯片来连接网口进行数据处理,在设计过程中可谓是问题不断:

 1、CH395Q初始化问题:该芯片的初始化值得注意的是硬件上的链接,本人使用的是SPI通讯方式,在下载官方测试程序后芯片死活无法初始化,

   后经查阅资料发现,在SPI通讯方式下芯片的RSTI引脚和TX引脚都需要与单片机进行连接并执行相关操作(具体可详见附件文档)。补齐引脚后

  能够实现芯片的初始化,但在if(CH395CMDGetPHYStatus() == PHY_DISCONN) 处一致显示网络链接断开,排除了软件问题后,经检查是网口

  没有接电压转换芯片,以及在四根高频信号线上接了滤波电容。去除以上故障后PC机与芯片能ping通。

 2、通过例程将CH395设置为服务器模式后,调试发现服务器在客户端连接一次断开连接后就无法再次连接。通过查阅官方手册,发现通过开启

  多连接的方式可以解决该问题。但由于需求指定要求不能有多台设备连接,因此从这之后开始毫无头绪。通过CH395TCPDisconnect函数观察

  TCP断开时的状态,发现TCP断开连接时Socket竟然自动关闭了。于是在断开中断中使用CH395SocketInitOpen对Socket重新打开后解决了该问题。

 3、连续发送多个数据帧的时候数据帧丢失:具体情况表现为,连续发送22帧数据,但是能够接收到的只有第一帧和最后一帧,查阅了手册后发现连续发送多帧数据时需要等待发送缓冲区空闲

在Socket空闲中断内对循环数据进行累加,即只有空闲状态下才会发送数据,此操作后解决了该问题现象

资料链接:链接:https://pan.baidu.com/s/1XCvHOOrycYX3sDiF-xcN2A
提取码:0trj

原文地址:https://www.cnblogs.com/jiayezi/p/14770960.html