2-CH UART TO ETH

来自Waveshare Wiki
跳转至: 导航搜索
2-CH UART TO ETH
{{{name2}}}
{{{name3}}}
功能简介
特性 无特性,不解释
产品尺寸 53mm x 22mm
特性 UART转ETH模块
' 无特性,不解释
' 无特性,不解释
接口 UART Ethernet

说明

产品概述

提供Pico C语言例程跟Python例程

产品参数

参数名称 参数
供电电压(二选一) 3.3V/5V
工作电流 140mA
工作模式 TCP/UDP
串口波特率 300bps ~ 921600bps
串口 TTL 电平 兼容 3.3V 和 5V
工作温度 -40℃~85℃
产品尺寸 53.00 x22.00(mm)

接口说明

2-CH UART TO ETH-details-inter.jpg

功能说明

CH9121 为网络串口透传芯片,可实现串口数据与网络数据的双向透明传输,支持 TCP CLEINT/SERVER,UDP CLIENT/SERVER 4 种工作模式,串口波特率支持范围为 300bps~921600bps, 使用前需通过上位机软件 NetModuleConfig.exe 或者串口命令配置芯片的网络参数和串口参数, 配置完成后,CH9121 将配置参数保存至内部存储空间,芯片复位后,CH9121 将按保存的配置值工作。

默认配置

CH9121 出厂时,端口 2 默认关闭,端口 1 默认工作在 TCP CLIENT 模式,网络相关默认参数依次为:
(1) 设备 IP : 192.168.1.200
(2) 子网掩码 : 255.255.255.0
(3) 默认网关 : 192.168.1.1
(4) 模块端口 : 2000
(5) 目标 IP : 192.168.1.100
(6) 目标端口 : 1000
串口相关默认参数依次为:
(1) 波特率 : 9600
(2) 超时 : 0
(3) 数据位 : 8 ; 停止位 : 1 ; 校验 :无
(4) 清空串口缓冲区 : 从不清空

TCP CLIENT

1、选择SSCOM协议类型为TCPServre,再通过SSCOM查看电脑IP跟端口号(也就是上面的目标IP跟目标端口)
SSCOM-1.jpg
2、通过路由连接模块,再运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改参数,然后点击“配置设备参数”;
(3).配置完成后,模块会重启,稍等一会,点击 “搜索设备”,找到模块,查看配置结果。
(4).根据实际需求修改模块参数,例如:设置网络方式为 TCP CLIENT,目的 IP,目的端口与 TCP SERVER 的
IP 和端口一致,再根据需求修改波特率等参数。然后点击配置设备参数。
NetModuleConfig-1.jpg
3、配置完之后,点击SSCOM的侦听,就连接起来了。
SSCOM-2.jpg

TCP SERVER

1、通过路由连接模块,再运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改网络模式为TCPServre,再根据需求修改模块参数,最后点击“配置设备参数”;
NetModuleConfig-2.jpg
2、通过SSCOM去连接配置成TCP SERVER的模块,连接起来会如下图显示:
SSCOM-3.jpg

UDP CLIENT/SERVER

1、通过路由连接模块,再运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改网络模式为UDP CLIENT/Servre,再根据需求修改模块参数,最后点击“配置设备参数”;
NetModuleConfig-3.jpg
2、通过SSCOM去连接配置成UDP CLIENT/Servre的模块(SSCOM的UDP模式会自动连接,不管你的模式配置成CLIENT/Servre),连接起来会如下图显示:
SSCOM-4.jpg

Pico使用教程

Pico 快速上手

硬件连接

您可以对照以下表格连线。

Pico连接引脚对应关系
ETH Pico 功能
5V VSYS 电源输入
GND GND 电源地
RXD1 GP0 串行数据输入
TXD1 GP1 串行数据输出
RXD2 GP4 串行数据输入
TXD2 GP5 串行数据输出
CFG0 GP14 网络配置使能脚
RST1 GP17 复位


2-CH UART TO ETH-Pico.jpg

基础介绍

MicroPython系列
【MicroPython】Pico的基础介绍与环境安装

【MicroPython】machine.Pin类函数详解
【MicroPython】machine.PWM类函数详解
【MicroPython】machine.ADC类函数详解
【MicroPython】machine.UART类函数详解
【MicroPython】machine.I2C类函数详解
【MicroPython】machine.SPI类函数详解

C/C++系列
【C/C++】 Windows教程1——环境搭建

【C/C++】 Windows教程2——创建工程

教程名3
列表3
教程名4
列表4
教程名5
列表5
教程名6
列表6
教程名7
列表7
教程名8
列表8

程序下载

打开树莓派终端,执行:
从我们官网下载。

sudo apt-get install p7zip-full
cd ~
sudo wget  https://www.waveshare.net/w/upload/2/28/2-CH UART TO ETH_CODE.7z
7z x Pico_ETH_CH9121_CODE.7z -o./2-CH UART TO ETH_CODE
cd ~/2-CH UART TO ETH_CODE
cd Pico/c/build/

例程使用

C部分

  • 以下教程为在树莓派上操作,但由于cmake的多平台、可移植的特点,在PC上也是能成功编译,但操作略有不同,需要您自行判断。

进行编译,请确保在c目录:

cd ~/2-CH UART TO ETH_CODE/Pico/C/

2-CH UART TO ETH_CODE/Pico/C/Serial Port Parameter Configuration:用来通过串口配置模式。
2-CH UART TO ETH_CODE/Pico/C/RX_TX:用来进行信息收发,收到什么返回什么。
进入其中一个文件夹中创建并进入build目录,并添加SDK: 其中 ../../pico-sdk 是你的SDK的目录。 我们示例程序中是有build的,直接进入即可

cd build
export PICO_SDK_PATH=../../pico-sdk
(注意:务必写对你自己的SDK所在路径)

执行cmake自动生成Makefile文件

cmake ..

执行make生成可执行文件,第一次编译时间比较久

make -j9

编译完成,会生成uf2文件。 按住Pico板上的按键,将pico通过Micro USB线接到树莓派的USB接口,然后松开按键。接入之后,树莓派会自动识别到一个可移动盘(RPI-RP2),将build文件夹下的main.uf2 文件复制到识别的可移动盘(RPI-RP2)中即可。

cp main.uf2 /media/pi/RPI-RP2/

Python部分

windows环境下的使用

  • 1.按住Pico板上的BOOTSET按键,将pico通过Micro USB线接到电脑的USB接口,待电脑识别出一个可移动硬盘(RPI-RP2)后,松开按键。
  • 2.将python目录中rp2-pico-20210418-v1.15.uf2 文件复制到识别的可移动盘(RPI-RP2)中
  • 3.打开Thonny IDE(注意:要使用最新版本的Thonny,否则是没有Pico的支持包的,当前Windows下的最新版本为v3.3.3)
  • 4.点击工具->设置->解释器,如图所示选择Pico及对应的端口

Pico-lcd-0.96-img-config.png
本例程提供了两个程序:
Serial Port Parameter Configuration.py:该程序用来通过串口配置模式。
RX_TX.py:这个用来进行信息收发,收到什么返回什么。

  • 5.文件->打开->RX_TX.py,点击运行即可,如下图所示:

Pico-lcd-0.96-img-run.png


树莓派环境下的使用

  • 1.刷固件的过程与Windows上一样,你可以选择在PC或者树莓派上将rp2-pico-20210418-v1.15.uf2 文件拷入pico中。
  • 2.在树莓派山打开Thonny IDE (点击树莓logo -> Programming -> Thonny Python IDE ),你可以在Help->About Thonny查看版本信息

以确保你的版本是有Pico支持包的,同样你可以点击Tools -> Options... -> Interpreter选择MicroPython(Raspberry Pi Pico 和ttyACM0端口
如图所示:
Pico-lcd-0.96-img-config2.png
如果你当前的Thonny版本没有pico支持包,输入以下指令来更新Thonny IDE

sudo apt upgrade thonny

3.点击File->Open...->python/RX_TX.py,运行脚本即可

代码简析

C部分

通过串口配置参数(根据你的需求进行修改即可):

  • 数据类型
#define UCHAR unsigned char
#define UBYTE uint8_t
#define UWORD uint16_t
#define UDOUBLE uint32_t
  • 模块初始化:
void CH9121_init(void);
  • 本程序只进行了简单的配置,如需配置其他功能可查阅串口控制命令,自行配置即可:
UCHAR CH9121_Mode           //模式选择
UCHAR CH9121_LOCAL_IP[4]    //本地IP
UCHAR CH9121_GATEWAY[4]     //网关
UCHAR CH9121_SUBNET_MASK[4] //子网掩码
UCHAR CH9121_TARGET_IP[4]   //目标IP
UWORD CH9121_PORT1          //本地端口
UWORD CH9121_TARGET_PORT    //目标端口
UDOUBLE CH9121_BAUD_RATE    //串口波特率
  • 根据串口控制命令合理利用下面函数可进行参数配置:
void CH9121_TX_4_bytes(UCHAR data, int command); //用于模式、是否随机端口、端口是否断开网络连接、是否清空串口数据、是否开启DHCP、是否开启串口2
void CH9121_TX_5_bytes(UWORD data, int command);//用于设置串口的端口号
void CH9121_TX_7_bytes(UCHAR data[], int command);//用于设置IP、子网掩码、网关
void CH9121_TX_BAUD(UDOUBLE data, int command);//用于设置串口的波特率
void CH9121_Eed(); //更新配置参数至 EEPROM、执行配置,复位 9121、离开配置模式

Python部分

用户只需修改Serial Port Parameter Configuration.py里面如下所示的值,就可以对模块进行串口参数配置:

MODE = 1  #0:TCP Server 1:TCP Client 2:UDP Server 3:UDP Client
GATEWAY = (169, 254, 88, 1)   # GATEWAY
TARGET_IP = (169, 254, 88, 17)# TARGET_IP
LOCAL_IP = (169,254,88,70)    # LOCAL_IP
SUBNET_MASK = (255,255,255,0) # SUBNET_MASK
LOCAL_PORT1 = 5000             # LOCAL_PORT1
LOCAL_PORT2 = 4000             # LOCAL_PORT2
TARGET_PORT = 3000            # TARGET_PORT
BAUD_RATE = 115200            # BAUD_RATE

RPI使用教程

提供WiringPi、RPI(Python)库例程

硬件连接

请参考下方的引脚对应表格

树莓派连接引脚对应关系
ETH Raspberry Pi
Wiring编码 Board物理引脚序号
5V 5V 5V
GND GND GND
RXD1 15 8
TXD1 16 10
CFG0 4 16
RST1 5 18


2-CH-UART-TO-ETH-RPI.jpg

开启Uart接口

打开树莓派终端,输入以下指令进入配置界面

sudo raspi-config
选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口
L76X GPS Module rpi serial.png

安装库

BCM2835

#打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/

wiringPi

#打开树莓派终端,并运行以下指令
sudo apt-get install wiringpi
#对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错

#Bullseye分支系统使用如下命令:
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
# 运行gpio -v会出现2.60版本,如果没有出现说明安装出错
  • 安装Python函数库
#python2
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-pil
sudo apt-get install python-numpy
sudo pip install RPi.GPIO
sudo pip install spidev
#python3
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev

下载测试程序

打开树莓派终端,执行:

sudo apt-get install p7zip-full
wget  https://www.waveshare.net/w/upload/2/28/2-CH UART TO ETH_CODE.7z
7z x 2-CH UART TO ETH_CODE.7z -O./2-CH UART TO ETH_CODE
sudo chmod 777 -R 2-CH UART TO ETH_CODE
cd 2-CH UART TO ETH_CODE/RPi

例程使用

C

cd WiringPi
  • Serial Port Parameter Configuration:用来通过串口配置模式。
  • RX_TX:用来进行信息收发,收到什么返回什么。

如果通过上位机配置参数,可直接运行RX_TX来测试传输是否有问题,是否丢包,否则可使用Serial Port Parameter Configuration,来进行设备参数配置。(后面会做函数介绍)

#配置设备参数
cd Serial Port Parameter Configuration
make clean
make
./CH9121_Config
#运行收发程序
cd ..
cd RX_TX
make clean
make
./CH9121_RX_TX

Python

cd Python
  • Serial Port Parameter Configuration.py:用来通过串口配置模式。
  • RX_TX.py:用来进行信息收发,收到什么返回什么。
python3 Serial Port Parameter Configuration.py #通过上位机配置参数可直接运行下面语句即可,否则根据你的需求修改Serial Port Parameter Configuration.py里面的参数,然后运行即可。
python3 RX_TX.py

代码简析

C部分

通过串口配置参数(根据你的需求进行修改即可):

  • 本程序只进行了简单的配置,如需配置其他功能可查阅串口控制命令,自行配置即可:
uint8_t CH9121_Mode           //模式选择
uint8_t CH9121_LOCAL_IP[4]    //本地IP
uint8_t CH9121_GATEWAY[4]     //网关
uint8_t CH9121_SUBNET_MASK[4] //子网掩码
uint8_t CH9121_TARGET_IP[4]   //目标IP
uint16_t CH9121_PORT1          //本地端口
uint16_t CH9121_TARGET_PORT    //目标端口
uint32_t CH9121_BAUD_RATE    //串口波特率
  • 根据串口控制命令合理利用下面函数可进行参数配置:
void CH9121_TX_4_bytes(UCHAR data, int command); //用于模式、是否随机端口、端口是否断开网络连接、是否清空串口数据、是否开启DHCP、是否开启串口2
void CH9121_TX_5_bytes(UWORD data, int command);//用于设置串口的端口号
void CH9121_TX_7_bytes(UCHAR data[], int command);//用于设置IP、子网掩码、网关
void CH9121_TX_BAUD(UDOUBLE data, int command);//用于设置串口的波特率
void CH9121_Eed(); //更新配置参数至 EEPROM、执行配置,复位 9121、离开配置模式

Python部分

用户只需修改Serial Port Parameter Configuration.py里面如下所示的值,就可以对模块进行串口参数配置:

MODE = 1  #0:TCP Server 1:TCP Client 2:UDP Server 3:UDP Client
GATEWAY = (169, 254, 88, 1)   # GATEWAY
TARGET_IP = (169, 254, 88, 17)# TARGET_IP
LOCAL_IP = (169,254,88,70)    # LOCAL_IP
SUBNET_MASK = (255,255,255,0) # SUBNET_MASK
LOCAL_PORT1 = 5000             # LOCAL_PORT1
LOCAL_PORT2 = 4000             # LOCAL_PORT2
TARGET_PORT = 3000            # TARGET_PORT
BAUD_RATE = 115200            # BAUD_RATE

Arduino使用教程

本例程已经在Arduino uno上测试通过,直接按下表连接Arduino uno即可

硬件连接

您可以对照以下表格连线。

Arduino连接引脚对应关系
ETH Arduino 功能
5V 5V 电源输入
GND GND 电源地
RXD1 TX 串行数据输入
TXD1 RX 串行数据输出
CFG0 D2 网络配置使能脚
RST1 D4 复位


2-CH UART TO ETH-Arduino.png

安装编译软件(Windows教程)

arduino IDE 安装教程

运行程序

在我们提供的资料里面下载程序,并解压,再进入2-CH UART TO ETH_CODE/Arduino目录下
如果不想通过上位机去配置参数,可以运行Serial_Port_Parameter_Configuration里面的工程,双击打开.ino文件。
选择你的开发板,跟对应的端口。

CH9121-Arduino-2.jpg

根据你的需求去改变对应的参数,再进行编译下载(再下载过程中不用将ETH的RXD跟TXD连接到Arduino上,否则会下载失败),如下图:
CH9121-Arduino-1.jpg

配置完之后就可以编译下载RX_TX里面的工程,双击打开.ino文件。
下载成功后,运行SSCOM连接ETH模块,就可以给ETH发送数据啦,ETH会返回你发送给它的所有东西。
(记得将RXD跟TXD连接到Arduino上哦)
CH9121-Arduino-3.jpg

代码简析

通过串口配置参数(根据你的需求进行修改即可):

  • 数据类型
#define uint8_t unsigned char
#define uint16_t short unsigned int
#define uint32_t long unsigned int
  • 本程序只进行了简单的配置,如需配置其他功能可查阅串口控制命令,自行配置即可:
uint8_t CH9121_Mode           //模式选择
uint8_t CH9121_LOCAL_IP[4]    //本地IP
uint8_t CH9121_GATEWAY[4]     //网关
uint8_t CH9121_SUBNET_MASK[4] //子网掩码
uint8_t CH9121_TARGET_IP[4]   //目标IP
uint16_t CH9121_PORT1          //本地端口
uint16_t CH9121_TARGET_PORT    //目标端口
uint32_t CH9121_BAUD_RATE    //串口波特率
  • 根据串口控制命令合理利用下面函数可进行参数配置:
void CH9121_TX_4_bytes(UCHAR data, int command); //用于模式、是否随机端口、端口是否断开网络连接、是否清空串口数据、是否开启DHCP、是否开启串口2
void CH9121_TX_5_bytes(UWORD data, int command);//用于设置串口的端口号
void CH9121_TX_7_bytes(UCHAR data[], int command);//用于设置IP、子网掩码、网关
void CH9121_TX_BAUD(UDOUBLE data, int command);//用于设置串口的波特率
void CH9121_Eed(); //更新配置参数至 EEPROM、执行配置,复位 9121、离开配置模式

STM32使用教程

我们提供的例程是基于STM32F103RBT6的,提供的连接方式也是对应的STM32F103RBT6的引脚,如果有需要移植程序,请按实际引脚连接

硬件连接

STM32F103ZET连接引脚对应关系
ETH STM32
5V 5V
GND GND
RXD1 PC10
TXD1 PC11
CFG0 PC12
RST1 PD2

以我们的STM32F103RBT6为例,连接如下图:
2-CH UART TO ETH-STM32.png

软件说明

例程是基于HAL库进行开发的。 请在资料里面下载程序,找到STM32程序文件目录,打开STM32\Serial_Port_Parameter_Configuration\MDK-ARM
目录下的CH9121.uvprojx,即可看到程序。
CH9121 STM32 1.jpg

打开main.c,可以看到可由用户修改的程序,跟你自己的需求修改对应的参数,再重新编译下载即可。
(该函数主要是用来进行串口参数配置,如果使用上位机配置,则直接运行RX_TX文件里面的程序,可测试数据收发,是否会丢包等等)
CH9121 STM32 2.jpg
参数配置好后,将RX_TX文件夹里面的程序下载到STM32里。
下载成功后,运行SSCOM连接ETH模块,就可以给ETH发送数据啦,ETH会返回你发送给它的所有东西。
CH9121-Arduino-3.jpg

代码简析

  • 本程序只进行了简单的配置,如需配置其他功能可查阅串口控制命令,自行配置即可:
uint8_t CH9121_Mode           //模式选择
uint8_t CH9121_LOCAL_IP[4]    //本地IP
uint8_t CH9121_GATEWAY[4]     //网关
uint8_t CH9121_SUBNET_MASK[4] //子网掩码
uint8_t CH9121_TARGET_IP[4]   //目标IP
uint16_t CH9121_PORT1          //本地端口
uint16_t CH9121_TARGET_PORT    //目标端口
uint32_t CH9121_BAUD_RATE    //串口波特率
  • 根据串口控制命令合理利用下面函数可进行参数配置:
void CH9121_TX_4_bytes(UCHAR data, int command); //用于模式、是否随机端口、端口是否断开网络连接、是否清空串口数据、是否开启DHCP、是否开启串口2
void CH9121_TX_5_bytes(UWORD data, int command);//用于设置串口的端口号
void CH9121_TX_7_bytes(UCHAR data[], int command);//用于设置IP、子网掩码、网关
void CH9121_TX_BAUD(UDOUBLE data, int command);//用于设置串口的波特率
void CH9121_Eed(); //更新配置参数至 EEPROM、执行配置,复位 9121、离开配置模式

资料


文档

程序

数据手册

配置跟调试软件

FAQ


技术支持


QQ:2850151199
EMAIL:2850151199@qq.com
电话:0755-83040712
微信:扫下方二维码添加
Service20-Weichat.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证。