在一次项目开发中需要使用到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