在上一篇中,通过上位机调试软件对CH395评估板的基本功能进行了调试,并构建了一个客户端与PC机进行了通信实验。在CH395的数据手册中提供了55个可用命令,普通单片机如果想通过CH395实现网络传输功能,最重要的就是通过这55个命令中实现两者之间的信息交互。因此,在本章中将以SPI通信方式为例,介绍使用微控制器控制CH395并进行网络数据传输的使用方法和设计步骤。
由于我手上现在没有单片机,只有一个ESP8266无线模块,而ESP8266内部集成了一个32位的CPU,可以作为应用处理器。因此,决定利用ESP8266作为微控制器设计一个有线+无线数据回环传输系统。
1. 系统总体结构
系统总体结构如图所示,CH395在本系统中设置为服务器模式,通过SPI接口与ESP8266进行通信,PC机上的有线网卡作为客户端,向CH395发送数据,CH395将接收到的数据转给ESP8266,ESP8266通过无线方式将该数据发送到PC机上的无线网卡。因此,PC机上通过有线网卡发送出去的数据最终通过无线网卡接收,比较二者的内容是否相同,可以验证该系统是否设计成功。
2. CH395初始化socket为TCP服务器模式的设计步骤
① 发送命令 CMD_SET_PROTO_TYPE_SN 设置 Socket 工作在 TCP 模式;
② 发送命令 CMD_SET_SOUR_PORT_SN 设置源端口 Sport;
③ 发送命令 CMD_OPEN_SOCKET_SN 打开 Socket;
④ 延时 2MS 以上发送命令 CMD_GET_CMD_STATUS 获取 CMD_OPEN_SOCKET_SN 执行状态,如果返回
CH395_ERR_BUSY 表示 CH395 内部正在执行命令,需要再次执行④;如果返回 CH395_ERR_SUCCESS 表
示命令执行成功,其他值表示打开 Socket 失败。
在 TCP 服务器模式下,如果客户端进行连接,在 Socket 一直处于监听状态,不会产生超时中断,
如果 TCP 连接成功,CH395 会产生 SINT_STAT_CONNECT 中断,此时单片机可以发送命令
CMD_GET_REMOT_IPP_SN 来获取客户端的 IP 地址和端口号。
默认的设置下,服务器多连接功能被关闭, TCP 服务端模式下,每个 Socket 只可以建立一个 TCP
连接。
在多连接模式使能的情况下,TCP 服务器可以连接多个 TCP 连接,单片机需要设置 Socket 的源
端口和服务器的源端口一致,如果 TCP 服务器监听到连接,CH395 会查找当前所有的 Socket 的源端
口是否和当前服务器一致,且处于被关闭状态,如果找到则立即将此 Socket 打开,将连接分配给此
Socket,并通知单片机有连接事件,如果没找到,则将连接复位。此模式下服务器的 Socket 仅用来
监听,单片机需要分配其它 Socket 用于该服务器的连接。例如 Socket0 设置为服务器模式,Socket1
和 Socket2 用于此服务器的连接,步骤如下:
Socket0 执行①-④;
⑤ 向 Socket1 发送命令 CMD_SET_SOUR_PORT_SN 设置源端口 Sport;
⑥ 向 Socket2 发送命令 CMD_SET_SOUR_PORT_SN 设置源端口 Sport。
3. 系统软件设计
由于时间关系,该部分内容还正在设计中,随后将会更新。
|