​引:
       沁恒的串口转以太网口的芯片,​降低了开发的难度,让开发更容易一些。先将资料下载,​然后说一下这个芯片的应用。
一、下载资料
可以访问沁恒的官网进行下载​。
http://​wch.cn
下载以下几个资料包​和工具软件。
 


二、芯片的优势

  • 实现串口数据和网络数据的双向透明传输
  • 支持 10/100M,全双工/半双工自适应以太网接口,兼容802.3 协议
  • 支持 MDI/MDIX 线路自动转换
  • 支持 TCP CLEINT/ SERVER 和UDP CLEINT/ SERVER 4种工作模式
  • 串口波特率支持300bps ~ 921600bps
  • 最多同时支持两路独立串口,独立透传
  • 串口 TTL电平,兼容3.3V 和5V
  • 串口支持5、6、7 或者8 位数据位以及1 位或者2 位停止位
  • 串口支持奇、偶、无校验、空白0、标志1 校验方式
  • 串口支持全双工和半双工串口通讯,支持RS485收发自动切换
  • 支持 DHCP自动获取IP地址功能
  • 支持 DNS域名系统
  • 支持 0~2000ms串口超时时间设置
  • 网络参数,串口参数可通过上位机配置
  • 支持 KEEPALIVE 机制


三、典型的电路设计
 


四、运行网络配置工具设置芯片参数
       老刘使用的是USB转RJ45网口的工具,通过网线连接到芯片的,打开网络配置工具​将适配器的选项选择
ASIXAX88772CUSB2.0 toFastEthernetAdapter
       您可以根据您的配置进行选择。查看网线的灯是否亮了,​搜索设备。
 


       会出现CH9121芯片的信息,以及之前配置好的信息,如果没有配置​,可以进行重新配置。
 


       ​ 下面将配置的参数,说一下:

  • 设备名:可以根据自己需求进行修改;
  • DHCP:根据项目的需要进行勾选
  • 设备IP:这个IP是指本地的IP,也就是CH9121的IP地址
  • 掩码:这个是固定的,也可以使用ipconfig/all指令在CMD中查看​。
  • 网关:一般和​IP挂钩的。


 

  • 网络模式有四种选择:


TCP CLIENT
TCP SERVER
UDP CLIENT
UDP SERVER
​根据自己的需要进行选择即可。

  • 本地端口​:可以选择随机不设置
  • 目的IP/域名​:选择IP
  • ​目的IP:这个IP是指想要连接电脑的IP地址,可以通过查看cmd指令进行填写,以下是老刘的电脑ip地址


 

  • ​目的端口:这里设置1000,这个数值和后面测试网络相对应的。可以设置别的​端口,只要不是常用的80、8080就可以了。
  • ​串口设置:都按照默认的填写就可以了。也可以根据自己的需要进行更改的。
  • 包长度、超时,​都可以作为默认的。


       填写完成之后,点击配置设备参数​,在下面的提示框中会进行提示。


​       操作状态处于何种状态:
 


       至此,CH9121配置完成,​后续就是进行通讯测试。
五、以太网测试
       可以使用资料包里面的软件,进行测试,软件名称为:串口与TCP/UDP调试软件。      
 


       在网络调试设置中,进行如下配置:

  • 适配器:还是选择刚刚的USB转网口的工具,ASTX AX88772C...
  • 协议类型:TCP Server
  • 本地端口:1000
  • 目标IP:不用设置
  • 目标端口:不用设置
  • 点击​网络监控按钮:如果下面出现客户端的IP,证明已经连接上,没有问题了。


       我们通过单片机写一个小程序,串口收发的程序,进行测试,通用性高一些的,在之前的文章中也进行过说明,下面只是增加一个串口的初始化代码,应用部分,自己​填写即可。

复制

<p>voidCH9121_uart4_Config(u32 bound)</p><p>{  </p><p>GPIO_InitTypeDef GPIO_InitStructure;  </p><p>USART_InitTypeDef USART_InitStructure;      </p><p>RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA, ENABLE);  </p><p>RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);​  </p><p>GPIO_PinAFConfig(GPIOA,GPIO_PinSource0, GPIO_AF_UART4);   //将PA0复用到UART4中</p><p>GPIO_PinAFConfig(GPIOA,GPIO_PinSource1, GPIO_AF_UART4);   //将PA1复用到UART4中​  </p><p>GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;   </p><p>GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  </p><p>GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  </p><p>GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   </p><p>GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  </p><p>GPIO_Init(GPIOA,&GPIO_InitStructure);        </p><p>USART_InitStructure.USART_BaudRate = bound;  </p><p>USART_InitStructure.USART_WordLength = USART_WordLength_8b;  </p><p>USART_InitStructure.USART_StopBits = USART_StopBits_1;  </p><p>USART_InitStructure.USART_Parity = USART_Parity_No ;</p><p>USART_InitStructure.USART_HardwareFlowControl = </p><p>USART_HardwareFlowControl_None;  </p><p>USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  </p><p>USART_Init(UART4, &USART_InitStructure); ​  </p><p>CH9121_NVIC_Configuration();    </p><p>USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);​  </p><p>USART_Cmd(UART4, ENABLE);</p><p>}</p>


       我们可以通过网络接收区和网络发送区查看收发是否正常。在代码中设置断点,​通过网络发送去发送一个十六进制数据包,看看是否进入到断点中即可验证。
​结:
       ​可能遇到以下问题:
       找不到CH9121?原因可能是没有设置为同一个​网段,设置为同一个网段即可。
       无法和CH​9121通讯?查看自己的防火墙是否打开,如果打开,先将防火墙关闭,查看数据是否上来​。
​       如果还有别的问题,可以和老刘一起探讨。
---------------------
作者:单片小菜
链接:https://bbs.21ic.com/icview-3325162-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐