应用例程:串口自由口的发送与接收


基本信息

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

视频下载

暂无

实验硬件

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

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

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

OLED屏SSD1306(1块)[ 购买 ]

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

电路参考

  • Micro-USB通讯线连接电脑和CH340E通讯小板A。
  • CH340E通讯小板A连接STM32F103xC核心板A
    CH340E通讯小板AGND----GNDP4端子STM32F103xC核心板A
    +5V----5V
    TXD----RX
    RXD----TX
  • Micro-USB通讯线连接电脑和CH340E通讯小板B。
  • 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
  • STM32F103xC核心板A连接STM32F103xC核心板B(这里两个USB供电是从同一台电脑出,因此省去的GND的连接)
    STM32F103xC核心板APB11(RX)----PB10(TX)P1端子STM32F103xC核心板B

关键配置说明

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

添加Asc蓝图,在蓝图中添加Asc底层实现USART3_AscL。选择模块USART3_AscL,确认通讯使用的单片机的管脚为PB10、PB11。

选择模块Asc,在配置节点Device中,添加设备Device1,使用的底层实现为USART3_AscL。这里配置了发送使能管脚为PB12,因为使用使用的是TTL电平直连,并不需要发送使能管脚,因此也可以不配,保持为Null。

选择模块Asc_Fe,在配置节点Port中,添加用户端口Port1,使用Asc模块中的设备Device1。

选择模块Asc,在配置节点Job中,分别选择系统自动创建的任务Asc_Fe_Port1_JobTransmit、Asc_Fe_Port1_JobReceive、Asc_Fe_Port1_JobMaster,确认下通讯参数是否正确。

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

应用程序

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

NETWORK 0 用启动信号初始化串口,115200波特率,8位数据位,偶效验,1位停止位

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

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

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

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

NETWORK 0 用启动信号初始化串口,115200波特率,8位数据位,偶效验,1位停止位

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

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

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

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

NETWORK 5 统计发送成功的次数

实验步骤

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

指令说明

相关下载