版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、RS-485总线收发实验 在本章节,我们将介绍RS-485总线的使用。本实验一共需要两块神舟IV号STM32开发 板,一块作为RS485的发送端,另一块作为RS485的接收端,接收总线上的数据。本节分为 如下几个部分: 1 RS-485总线实验的意义与作用 2 实验原理 3 软件设计 4 硬件设计 5 下载与验证 6 实验现象 意义与作用 前面两个例程,我们分别讲解了串口printf实验和串口中断收发实验,对RS232串口原理 及其应用有了一定的了解,但是 由于RS232接口标准出现较早,难免有不足之处,主要有以 下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平
2、不兼容故需使 用电平转换电路方能与TTL电路连接。 (2)传输速率较低,在异步传输时,波特率为20Kbps。 (3)接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易 产生共模干扰,所以抗噪声干扰性弱。 (4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。 针对RS232接口的不足,于是就不断出现了一些新的接口标准,RS-485就是其中之一, 它具有以下特点: (1)RS-485的电气特性:逻辑"1"以两线间的电压差为+(26) V表示;逻辑"0"以两线 间的电压差为-(26)V表示。接口信号电平比RS-
3、232降低了,就不易损坏接口电 路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。 (2)RS-485的数据最高传输速率为10Mbps(实际取决于RS485接口芯片和电路) 。 (3)RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声 干扰性好。 (4)RS-485接口的最大传输距离标准值为4000英尺,实际上可达 3000米,另外RS-232接 口在总线上只允许连接1个收发器, 即单站能力。而RS-485接口在总线上是允许连 接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地 建立起设备网络。 (5)因为RS485接口组
4、成的半双工网络,一般只需二根连线(我们一般叫AB线),所以 RS485接口均采用屏蔽双绞线传输。 基于以上原因,RS485总线在工业控制行业应用非常广泛,适合分散的,远距离(上千 米)的多点通信,这是RS232所不能实现的,因此,通过使用STM32开发板实现RS485的通 信,我们可以了解RS485总线的应用和基本原理,搭建RS485通信网络。 实验原理 RS-485 总线简介 在数据通信,计算机网络以及分布式工业控制系统当中,经常需要使用串行通信来实现 数据交换。目前,有RS-232,RS-485,RS-422几种接口标准用于串行通信。RS-232是最早的串 行接口标准, 在短距离 <
5、15M) 较低波特率串行通信当中得到了广泛应用。 (,其后针对RS-232 接口标准的通信距离短,波特率比较低的状况,在RS-232接口标准的基础上又提出了RS-422 接口标准, RS-485接口标准来克服这些缺陷。 下面详细介绍RS-232,RS-422,RS-485接口标准。 RS-232串口标准是种在低速率串行通讯种增加通讯距离的单端标准。RS-232采取不平 衡传输方式,即单端通讯。其收发端的数据信号都是相对于地信号的。所以其共模抑制能力 差,再加上双绞线的分布电容,其传输距离最大约为15M,最高速率为20KBPS,且其只能 支持点对点通信。 针对RS-232串口标准的局限性,人们又
6、提出了RS-422,RS-485接口标准。RS-485/422采 用平衡发送和差分接收方式实现通信:发送端将串行口的TTL电平信号转换成差分信号A,B 两路输出,经过线缆传输之后在接收端将差分信号还原成TTL电平信号。由于传输线通常使 用双绞线,又是差分传输,所以又极强的抗共模干扰的能力,总线收发器灵敏度很高,可以 检测到低至200mV电压。故传输信号在千米之外都是可以恢复。RS-485/422最大的通信距离 约为1219M,最大传输速率为10Mb/S,传输速率与传输距离成反比,在100Kb/S的传输速率 下,才可以达到最大的通信距离,如果需传输更长的距离,需要加485中继器。 RS-485采
7、用半双工工作方式,支持多点数据通信。RS-485总线网络拓扑一般采用终端 匹配的总线型结构。即采用一条总线将各个节点串接起来,不支持环形或星型网络。如果需 要使用星型结构,就必须使用485中继器或者485集线器才可以。RS-485/422总线一般最大支 持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到 400个节点。 EIA RS-485 标准 在自动化领域,随着分布式控制系统的发展,迫切需要一种总线能适合远距离的数字通 信。 RS-422标准的基础上, 研究出了一种支持多节点、 在EIA 远距离和接收高灵敏度的RS-485 总线标准。 RS-485标
8、准采有用平衡式发送,差分式接收的数据收发器来驱动总线,具体规格要求: 1.接收器的输入电阻RIN³12k 2.驱动器能输出±7V的共模电压 3.输入端的电容£50pF 4.在节点数为32个,配置了120的终端电阻的情况下,驱动器至少还能输出电压 1.5V(终端电阻的大小与所 用双绞线的参数有关) 5.接收器的输入灵敏度为200mV(即(V+)-(V-)³0.2V,表示信号"0";(V+) -(V-)£-0.2V,表示信 号"1") 因为RS-485的远距离、多节点(32个)以及传输线成本低的特性,使得EI
9、A RS-485成为 工业应用中数据传输的首选标准。 影响RS-485总线通讯速度和通信可靠性的三个因素 1、在通信电缆中的信号反射 在通信过程中,有两种信号因导致信号反射:阻抗不连续和阻抗不匹配。 阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会 引起反射,这种信号反射的原理,与光从一种媒质进入另一种媒质要引起反射是相似的。消 除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻, 使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接 一个同样大小的终端电阻。 从理论上分析,在传输电缆的末端只要跨接了与电缆特性
10、阻抗相匹配的终端电阻,就再 也不会出现信号反射现象。但是,在实现应用中,由于传输电缆的特性阻抗与通讯波特率等 应用环境有关,特性阻抗不可能与终端电阻完全相等,因此或多或少的信号反射还会存在。 引起信号反射的另个原因是数据收发器与传输电缆之间的阻抗不匹配。 这种原因引起的 反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱。 信号反射对数据传输的影响,归根结底是因为反射信号触发了接收器输入端的比较器, 使接收器收到了错误的信号,导致CRC校验错误或整个数据帧错误。 要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加偏置电阻的方法。在实际应 用中,对于比较小的反射信号,为简单方便,经常采用
11、加偏置电阻的方法。 2、在通讯电缆中的信号衰减 第二个影响信号传输的因素是信号在电缆的传输过程中衰减。 一条传输电缆可以把它看 出由分布电容、分布电感和电阻联合组成的等效电路,电缆的分布电容C主要是由双绞线的 两条平行导线产生。导线的电阻在这里对信号的影响很小,可以忽略不计。信号的损失主要 是由于电缆的分布电容和分布电感组成的LC低通滤波器。 3、在通讯电缆中的纯阻负载 影响通讯性能的第三个因素是纯阻性负载(也叫直流负载)的大小。这里指的纯阻性负 载主要由终端电阻、偏置电阻和RS-485收发器三者构成。 在叙述EIA RS-485规范时曾提到过RS-485驱动器在带了32个节点,配置了150终
12、端电 阻的情况下,至少能输出1.5V的差分电压。一个接收器的输入电阻为12k,RS-485驱动器 的负载能力为: RL=32个输入电阻并联|2个终端电阻=(12000/32)×(150/2)/(12000/32)+(150/2) »51.7 现在比较常用的RS-485驱动器有MAX485、DS3695、MAX1488/1489以及和利时公司使 用的SN75176A/D等,其中有的RS-485驱动器负载能力可以达到20。在不考虑其它诸多因 素的情况下,按照驱动能力和负载的关系计算,一个驱动器可带节点的最大数量将远远大于 32个。 在通讯波特率比较高的时候,在线路上偏置电阻是很
13、有必要的。它的作用是在线路进入 空闲状态后,把总线上没有数据时(空闲方式)的电平拉离0电平。这样一来,即使线路中 出现了比较小的反射信号或干扰, 挂接在总线上的数据接收器也不会由于这些信号的到来而 产生误动作。 在实际应用中,RS-485总线加偏置电阻有两种方法: (1)把偏置电阻平衡分配给总线上的每一个收发器。这种方法给挂接在RS-485总线上 的每一个收发器加了偏置电阻,给每一个收发器都加了一个偏置电压。 (2)在一段总线上只用一对偏置电阻。这种方法对总线上存在大的反射信号或干扰信号比 较有效。值得注意的是偏置电阻的加入,增加了总线的负载。 神舟IV号RS-485实验原理 本实验主要是利用
14、两块神舟IV号STM32开发板搭建一个简单的RS-485网络,其中一块 神舟IV号作为RS-485接收端,另一块神舟IV号作为RS-485发送端。而PC主要用于显示神舟 IV号通过串口1打印的提示信息。网络示意图如下: 其中神舟IV号-B作为RS-485的发送端,循环发送数据到RS-485总线上,而神舟IV号-A 作为RS-485的接收端,当接收到RS-485总线上的数据,收到完整的数据后,通过串口1将数 据发送到PC机。 硬件设计 在神舟IV号STM32开发板中,RS-485接口与串口2的RS232电平接口进行复用,通过跳 线选择即可以选择神舟IV号的串口2连接到RS-232接口或者RS-4
15、85接口。以下为RS-485接口 芯片及其外围电路原理图。 图表 1 RS485 原理图 神舟IV号开发板载有RS485物理芯片,它与处理器的UART2连接,与串口2复用,可通 过跳线选择支持RS-232接口或RS-485接口,跳线定义如下: JP4 串口2功能选择 1-2 2-3(默认) 串口2 RS-485接口 串口2 RS-232接口 神舟IV号默认是安装了RS-485接口的120欧终端匹配电阻。对应上图的R43,请依据实 际应用选择是否安装此匹配电阻。 上图中U3为RS-485接口芯片SP3485,SP3485是Sipex公司推出的RS-485收发器,它具有 如下特性: 工作电源3.3
16、V; 兼容5V电平逻辑 发送/接收使能控制 总线节点最大支持32个 具有输出短路保护电路 芯片的逻辑框图如下: /RE和DE管脚控制RS-485的收发使能控制。在神舟IV号中,这两个管脚与处理器的PD7 管脚连接,由PD7管脚控制神舟IV号STM32开发板的RS485作为发送端还是接收端。 查看 SP3485 RS-485收发器.pdf 可知, PD7输出高电平, 当此时SP3485芯片的2脚 /RE) (,3脚(DE)都为高电平。SP3485工作与发送模式。逻辑关系如下表所示。 当PD7输出低高电平,此时SP3485芯片的2脚(/RE),3脚(DE)都为低电平。SP3485 工作与接收模式。
17、逻辑关系如下表所示。 另外,上图中的R43的作用是作用RS485的终端匹配电阻,在RS-485总线网络中,终端 匹配电阻主要作用是使总线的阻抗连续, 减小信号的反射, 提高信号的传输质量, 一般RS485 网络的终端匹配电路只需要在总线的最远端的节点并一个即可, 其他接点不需要安装此匹配 电阻。 在神舟 IV 号 STM32 开发板中,默认终端匹配电阻都是安装的(对应原理图的 R43),请 依据实际情况,选择安装或去掉此电阻。 软件设计 在软件设计中,我们先来了解关于ST库函数中配置串口参数。关于STM32的USART的 库 函 数 实 现 , 主 要 是 在 STM32F10x_StdPer
18、iph_Driver 库 的 " stm32f10x_usart.c " 和 " stm32f10x_usart.h " 两 个 文 件 里 。 以 V3.3.0 版 本 的 库 为 例 , 这 两 个 文 件 位 于 "STM32F10x_StdPeriph_Lib_V3.3.0Libraries Stm32F10x_StdPeriph_Driver"目录的"src"和"inc"文件夹里: 在本实验中,程序运行以后,首先通过串口1打印提示信息,提示通过板上的USER1和 USER2按键设置神舟
19、IV号为发送端或者接收端,设置完成后,发送端周期性的发送数据到 RS-485网络上(神舟IV号的RS485收发器与处理器的串口2连接),而接收端等待RS-485网 络上的数据, 并将接收到的完整数据通过串口1打印出来。 因此本实验需要用的资源有串口1, 串口2,按键,LED,RS485收发器。 GPIO 初始化 在本实现中,按键,LED灯以及串口,RS-485收发器方向控制等都是有处理器GPIO连 接的,因此在使用之前,我们需要对相关的GPIO初始化。 注意:由于神舟IV号开发板的RS-485收发器方向控制管脚与LED4的相同,所以初始化 LED4就是初始化RS-485收发器方向控制管脚。 G
20、PIO_KEY_Config()函数完成与按键连接的GPIO初始化。 串口1 printf实现 在实验中,串口1用于打印程序提示信息和RS-485接收/发送的数据,因此,我们初始化 串口1,作为printf函数输出使用。关于printf的实现可参见串口1 printf实验详细说明。主 要代码如下: 首先,完成串口发送单个字节的函数,在库函数模板的main.c中一般会有如下宏定义, 这是为了兼容不同的编译平台。 我们关注串口的发送函数,通过此函数,我们发送一个字符出去。 其中,"USART_SendData(EVAL_COM1,(uint8_t)ch);"是"stm
21、32f10x_usart.c"库文件 中 的 字 符 发 送 函 数 , 然 后 是 while 循 环 等 待 串 行 数 据 发 送 完 成 , "(USART_GetFlagStatus(EVAL_COM1,USART_FLAG_TC)=RESET)"。如果不等待发 送结束就返回,则调用字符串发送函数中printf时,如果上一次发送的字节在寄存器中还没 有发送结束,此时再次写同样的发送寄存器会将刚才的数据覆盖掉,接收侧将得不到预期的 数据。 接下来,我们再来看USART相关的结构体,主要是用来配置串口的波特率,数据位, 奇偶校验位等信息等。 这是关于USAR
22、T_InitTypeDef结构体定义。了解了库函数关于USART的一些相关的函 数,结构体定义后,我们回到本实验中。本实验中直接调用库函数进行设计。在本实验的主 程序中,需要对USART_InitTypeDef结构体进行初始化设置,配置串口的基本参数,具体如 下所示: 到这里,我们就可以像一般的C语言一样,非常方便的使用printf函数来往串口1输出提 示信息了。 串口2 RS485实现 在神舟IV号STM32开发板中,串口2与RS485接口连接,两块神舟IV号STM32开发板通 过RS485通信。在软件程序设计时,基本上,除了需要控制RS485的收发方向外,还是和通 用的串口2收发控制一样设
23、计,在本实验中,我们通过中断的方式进行串口的收发,首先我 们设置串口中断模式和优先级,这个主要是NVIC_Configuration()函数实现的,相关代码如 下: 在使用串口2之前,我们首先需要对串口参数进行配置,主要是配置串口的波特率,数 据位,奇偶校验位等信息等,具体代码如下。 串口发送接收中断服务程序 到这里,我们已经完成了串口的参数配置,由于我们设置串口2为中断中断收发模式, 正常情况下,当串口产生发送或接收中断时,将跳转的对应的中断服务程序中。 首先是头文件的引用和外部变量的声明: 串口中断服务程序是stm32f10x_it.c文件中的USART2_IRQHandler()函数实现
24、。 在进入串 口2中断服务程序以后,首先判断是串口发送中断还是串口接收中断,如果是接收中断,则 将接收到的数据放入BUFFER中,直到接收到的数据个数达到设定的个数或指针越界或者收 到"n"结束符,关闭串口接收中断。 如果是发送中断,则将BUFFER中的数据通过串口2发送出去,直到发送的数据个数达 到设定的个数,关闭串口接收中断。 主程序功能说明 前面,我们完成了各资源接口模块的初始化和参数配置,以及串口的中断服务程序。 主函数首先初始化串口和485总线: 然后是初始化指示灯和485方向控制以及按键等: 在完成了初始化以后,主程序中,首先等待用于通过STM32按键设置神舟I
25、V号RS485 作为接收或发送端设置,如果作为RS485接收端,则将PD7输出低电平,控制SP3485收发器 在接收模式,通过串口1打印提示信息。如果作为RS485发送端,则将PD7输出高电平,控制 SP3485收发器在发送模式,并通过串口1打印提示信息。这主要是通过RS485_Mode_Set() 函数实现的。 设置完神舟IV号的RS485工作模式后,依据实际的工作模式后,程序依据模式执行相关 的代码。 如果为接收模式,则程序使能串口2的中断接收。当串口2接收到到数据时,进入串口2 的中断服务程序,保存接收到的数据。接收完完整的一串数据后,将接收到的数据打印出来。 如果为发送模式,则程序使能
26、串口2的中断发送。主程序在While循环中等待,直到串口 2的中断服务程序中发送完完整的一串数据。 并通过串口1打印发送的数据。 延迟一段时间后, 重复发送。 发送的数据为: 下载与验证 神舟IV号光盘源码目录包含本实验的工程源码,在神舟IV号光盘源码 24、RS-485总 线收发实验.rarProject24、RS-485总线收发实验EWARMv5STM32F107VC -ARMJISHUExe 目录下的ARMJISHU_RS-485总线收发实验.hex文件即为前面我们分析的RS-485总线收发实 验编译好的固件,我们可以直接将固件下载到神舟IV号开发板中,观察运行效果。 如果使用JLINK下载固件,请按错误!未找到引用源。错误!未找到引用源。下载固件 到神舟IV号开发板小节进行操作。 如果使用USB下载固件,请按错误!未找到引用源。错误!未找到引用源。小节进行操 作。 如果使用串口下载固件,请按错误!未找到引用源。错误!未找到引用源。小节进行 操作。 如果在IAR开发环境中,下载编译好的固件或者在线调试,请按错误!未找到引用源。 错误!未找到引用源。小节进行操作。 如果在MDK开发环境中,下载编译好的固件或者在线调试,请按错误!未找到引用源。 错误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论