一、CH395外围电路设计注意
1.CH395的PHY是电流型,网络变压器的中心抽头要接3.3V
2.CH395的电源引脚退耦电容不可少,而且要靠芯片周围摆放
3.CH395支持串口,SPI和并口(仅CH395L支持)接口,在芯片上电时,395根据SEL和TXD引脚的电平来决定采用哪种方式
4.为了在电源上电期间有效复位并减少外部干扰,可以在RSTI引脚与地之间接一个0.1UF的电容。
5.具体接法可以上沁恒官网(www.wch.cn)上搜索“CH395EVT”
二、395初始化失败
1.首先检查“check_exist”命令,正常情况下395会将该命令的输入值按位取反后输出, 若该命令不正常,则说明395的通讯接口有问题,请注意接口时序,检查CH395接口选择模式配置是否正确,即检查TXD,SEL电平状态是否正确。。
2.395初始化参数设置好后,先延时20ms左右,再执行初始化命令.
3.注意395的网络参数的合法性,设置不规范的ip地址可能会导致395网络出错
三、395与电脑无法建立TCP连接
1. 连接之前先将电脑的网络防火墙关闭。
2.对于多网卡的电脑,在设置电脑端网络调试软件时要注意选择正确的网卡,最好是打开软件前,将其他网 卡都禁用。
3.先ping一下395,若ping不通,则先检查网口的指示灯是否亮着,若不亮则换一根网线再试;若网口灯亮,则可能395初始化没有正确完成
4.检查395初始化配置的信息是否正确,目的ip与端口是否与电脑端设置相同`,TCP连接要注意ip地址处于同一网段,如果是在路由器局域网环境下,还要考虑395ip地址避免冲突。
5.TCP正常连接时,395的INT引脚会给出中断低电平信号,可以通过读取命令来获取中断状态
6.若出现连接断开后不能再次连上的问题,则可能是因为395在检测到连接断开后自动关闭了socket,可以通过在socket断开与超时中断里重新打开socket。
7.初始化socket之前没有将socket配置信息表清空
四、395数据接收与发送问题
1.若395接收到数据,会产生数据接收中断信号,检测395的INT引脚是否有低电平产生,注意如果使用单片机外部中断,则触发位要设置为低电平触发。若有中断信号,则读取中断状态,对照头文件里的定义,获取中断含义
2.检查395接收中断的处理,正常流程是:获取中断、读取数据长度,读取数据内容。
3.UDP server 模式下的数据收发与其他模式不一样:
数据接收时,395会在数据包前加上8个字节的信息,分别是数据包长度,源端口,源ip。在接收中断处理任务里,需要将这些信息分离并保存。数据发送时,395使用395UDPSendTo()函数,函数参数需要使用上面的信息
4.与395发送相关的中断有两个,分别是发送完成中断与发送缓冲区空闲中断;单片机向395发送缓冲区写一包数据,395会将数据复制到MAC缓冲区,复制完毕后会产生发送缓冲区空闲中断;CH395可能会将数据分装成若干包数据包,每发送一包数据包,395都会产生一次发送完成中断;因此在实际发送时,必须要等到发送缓冲区空闲中断产生后,才能向395缓冲区填写下一次数据
5.395在数据收发过程中出现数据丢包现象:
(1)395在收发数据的过程中不能被其他进程打断,如果395在数据收发中被其他任务打断,则可能会导致数据丢包
(2)检查下定义接收缓冲区大小,读取接收长度,看是否超过了接收缓冲区。接收缓冲区在定义的时候至少要大于定义的TCP MSS的值。
五、芯片发热。
由于CH395内部集成MAC和PHY,发热量稍大,但不会影响芯片稳定性。可通过以下方式改进:
(1)芯片RSETE 脚参考电阻18K。
(2)改善电源,如使用DC电源代替LDO,减小部分功耗。
(3)启用CH395低能耗模式。
六、编程注意事项。
(1)、芯片内置上电复位电路,主程序开始先延时200ms时间,留给CH395足够的上电复位时间,防止单片机上程序开始运行而CH395仍处于复位状态。
(2)、芯片初始化之后,建议先做测试命令,确保基本通信正常后再进行下面的操作。
(3)、假如程序中有设置MAC地址操作,需要延时200ms左右时间。
(4)、批量发送数据时,每次发送数据前要确保前一次数据已经发送完成(可通过查询SINT_STAT_SENBUF_FREE中断来实现)。