问题 1: CH395 初始化失败。
解答: 1、首先检查“check_exist”命令,正常情况下 CH395 会将该命令的输入值按位取
反后输出,若该命令不正常,则说明 CH395 的通讯接口有问题。首先检查
CH395 接口选择模式配置是否正确,即检查 TXD, SEL 电平状态是否正确;
其次检查通讯时序问题。
2、 检查通讯时序, SPI 接口注意:每次发送命令之前,片选 CS 引脚必须先拉高
再拉低,产生下降沿;其次输入命令码与后面的参数之间,至少要间隔 2us。
3、 CH395 初始化参数设置好后,先延时 20ms 左右,再执行初始化命令。
4、注意 CH395 的网络参数的合法性,设置不规范的 ip 地址可能会导致 CH395
网络出错。 问题 2: CH395 初始化之后,插网线网口灯不亮(CH395 硬件设计注意事项)。
解答: 1、 首先检查网络初始化命令是否成功,若不成功则查看问题 1。
2、 芯片双路独立供电, 3.3V 和 1.8V,芯片的每个电源引脚旁边都需要接对地的
退耦电容(104)。电源的纹波需要稳定在 50m V 以内。
3、芯片网络差分信号引脚 TXN , TXP, RXN, RXP,需要接 49.9Ω的上拉电
阻。
4、芯片外接网络变压器,变压器的中心抽头需要接 3.3V。
5、检查网线是否有问题,换根网线重新尝试。
问题 3: CH395 与电脑无法建立 TCP 连接。
解答:
1、检查电脑防火墙是否处于关闭状态,若没有关闭则关闭它。
2、检查网口灯是否亮闪,如果不亮查看问题 2.
3、使用电脑 pingCH395,如果 ping 不通,则检查 CH395 初始化的 IP 参数是否正
确, 可以使用命令读取 CH395 的 IP 信息对比。
4、 如果是在局域网内,则需要检查 CH395 是否存在 IP 冲突。
5、对于多网卡的电脑,在设置电脑端网络调试软件时要注意选择正确的网卡,最
好是打开软件前,将其他网卡都禁用。
6、检查 TCP 双方端口是否正确无误。
7、 TCP 正常连接成功时, CH395 的 INT 引脚会给出中断低电平信号,可以通过
读取命令来获取中断状态,查看是否有 TCP 连接成功中断。
8、若出现连接断开后不能再次连上的问题,则可能是因为 395 在检测到连接断开
后自动关闭了 socket,可以通过在 socket 断开与超时中断里重新打开 socket,
重新开启连接。
问题 4: CH395 无法收发网络数据。
解答: 1、 TCP 模式下先检查 TCP 连接是否成功,若不成功,查看问题 3。
2、 若 CH395 接收到网络数据,会产生数据接收中断信号,检测 CH395 的 INT 引
脚是否有低电平产生,注意如果使用单片机外部中断,则触发位要设置为低电
平触发,不要使用边沿触发。若有中断信号,则读取中断状态,对照头文件里
的定义,获取中断含义。检查 CH395 接收中断的处理,正常流程是:获取中断、
读取数据长度,读取数据内容。
3、 UDP server 模式下的数据收发与其他模式不一样:
数据接收时, CH395 会在数据包前加上 8 个字节的信息,分别是数据包长度,
源端口,源 IP。在接收中断处理任务里,需要将这些信息分离并保存。
数据发送时, CH395 使用 395UDPSendTo()函数,函数参数需要使用上面的
信息。
4、 CH395 发送相关的中断有两个,分别是发送完成中断与发送缓冲区空闲中断;
单片机向 CH395 发送缓冲区写一包数据, CH395 会将数据复制到 MAC 缓冲区,
复制完毕后会产生发送缓冲区空闲中断; CH395 可能会将数据分装成若干包数
据包,每发送一包数据包, CH395 都会产生一次发送完成中断;因此在实际发
送时,必须要等到发送缓冲区空闲中断产生后,才能向 395 缓冲区填写下一次
数据。
问题 5: CH395 以太网数据丢包。
解答: 1、 CH395 在收发数据的过程中不能被其他进程打断,如果 CH395 在数据收发中
被其他任务打断,则可能会导致数据丢包。
2、检查下定义接收缓冲区大小,读取接收长度,看是否超过了接收缓冲区。接收
缓冲区在定义的时候至少要大于定义的 TCP MSS 的值。
3、 UDP 模式下存在丢包的可能性,这是协议本身就存在的缺陷。
问题 6: CH395 芯片发热,温度高。
由于Ch395内部集成了MAC和PHY,发热量稍大,大概会比室温高25-40°C,但是不会影响芯片的稳定性, 可以通过一下方式来改进温度: 1、 RSETE 引脚下拉电阻改为 18K。
2、 改善电源,如使用 DC 电源代替 LDO,减小部分功耗。
3、 启用 CH395 低能耗模式,降低 CH395 一半主频,但会导致 CH395 速度降低
一半。
问题 7: CH395 编程注意事项。
解答: 1、 芯片内置上电复位电路,主程序开始先延时 200ms 时间,留给 CH395 足够的
上电复位时间,防止单片机上程序开始运行而 CH395 仍处于复位状态。
2、芯片内置上电复位电路芯片初始化之后,建议先做测试命令,确保基本通信正
常后再进行下面的操作。
3、假如程序中有设置 MAC 地址操作, 设置完成后需要延时 200ms 左右时间。
4、批量发送数据时,每次发送数据前要确保前一次数据已经发送完成(可通过查
询 SINT_STAT_SENBUF_FREE 中断来判断)。
|