RS485通信原理(整理)(一).pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、RS485 串口通信电路图 二.VxWorks 中基于RS485 总线的串口通信协议及实现 摘 要:本文介绍了在嵌入式实时操作系统 Vxworks 下串行设备的驱动架构 及实现,提出了一种基于 RS-485 总线的新型串口通信协议,重点讨论了基于这 种协议的应用程序的设计方法,发送时主要采用了总线仲裁机制,接收时主要采 用了字符合法性校验、长度校验、内容的 CRC 校验,提高了系统的通信效率和稳 定性。 关键词:VxWorks;RS-485;通信协议;总线仲裁;CRC 校验 1 引言 随着信息技术和互联网的飞速发展,以及计算机、通讯、数码产品等领域的高速 增长,数字化时代已经来临。嵌入式设备是数字化时代的主流产品,嵌入式软件 是数字化产品的核心,作为嵌入式软件的基础和关键,嵌入式操作系统在产业发 展过程中扮演着越来越重要的角色,应用遍及工业自动化、网络通信、航空航天、 医疗仪器等领域。 2 RS-485 总线 RS-485 总线接口是一种常用的串口,具有网络连接方便、抗干扰性能好、传输 距离远等优点。RS-485 收发器采用平衡发送和差分接收,因此具有抑制共模干 扰的能力,加上收发器具有高的灵敏度,能检测到低达 200mv 的电压,可靠通信 的传输距离可达数千米。使用RS-485 总线组网,只需一对双绞线就可实现多系 统联网构成分布式系统、设备简单、价格低廉、通信距离长。 1 3 VxWorks 中串口驱动的实现 VxWorks 操作系统是美国 Wind River 公司设计开发的嵌入式实时操作系统 (RTOS),是嵌入式开发环境的关键组成部分。Vxworks 操作系统的 I/O 系统可 以提供简单、统一、与任何设备无关的接口。这些设备包括:面向字符设备、随 机块存储设备、虚拟设备、控制和监视设备以及网络设备。Vxworks 的 I/O 系 统包括基本 I/O 系统和缓冲 I/O 系统,具有比其他 I/O 系统更快速,兼容性更 好的特性。这对于实时系统是很重要的。 3.1 串口驱动架构 基于 vxWorks 的串口设备驱动程序架构,对 vxWorks 的 虚拟设备 ttyDrv 进行封装,向上将 TTY 设备安装到标 准的 I/O 系统中,上层应用通过标准的 I/O 接口完成 对硬件设备的操作,向下提供对实际硬件设备的底层设 备驱动程序。其软件架构如图 1 所示。 由图 1 可知,串口设备驱动由两部分组成,一部分为对 ttyDrv 进行封装,将串行设备安装到标准的 I/O 系统 中,提供对外的接口;另一部分为串行设备驱动程序, 提供对硬件设备的基本操作。 虚拟设备 ttyDrv 管理着 I/O 系统和真实驱动程序之间 的通信。在 I/O 系统方面,虚拟设备 ttyDrv 作为一个 字符型设备存在,它将自身的入口点函数挂在 I/O 系统 上,创建设备描述符并将其加入到设备列表中。当用户有 I/O 请求包到达 I/O 系统中时,I/O 系统会调用 ttyDrv 相应的函数响应请求。同时,ttyDrv 管理了 缓冲区的互斥和任务的同步操作。另一方面,ttyDrv 负责与实际的设备驱动程 序交换信息。通过设备驱动程序提供的回调函数及必要的数据结构,ttyDrv 将 系统的 I/O 请求作相应的处理后,传递给设备驱动程序,由设备驱动程序完成实 际的 I/O 操作。 3.2 驱动初始化 串口设备的初始化xxDevInit 流程如图 2。 设备驱动的初始化过程首先调用系统函数 ttyDrv(),该 函数通过调用 iosDrvInstall()将 ttyOpen()、 ttyIoctl()、tyRead()、tyRead、tyWrite 安装到系统 驱动函数表中,供 I/O 系统调用。 2 接着根据用户入参对串口芯片寄存器进行初始化,安装驱动函数指针。 最后调用系统函数 ttyDevCreate()创建 ttyDrv 设备。该函数初始化设备描述符, 调用 tyDevInit()函数初始化 tyLib、初始化 select 功能、创建信号量和输入输 出缓冲区,调用 iosDevAdd()函数将设备添加到设备列表中并将设备置为中断模 式。 驱动模块初始化成功后,应用程序就可以用标准的 I/O 函数 read()和 write() 收发数据了。 4 RS-485 通信协议 4.1 485 通信帧格式 表 1 485 通信帧格式 目的地址

文档评论(0)

number02 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档