2-CH UART TO ETH-RPI使用教程

提供WiringPi、RPI(Python)库例程

硬件连接

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

树莓派连接引脚对应关系
ETHRaspberry Pi
Wiring编码Board物理引脚序号
5V5V5V
GNDGNDGND
RXD1158
TXD11610
CFG0416
RST1518

直连


开启Uart接口

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

  1. sudo raspi-config
  2. 选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口


安装库

  • 安装BCM2835, 打开树莓派终端,并运行以下指令
  1. wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.68.tar.gz
  2. tar zxvf bcm2835-1.68.tar.gz
  3. cd bcm2835-1.68/
  4. sudo ./configure && sudo make && sudo make check && sudo make install
  5. # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
  • 安装wiringPi
  1. sudo apt-get install wiringpi
  2. #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
  3. wget https://project-downloads.drogon.net/wiringpi-latest.deb
  4. sudo dpkg -i wiringpi-latest.deb
  5. gpio -v
  6. # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
  • 安装Python函数库
  1. #python2
  2. sudo apt-get update
  3. sudo apt-get install python-pip
  4. sudo apt-get install python-pil
  5. sudo apt-get install python-numpy
  6. sudo pip install RPi.GPIO
  7. sudo pip install spidev
  8. #python3
  9. sudo apt-get update
  10. sudo apt-get install python3-pip
  11. sudo apt-get install python3-pil
  12. sudo apt-get install python3-numpy
  13. sudo pip3 install RPi.GPIO
  14. sudo pip3 install spidev

下载测试程序

打开树莓派终端,执行:

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

例程使用

C

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

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

  1. #配置设备参数
  2. cd Serial Port Parameter Configuration
  3. make clean
  4. make
  5. ./CH9121_Config
  6. #运行收发程序
  7. cd ..
  8. cd RX_TX
  9. make clean
  10. make
  11. ./CH9121_RX_TX

Python

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

代码简析

C部分

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

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

Python部分

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

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