第三十一章 485 实验
1.硬件平台:正点原子探索者STM32F407开发板2.软件平台:MDK5.13.固件库版本:V1.4.0
实验26 485通信实验.zip
(520.84 KB)
本章我们将向大家介绍如何使用STM32F4的串口实现485通信(半双工)。在本章中,我们将使用STM32F4的串口2来实现两块开发板之间的485通信,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 31.1 485 简介 31.2 硬件设计 31.3 软件设计 31.4 下载验证 31.1 485 简介485(一般称作RS485/EIA-485)是隶属于OSI模型物理层的电气特性规定为2线,半双工,多点通信的标准。它的电气特性和RS-232大不一样。用缆线两端的电压差值来表示传递信号。RS485仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。 RS485的特点包括: 1) 接口电平低,不易损坏芯片。RS485的电气特性:逻辑“1”以两线间的电压差为+(2~6)V 表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS232降低了,不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。 2) 传输速率高。10米时,RS485的数据最高传输速率可达35Mbps,在1200m时,传输 速度可达100Kbps。 3) 抗干扰能力强。RS485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力 增强,即抗噪声干扰性好。 4) 传输距离远,支持节点多。RS485总线最长可以传输1200m以上(速率≤100Kbps) 一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。 RS485推荐使用在点对点网络中,线型,总线型,不能是星型,环型网络。理想情况下RS485需要2个终端匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般为120Ω)。没有特性阻抗的话,当所有的设备都静止或者没有能量的时候就会产生噪声,而且线移需要双端的电压差。没有终接电阻的话,会使得较快速的发送端产生多个数据信号的边缘,导致数据传输出错。485推荐的连接方式如图31.1.2所示:
图31.1.2 RS485连接 在上面的连接中,如果需要添加匹配电阻,我们一般在总线的起止端加入,也就是主机和设备4上面各加一个120Ω的匹配电阻。 由于RS485具有传输距离远、传输速度快、支持节点多和抗干扰能力更强等特点,所以RS485有很广泛的应用。 探索者STM32F4开发板采用SP3485作为收发器,该芯片支持3.3V供电,最大传输速度可达10Mbps,支持多达32个节点,并且有输出短路保护。该芯片的框图如图31.1.2所示: 图31.1.2 SP3485框图 图中A、B总线接口,用于连接485总线。RO是接收输出端,DI是发送数据收入端,RE是接收使能信号(低电平有效),DE是发送使能信号(高电平有效)。 本章,我们通过该芯片连接STM32F4的串口2,实现两个开发板之间的485通信。本章将实现这样的功能:通过连接两个探索者STM32F4开发板的RS485接口,然后由KEY0控制发送,当按下一个开发板的KEY0的时候,就发送5个数据给另外一个开发板,并在两个开发板上分别显示发送的值和接收到的值。 本章,我们只需要配置好串口2,就可以实现正常的485通信了,串口2的配置和串口1基本类似,只是串口的时钟来自APB1,最大频率为42Mhz。 31.2 硬件设计本章要用到的硬件资源如下: 1) 指示灯DS0 2) KEY0按键 3) TFTLCD模块 4) 串口2 5) RS485收发芯片SP3485 前面3个之前都已经详细介绍过了,这里我们介绍SP3485和串口2的连接关系,如图31.2.1所示: 图31.2.1 STM32F4与SP3485连接电路图 从上图可以看出:STM32F4的串口2通过P9端口设置,连接到SP3485,通过STM32F4的PG8控制SP3485的收发,当PG8=0的时候,为接收模式;当PG8=1的时候,为发送模式。 这里需要注意,PA2,PA3和ETH_MDIO和PWM_DAC有共用IO,所以在使用的时候,注意分时复用,不能同时使用。另外RS485_RE信号,也和NRF_IRQ共用PG8,所以他们也不可以同时使用,只能分时复用。 另外,图中的R38和R40是两个偏置电阻,用来保证总线空闲时,A、B之间的电压差都会大于200mV(逻辑1)。从而避免因总线空闲时,A、B压差不定,引起逻辑错乱,可能出现的乱码。 然后,我们要设置好开发板上P9排针的连接,通过跳线帽将PA2和PA3分别连接到485_TX和485_RX上面,如图31.2.2所示: 图31.2.2 硬件连接示意图
|