欢迎来到天天文库
浏览记录
ID:3140484
大小:74.50 KB
页数:13页
时间:2017-11-19
《rs485串口通信原理》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、RS485串口通信原理一、RS485串口通信电路图 二.VxWorks中基于RS485总线的串口通信协议及实现摘 要:本文介绍了在嵌入式实时操作系统Vxworks下串行设备的驱动架构及实现,提出了一种基于RS-485总线的新型串口通信协议,重点讨论了基于这种协议的应用程序的设计方法,发送时主要采用了总线仲裁机制,接收时主要采用了字符合法性校验、长度校验、内容的CRC校验,提高了系统的通信效率和稳定性。关键词:VxWorks;RS-485;通信协议;总线仲裁;CRC校验 RS-485总线RS-485总线接口是一种常用的串口,具有网络连接方便、抗干扰性能好、传输距离远等优点。RS-485
2、收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检测到低达200mv的电压,可靠通信的传输距离可达数千米。使用RS-485总线组网,只需一对双绞线就可实现多系统联网构成分布式系统、设备简单、价格低廉、通信距离长。VxWorks中串口驱动的实现VxWorks操作系统是美国WindRiver公司设计开发的嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。Vxworks操作系统的I/O系统可以提供简单、统一、与任何设备无关的接口。这些设备包括:面向字符设备、随机块存储设备、虚拟设备、控制和监视设备以及网络设备。Vxworks的I/O系统包括基本I/
3、O系统和缓冲I/O系统,具有比其他I/O系统更快速,兼容性更好的特性。这对于实时系统是很重要的。 串口驱动架构基于vxWorks的串口设备驱动程序架构,对vxWorks的虚拟设备ttyDrv进行封装,向上将TTY设备安装到标准的I/O系统中,上层应用通过标准的I/O接口完成对硬件设备的操作,向下提供对实际硬件设备的底层设备驱动程序。其软件架构如图1所示。由图1可知,串口设备驱动由两部分组成,一部分为对ttyDrv进行封装,将串行设备安装到标准的I/O系统中,提供对外的接口;另一部分为串行设备驱动程序,提供对硬件设备的基本操作。虚拟设备ttyDrv管理着I/O系统和真实驱动程序之间的通信。
4、在I/O系统方面,虚拟设备ttyDrv作为一个字符型设备存在,它将自身的入口点函数挂在I/O系统上,创建设备描述符并将其加入到设备列表中。当用户有I/O请求包到达I/O系统中时,I/O系统会调用ttyDrv相应的函数响应请求。同时,ttyDrv管理了缓冲区的互斥和任务的同步操作。另一方面,ttyDrv负责与实际的设备驱动程序交换信息。通过设备驱动程序提供的回调函数及必要的数据结构,ttyDrv将系统的I/O请求作相应的处理后,传递给设备驱动程序,由设备驱动程序完成实际的I/O操作。 驱动初始化串口设备的初始化xxDevInit流程如图2。设备驱动的初始化过程首先调用系统函数ttyDrv
5、(),该函数通过调用iosDrvInstall()将ttyOpen()、ttyIoctl()、tyRead()、tyRead、tyWrite安装到系统驱动函数表中,供I/O系统调用。接着根据用户入参对串口芯片寄存器进行初始化,安装驱动函数指针。最后调用系统函数ttyDevCreate()创建ttyDrv设备。该函数初始化设备描述符,调用tyDevInit()函数初始化tyLib、初始化select功能、创建信号量和输入输出缓冲区,调用iosDevAdd()函数将设备添加到设备列表中并将设备置为中断模式。驱动模块初始化成功后,应用程序就可以用标准的I/O函数read()和write()收发数据了
6、。RS-485通信协议 485通信帧格式表1 485通信帧格式目的地址源地址长度控制帧净荷数据CRC检验1Byte1Byte1Byte2Bytes由长度字节确定,≤255Bytes2Bytes长度字段不包含控制字段、检验字段。校验字段使用CCITT的CRC16的校验方法。校验字段默认是加上的,只有在发送方的CPU负荷比较大时,并且能够保证本帧出现的错误不会对系统产生潜在的和现实的影响,或者保证影响在可以控制在一定范围内并且可以忍受时,才考虑取消校验字段。当接收方接收到帧的总长度减去长度字段值与帧头的长度之和,得到的结果为2时,表明发送方附带了校验和。 485数据链路层帧表2 485链
7、路层帧格式头标志(0x7E)485通信帧尾标志(0x7E)1Byte最大不超过485通信帧的长度(不包括字节拆分的添加字符)2Bytes头标志是任意个数的连续的字符0x7E,尾标志也是任意个数的连续的字符0x7E。预定头标志为1Byte,尾标志为2Bytes,在发送方的CPU认为发送完毕最后一个尾标志字符时,保证第一个尾标志字符能够完全到达目的设备。发送方除头标志或尾标志之外,不允许出现0X7E,
此文档下载收益归作者所有