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软件进行验证,如图示:


功能测试:CH395网线直连PC网口
(CH395正常工作流程:初始化CH395---等待PHY连接---初始化CH395 socket)
1、设置网卡IP地址和CH395地址,PC在网络连接中更改参数,CH395选择正确的串口后,通过DEBUG395可以先双击复位,再点击初始化CH395,配置IP等参数,需注意和PC保持同一网段。


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

应用测试:配合网络调试工具TcpipDebug进行数据收发
1、CH395 TCP Clinet测试:先建立TCP服务器,再初始化CH395 socket0。


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

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

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



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


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

(2)UDP SERVER


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

二、通过单片机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,更改硬件设置后需对应软件调整。

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)设置完成后,初始化和连接信息如下:

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

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

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

B:SPI时序问题:主控通过SPI接口访问CH395时,若出现读写芯片版本、MAC、Check命令返回值异常时,可以抓取SPI时序判断此时硬件是否正常。
(1)CS片选线上存在干扰,导致CH395识别命令异常.

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

(3)接线错误、CLK时钟过快、引脚存在对拉情况。
时序条件应满足手册规定数值:

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


说明PDF版本下载链接:
浙公网安备 33010602011771号