首页 串口通信原理汇总

串口通信原理汇总

举报
开通vip

串口通信原理汇总串口通信原理汇总 rs232 串口通信原理串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 Universal Serial Bus 或者 USB 混淆)。大多数计算机包含两个基于 RS232 的串口。串口同时也是仪器仪表设备通用的通信协议;很多 GPIB 兼容的设备也带有 RS-232 口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简...

串口通信原理汇总
串口通信原理汇总 rs232 串口通信原理串口是计算机上一种非常通用设备通信的 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 (不要与通用串行总线 Universal Serial Bus 或者 USB 混淆)。大多数计算机包含两个基于 RS232 的串口。串口同时也是仪器仪表设备通用的通信协议;很多 GPIB 兼容的设备也带有 RS-232 口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如 IEEE488 定义并行通行状态时,规定设备线总长不得超过 20 米,并且任意两个设备间的长度不得超过 2 米;而对于串口而言,长度可达 1200米。典型地,串口用于 ASCII 码字符的传输。通信使用 3 根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的 bit 的个数。例如 300 波特表示每秒钟发送 300 个 bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要 4800 波特率,那么时钟是 4800Hz。这意味着串口通信在数据线上的采样率为 4800Hz。通常电话线的波特率为 14400,28800 和 36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是 GPIB 设备的通信。b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是 8 位的,标准的值是 5、7 和 8 位。如何设置取决于你想传送的信息。比如,标准的 ASCII 码是 0,127(7 位)。扩展的 ASCII 码是 0,255(8 位)。如果数据使用简单的文本(标准 ASCII 码),那么每个数据包使用 7 位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。c,停止位:用于表示单个包的最后一位。典型的值为 1,1.5 和 2 位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是 011,那么对于偶校验,校验位为 0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位 1,这样就有 3 个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步.RS485 串口通信电路图二.VxWorks 中基于 RS485 总线的串口通信协议及实现摘 要:本文介绍了在嵌入式实时操作系统 Vxworks 下串行设备的驱动架构及实现,提出了一种基于 RS-485 总线的新型串口通信协议,重点讨论了基于这种协议的应用程序的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 方法,发送时主要采用了总线仲裁机制,接收时主要采用了字符合法性校验、长度校验、内容的 CRC 校验,提高了系统的通信效率和稳定性。关键词:VxWorks;RS-485;通信协议;总线仲裁;CRC 校验RS-485 总线RS-485 总线接口是一种常 用的串口,具有网络连接方便、抗干扰性能好、传输距离远等优点。RS-485 收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 到低达 200mv 的电压,可靠通信的传输距离可达数千米。使用 RS-485 总线组网,只需一对双绞线就可实现多系统联网构成分布式系统、设备简单、价格低廉、通信距离长。VxWorks 中串口驱动的实现VxWorks 操作系统是美国 Wind River 公司设计开发的嵌入式实时操作系统RTOS,是嵌入式开发环境的关键组成部分。Vxworks 操作系统的 I/O 系统可以提供简单、统一、与任何设备无关的接口。这些设备包括:面向字符设备、随机块存储设备、虚拟设备、控制和监视设备以及网络设备。Vxworks 的 I/O 系统包括基本 I/O 系统和缓冲 I/O 系统,具有比其他 I/O 系统更快速,兼容性更好的特性。这对于实时系统是很重要的。 串口驱动架构基于 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 操作。 驱动初始化串口设备的初始化 xxDevInit 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 如图 2。设 备 驱 动 的 初 始 化 过 程 首 先 调 用 系 统 函 数 ttyDrv , 该 函 数 通 过 调 用iosDrvInstall将 ttyOpen、ttyIoctl、tyRead、tyRead、tyWrite 安装到系统驱动函数表中,供 I/O 系统调用。接着根据用户入参对串口芯片寄存器进行初始化,安装驱动函数指针。最后调用系统函数 ttyDevCreate创建 ttyDrv 设备。该函数初始化设备描述符,调用 tyDevInit函数初始化 tyLib、初始化 select 功能、创建信号量和输入输出缓冲区,调用 iosDevAdd函数将设备添加到设备列表中并将设备置为中断模式。驱动模块初始化成功后,应用程序就可以用标准的 I/O 函数 read和 write收发数据了。RS-485 通信协议 485 通 信 帧 格 式表 1 485 通信帧格式目的地址 源地址 长度 控制 帧净荷数据 CRC 检验 1Byte 1Byte 1Byte 2Bytes 由 长 度 字 节 确 定 ,2Bytes ?255Bytes 长度字段不包含控制字段、检验字段。校验字段使用 CCITT 的 CRC16 的校验 方法。校验字段默认是加上的,只有在发送方的 CPU 负荷比较大时,并且能够 保证本帧出现的错误不会对系统产生潜在的和现实的影响,或者保证影响在可以 控制在一定范围内并且可以忍受时,才考虑取消校验字段。当接收方接收到帧的 总长度减去长度字段值与帧头的长度之和,得到的结果为 2 时,表明发送方附带 了校验和。 485 数 据 链 路 层 帧 表 2 485 链路层帧格式 头 标 志485 通信帧 尾 标 志 (0x7E) (0x7E) 1Byte 最大不超过 485 通信帧的长度(不包括字节拆2Bytes 分的添加字符) 头标志是任意个数的连续的字符 0x7E,尾标志也是任意个数的连续的字符 0x7E。预定头标志为 1Byte,尾标志为 2Bytes,在发送方的 CPU 认为发送完毕 最后一个尾标志字符时,保证第一个尾标志字符能够完全到达目的设备。发送方 除头标志或尾标志之外,不允许出现 0X7E,若遇到 0X7E,则拆分成 0X7D, 0X5E;若出现 0X7D,则拆分成 0X7D,0X5D 传送。 串行通信应用程序设计 初始化配置 创建一个 51200Bytes 的接收环形缓冲区,用来存放剩余的或不成帧的数 据:g_tRecvRingId rngCreate51200 串口设备描述符为 “myCom”,打开串口并创建设备读写描述符: g_sdwChannelFD open“myCom” O_RDWR 0 设 置 波 特 率 : ioctlg_sdwChannelFD FIOBAUDRATE g_RS485LinkCBi.sdwBaudRate 清空接收、发送缓存:ioctlg_sdwChannelFD FIOFLUSH0 工作模式设置:ioctlg_sdwChannelFD FIOSETOPTIONS OPT_RAW 通信发送过程 在发送之前,发送方需要按照双方约定的 485 通信帧格式将消息组帧,并 按照约定数据链路传输协议组成 485 的数据链路帧。接下来就是如何发送 数据包了。 在 RS-485 通信中,发送过程主要采取了总线仲裁机制: 在向 485 总线写数据时,主设备先写一字节的地址请求,所有的从设备均会收 到,只有地址与之相等的从设备端口打开,其他设备全部关闭。这样,主设备与 从设备之间的通信就是点对点的。每一个从设备均有一根请求线与主设备相连,若从设备需要与主设备通信时,先通过请求线进行请求,当请求成功后,从设备应能检测到总线上的地址与自身地址相同,从设备才能打开发送中断,才能发送消息,发送完之后必须关闭发送中断,释放总线,以保证其他从设备这段时间能与主设备正常通信,提高通信效率。RS-485 通信发送流程图如图 3 所示。 通信接收过程对于串口通信,仍然要关心数据接收的实时性,因此采用中断方式,利用VxWorks 提供的 select 函数的事件触发机制, 将读串口的任务阻塞使其一直等待数据,当有数据来到的时候该任务会立刻自动响应,提高系统的实时性,调用read 接收数据并存入先前创建的接收环形缓冲区 g_tRecvRingId 中直至缓冲区 g_tRecvRingId 满或接收完链路上的数据,接下来就是根据通信协议来处理数据包――解帧处理过程。接收方判断开始 485 通信帧的条件是,设备不 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 接收错误的情况下,接收到0x7E 字符之后的第一个非 0x7E 的字符。判断帧结束的条件是,帧接收已经开始,遇到第一个尾标志字符。在两个 0X7E 间若收到 0X7D,则丢弃,并将其后的一个字节数据与 0X20 异或。当链路层的通信帧接收已经开始的情况下,设备报告字符接收错误,此时应当丢弃本帧,结束帧的接收,重新开始搜索下一帧。长度字段后面的字节个数不等于长度字段指示,并且也不等于长度字段加 2 时,指示长度错误,作无效帧。帧长度小于帧头的长度的帧视为无效帧。当接收的字符个数超过最大的 485 通信帧字节数——262 时,也认为接收错误,重新开始搜索头标志,检出下一帧数据。超时保护:如果接收收方在接收一帧数据时,在未接收完一帧时,超过 20ms(2个 Ticks)仍未有数据到达,则认为本帧数据接收结束,并将其丢弃。在允许进行校验的情况下,对接收到的帧进行 CRC 校验。如果校验字段与帧的校验结果不符,认为帧出错,通常作丢弃处理。帧头中,目的地址与接收单元不匹配时,丢弃该帧。
本文档为【串口通信原理汇总】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_153723
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:0
分类:企业经营
上传时间:2017-10-10
浏览量:15