模板: UART TO ETH for RPi use

来自Waveshare Wiki
跳转至: 导航搜索

提供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

安装库

如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用

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