CH395调试与使用

本文主要说明如何使用CH395模块进行网络通信,CH395是以太网协议栈管理芯片,芯片自带10/100M以太网介质传输层MAC和物理层收发器PHY支持三种通讯接口:8位并口、SPI接口和异步串口,单片机/DSP/MCU/MPU等控制器可以通过上述任何一种通讯接口控制CH395芯片进行以太网通讯。

文章主要由三部分组成:

一:通过USB转串口模块配合CH395的串口上位机软件进行学习应用。

二:通过单片机SPI接口配合CH395例程进行使用。

三:keeplive说明和SPI时序问题。

 

一、设备验证:(CH395F评估板+CH340 USB转串口模块)

通过USB转串口模块连接CH395串口,通过DEBUG395软件进行验证,如图示:

 

imageimage

 

功能测试:CH395网线直连PC网口

CH395正常工作流程:初始化CH395---等待PHY连接---初始化CH395 socket

1、设置网卡IP地址和CH395地址,PC在网络连接中更改参数,CH395选择正确的串口后,通过DEBUG395可以先双击复位,再点击初始化CH395,配置IP等参数,需注意和PC保持同一网段。

 

imageimage

2、设置完成后,注意CH395网口灯是否双闪,同时可以通过PC命令提示符(CMD),进行Ping测试,如图示表明CH395初始化成功且网口硬件正常。

                        image

 

应用测试:配合网络调试工具TcpipDebug进行数据收发

1、CH395 TCP Clinet测试:先建立TCP服务器,再初始化CH395 socket0

 

imageimage

 

创建完成后如下图示,对应CH395 IP显示连接服务器

 

image

 收发数据如下:左侧DEBUG395软件会执行395中断响应判断

image

 

2、CH395 TCP Server测试:先初始化CH395 socket0TCP服务器,再配置网络调试工具参数。注意端口和IP一定要对应。

     imageimage

   image

 

3、UDP测试(CH395区别UDP CLINETUDP SERVER,单播IP地址为UDP CLINET模式,广播255.255.255.255UDP SERVER模式)

1UDP CLINET

imageimage

注意:IP地址和端口需要互相绑定,即一端本地IP和端口为对端设备目的IP和端口。

 

 

image

 

 

2UDP SERVER

 

imageimage

注意:CH395的目的IP地址为255.255.255.255,端口需互相绑定。

 

image

 

 

二、通过单片机SPI接口控制CH395

硬件接线:PA2--CS PA4--RST PA5--CLK PA6--SDO PA7--SDI PA8--INT

建议使用杜邦线连接CH395评估版时降低SPI时钟频率,防止串扰。

1、TCP Clinet例程(下载链接:CH395EVT.ZIP - 南京沁恒微电子股份有限公司

 

    CH395_PORT_INIT();   //SPI硬件初始化
    printf("CH395EVT Test Demo\r\n");
    CH395_GPIO_INIT(); //int、rst脚初始化
    CH395Reset();      //硬件复位
    Delay_Ms(100);
    i = CH395CMDGetVer();  //读取版本号
    printf("CH395VER : %2x\r\n", (UINT16)i);
    InitCH395InfParam(); /* Initialize CH395Inf parameters */ //定义芯片IP、网关、子网掩码参数
    i = CH395Init();     /* Initialize the CH395 */           //初始化395 
    mStopIfError(i);
    keeplive_set();      //使能TCP心跳包参数            
    while (1)   //监测PHY状态
    {                                              /* Wait for the CH395 Connect Ethernet*/
        if (CH395CMDGetPHYStatus() == PHY_DISCONN) /* Example Query whether the CH395 is connected */        {
            Delay_Ms(200); /* If no, wait for 200MS and query again */
           }
        else
        {
            printf("CH395 Connect Ethernet\r\n"); /*When the CH395 is connected to the Ethernet, an interruption occurs */
            break;
        }
    }
    InitSocketParam(); /* Initialize socket related variables */ //定义socketIP、端口参数
    CH395SocketInitOpen(); //初始化socket

 

 

注意CH395Init函数中,通过06 check命令用于验证接口通信是否正常。如果返回值不对,注意接口硬件连接是否对应,时序是否满足要求。SPI和并口需要注意时钟频率,串口需注意波特率,默认9600,更改硬件设置后需对应软件调整。

       image

Socket参数如下:注意区分目的IP和端口,需对应PC网络调试工具参数。

const UINT8 CH395IPAddr[4] = {192, 168, 1, 100}; /* CH395 IP  */
const UINT8 CH395GWIPAddr[4] = {192, 168, 1, 1}; /* CH395 gateway */
const UINT8 CH395IPMask[4] = {255, 255, 255, 0}; /* CH395 mask */

/* Socket definitions */
const UINT8 Socket0DesIP[4] = {192, 168, 1, 2}; /* Destination IP address for Socket 0 */
const UINT16 Socket0DesPort = 1000;               /* Destination port for Socket 0 */
const UINT16 Socket0SourPort = 1000;              /* Source port for Socket 0 */

 

 

1)设置完成后,初始化和连接信息如下:

 

image

 

(2)数据稳定性测试:例程采用回环测试,通过上位机软件设置无间隔收发数据,验证稳定性。

image

 

三、应用说明

AKeeplive说明:对于TCP模式下建议使能Keeplive机制,防止长连接设备出现其中一个设备无感掉线(即不发TCP FINRST报文释放连接)时长时间占用socket。同时侦听对端设备是否在线。

image

 通过wireshark抓包,可以看到在双方无数据收发时,keeplive数据包互相应答来验证双方是否在线。

image

 

BSPI时序问题:主控通过SPI接口访问CH395时,若出现读写芯片版本、MACCheck命令返回值异常时,可以抓取SPI时序判断此时硬件是否正常。

1CS片选线上存在干扰,导致CH395识别命令异常.

image

 

2采用DMA方式读写命令,导致CH395无法识别命令。

image

 

3接线错误、CLK时钟过快、引脚存在对拉情况。

 

时序条件应满足手册规定数值:

image

 

正确时序图:01读取版本号 06接口校验命令。命令和数据之间存在间隔,CS无抖动。

 

image

 

 

image

 

 说明PDF版本下载链接:

https://files.cnblogs.com/files/blogs/805237/CH395%E8%B0%83%E8%AF%95%E4%B8%8E%E4%BD%BF%E7%94%A8.rar?t=1754042158&download=true

posted on 2025-08-01 17:58  sw2222  阅读(304)  评论(0)    收藏  举报