应用例程:以太网TCP消息的自由发送与接收(基于W5500模块)


基本信息

通过两块STM32F103RCT6核心板,演示如何通过TCP消息进行数据的发送与接收。核心板B采集电位器的数据,转换为电压后,通过TCP消息发送到核心板A,核心板A接收到数据后,将数据通过OLED屏显示出来。

视频下载

暂无

实验硬件

STM32F103RCT6核心板(2块)[ 购买 ]

CH340E通讯小板(2块)[ 购买 ]

Micro-USB通讯线(2根)[ 购买 ]

OLED屏SSD1306(1块)[ 购买 ]

可调电位器模块(1块)[ 购买 ]

W5500以太网通讯模块(2块)[ 购买 ]

电路参考

  • CH340E通讯小板A通过Micro-USB通讯线到连接电脑。
  • CH340E通讯小板A连接STM32F103xC核心板A
    CH340E通讯小板AGND----GNDP4端子STM32F103xC核心板A
    +5V----5V
    TXD----RX
    RXD----TX
  • CH340E通讯小板B通过Micro-USB通讯线到连接电脑。
  • CH340E通讯小板B连接STM32F103xC核心板B
    CH340E通讯小板BGND----GNDP4端子STM32F103xC核心板B
    +5V----5V
    TXD----RX
    RXD----TX
  • OLED屏插入STM32F103xC核心板A的P5端子。
    OLED屏SSD1306GND----GNDP5端子STM32F103xC核心板A
    VCC----V3
    D0----PB3
    D1----PB5
    RES----PD2
    DC----PA15
    CS----PC12
  • 可调电位器模块连接STM32F103xC核心板B
    可调电位器模块OUT----PA5P1端子STM32F103xC核心板B
    VCC----V3P3端子
    GND----GND
  • W5500以太网通讯模块A连接STM32F103xC核心板A
    W5500以太网通讯模块A5V----V5P1端子STM32F103xC核心板A
    GND----GND
    SCS----PA7
    RST----PA6
    SCLK----PB3P2端子
    MOSI----PB5
    MISO----PB4
  • W5500以太网通讯模块B连接STM32F103xC核心板B
    W5500以太网通讯模块B5V----V5P1端子STM32F103xC核心板B
    GND----GND
    SCS----PA7
    RST----PA6
    SCLK----PB3P2端子
    MOSI----PB5
    MISO----PB4
  • W5500以太网通讯模块A连接到路由器。
  • W5500以太网通讯模块B连接到路由器。

关键配置说明

为了简化,这里STM32F103xC核心板A与核心板B采用同一套硬件配置。

添加Tcp蓝图,在蓝图中添加TCP/IP通讯管理模块TcpIp、TCP/IP底层驱动W5500_TcpIpL。需要注意的时,OLED屏与W5500模块分时复用同一路SPI通讯,SPI通讯部分采用OLED屏的配置。

选择模块W5500_TcpIpL,在配置节点LocalAddr中,添加本地物理网卡LocalAddr0,使用的SPI通讯设备为Device0,W5500芯片的复位脚连接到单片机的PA6。网卡默认的IP地址配置为192.168.1.110。

选择模块Spi,在配置节点Job中(通讯任务),查看系统自动添加的通讯任务W5500_TcpIpL_LocalAddr0_SpiJob,将片选管脚设置为PA7。

选择模块TcpIp,在配置节点LocalAddr中,添加本地网卡LocalAddr0,使用W5500_TcpIpL模块中的物理网卡LocalAddr0。

选择模块TcpIp_Fe,在配置节点Port中,添加用户端口Port0。Port0会在TcpIp模块中的本地网卡LocalAddr0中自动创建一个网络连接TcpIp_Fe_Port0_Socket。

A/D转换器、OLED屏的配置可以参考以下两个例程:

应用程序

梯形图(核心板A,接收并显示)

NETWORK 0 用SM0.0驱动指令监听连接Port0的端口3308

NETWORK 1 用SM0.0驱动TCP消息接收任务,一旦任务完成,下一个周期立即重新开启接收

NETWORK 2 当接收任务完成且没有错误时,统计总的报文和有效报文

液晶屏配置(核心板A,接收并显示)

梯形图(核心板B,采集并发送)

NETWORK 0 用SM0.0驱动指令连接到服务器192.168.1.110,端口是3308

NETWORK 1 获取AIW0的变化情况,保存到变量VW2

NETWORK 2 如果不在发送冷却时间内,且数据变化大于4,则更新VW0,并设置因为数据变化需要发送的请求M0.0

NETWORK 3 如果不在发送冷却时间内,且超过1秒没有发送过数据了,设置因为超时需要发送的请求M0.1

NETWORK 4 若有发送请求M0.0或者是M0.1,处理下数据然后启动发送任务

NETWORK 5 统计发送成功的次数

系统块配置(核心板B,采集并发送)

核心板A采用默认配置,IP地址为192.168.1.110。为了核心板A和核心板B地址不冲突,需要在系统快中将核心板B的IP地址修改为192.168.1.111。系统块配置必须在下载到核心板,重新上电后才能生效!

实验步骤

  • 将配置上传到服务器,固件下载到STM32F103xC核心板A和B后,将梯形图A和B也分别下载到核心板A和B,电位器保持不动时,可以看到核心板B定时向核心板A发送数据。扭动电位器时,核心板A上显示的电压立即变化。

指令说明

相关下载