2-CH UART TO ETH
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
说明
产品概述
提供Pico C语言例程跟Python例程
产品参数
参数名称 | 参数 |
供电电压(二选一) | 3.3V/5V |
工作电流 | 140mA |
工作模式 | TCP/UDP |
串口波特率 | 300bps ~ 921600bps |
串口 TTL 电平 | 兼容 3.3V 和 5V |
工作温度 | -40℃~85℃ |
产品尺寸 | 53.00 x22.00(mm) |
接口说明
功能说明
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跟目标端口)
2、通过路由连接模块,再运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改参数,然后点击“配置设备参数”;
(3).配置完成后,模块会重启,稍等一会,点击 “搜索设备”,找到模块,查看配置结果。
(4).根据实际需求修改模块参数,例如:设置网络方式为 TCP CLIENT,目的 IP,目的端口与 TCP SERVER 的
IP 和端口一致,再根据需求修改波特率等参数。然后点击配置设备参数。
3、配置完之后,点击SSCOM的侦听,就连接起来了。
TCP SERVER
1、通过路由连接模块,再运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改网络模式为TCPServre,再根据需求修改模块参数,最后点击“配置设备参数”;
2、通过SSCOM去连接配置成TCP SERVER的模块,连接起来会如下图显示:
UDP CLIENT/SERVER
1、通过路由连接模块,再运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改网络模式为UDP CLIENT/Servre,再根据需求修改模块参数,最后点击“配置设备参数”;
2、通过SSCOM去连接配置成UDP CLIENT/Servre的模块(SSCOM的UDP模式会自动连接,不管你的模式配置成CLIENT/Servre),连接起来会如下图显示:
Pico使用教程
Pico 快速上手
硬件连接
您可以对照以下表格连线。
ETH | Pico | 功能 |
5V | VSYS | 电源输入 |
GND | GND | 电源地 |
RXD1 | GP0 | 串行数据输入 |
TXD1 | GP1 | 串行数据输出 |
RXD2 | GP4 | 串行数据输入 |
TXD2 | GP5 | 串行数据输出 |
CFG0 | GP14 | 网络配置使能脚 |
RST1 | GP17 | 复位 |
基础介绍
程序下载
打开树莓派终端,执行:
从我们官网下载。
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及对应的端口
本例程提供了两个程序:
Serial Port Parameter Configuration.py:该程序用来通过串口配置模式。
RX_TX.py:这个用来进行信息收发,收到什么返回什么。
- 5.文件->打开->RX_TX.py,点击运行即可,如下图所示:
树莓派环境下的使用
- 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端口
如图所示:
如果你当前的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 |
开启Uart接口
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口
安装库
如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用,python库可以不安装,直接运行程序即可
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
#打开树莓派终端,并运行以下指令 cd 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.70版本,如果没有出现说明安装出错
lgpio
wget https://github.com/joan2937/lg/archive/master.zip unzip master.zip cd lg-master sudo make install # 更多的可以参考官网:https://github.com/gpiozero/lg
- 安装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即可
硬件连接
您可以对照以下表格连线。
ETH | Arduino | 功能 |
5V | 5V | 电源输入 |
GND | GND | 电源地 |
RXD1 | TX | 串行数据输入 |
TXD1 | RX | 串行数据输出 |
CFG0 | D2 | 网络配置使能脚 |
RST1 | D4 | 复位 |
安装编译软件(Windows教程)
运行程序
在我们提供的资料里面下载程序,并解压,再进入2-CH UART TO ETH_CODE/Arduino目录下
如果不想通过上位机去配置参数,可以运行Serial_Port_Parameter_Configuration里面的工程,双击打开.ino文件。
选择你的开发板,跟对应的端口。
根据你的需求去改变对应的参数,再进行编译下载(再下载过程中不用将ETH的RXD跟TXD连接到Arduino上,否则会下载失败),如下图:
配置完之后就可以编译下载RX_TX里面的工程,双击打开.ino文件。
下载成功后,运行SSCOM连接ETH模块,就可以给ETH发送数据啦,ETH会返回你发送给它的所有东西。
(记得将RXD跟TXD连接到Arduino上哦)
代码简析
通过串口配置参数(根据你的需求进行修改即可):
- 数据类型
#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的引脚,如果有需要移植程序,请按实际引脚连接
硬件连接
ETH | STM32 |
5V | 5V |
GND | GND |
RXD1 | PC10 |
TXD1 | PC11 |
CFG0 | PC12 |
RST1 | PD2 |
软件说明
例程是基于HAL库进行开发的。
请在资料里面下载程序,找到STM32程序文件目录,打开STM32\Serial_Port_Parameter_Configuration\MDK-ARM
目录下的CH9121.uvprojx,即可看到程序。
打开main.c,可以看到可由用户修改的程序,跟你自己的需求修改对应的参数,再重新编译下载即可。
(该函数主要是用来进行串口参数配置,如果使用上位机配置,则直接运行RX_TX文件里面的程序,可测试数据收发,是否会丢包等等)
参数配置好后,将RX_TX文件夹里面的程序下载到STM32里。
下载成功后,运行SSCOM连接ETH模块,就可以给ETH发送数据啦,ETH会返回你发送给它的所有东西。
代码简析
- 本程序只进行了简单的配置,如需配置其他功能可查阅串口控制命令,自行配置即可:
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