[以太网芯片]一步一步教你使用串口转网口芯片CH9121
我们通过单片机写一个小程序,串口收发的程序,进行测试,通用性高一些的,在之前的文章中也进行过说明,下面只是增加一个串口的初始化代码,应用部分,自己填写即可。沁恒的串口转以太网口的芯片,降低了开发的难度,让开发更容易一些。老刘使用的是USB转RJ45网口的工具,通过网线连接到芯片的,打开网络配置工具将适配器的选项选择。查看自己的防火墙是否打开,如果打开,先将防火墙关闭,查看数据是否上来。会出
引:
沁恒的串口转以太网口的芯片,降低了开发的难度,让开发更容易一些。先将资料下载,然后说一下这个芯片的应用。
一、下载资料
可以访问沁恒的官网进行下载。
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?原因可能是没有设置为同一个网段,设置为同一个网段即可。
无法和CH9121通讯?查看自己的防火墙是否打开,如果打开,先将防火墙关闭,查看数据是否上来。
如果还有别的问题,可以和老刘一起探讨。
---------------------
作者:单片小菜
链接:https://bbs.21ic.com/icview-3325162-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)