通用异步串行通讯接口一般应用方法.doc_第1页
通用异步串行通讯接口一般应用方法.doc_第2页
通用异步串行通讯接口一般应用方法.doc_第3页
通用异步串行通讯接口一般应用方法.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通用异步串行通讯接口一般应用方法 通用异步串行通讯(UART,以下简称:串口通讯),是一般嵌入式工程控制系统中使用非常普遍的一种通讯方式,又主要是以TTL电平、RS232、RS485或RS422总线方式为最多。所以,一般从事工控行业的IT工程师,需撑握串口通讯的一般应用方法,包括接口总线的硬件及通讯协议的软件。但还是有不少的工程师对此不了解,因此该技术文章对串口通讯应用相关的硬件及软件进行一些描述。 串口设备在一般的PC机、单片机、ARM处理器等常用的CPU都有,且有些芯片多达好几个串口。串口通讯是按“字节”进行数据传输,每一个字节的传输由这几个位元素组成:起始位、数据位、校验位、停止位。其中,数据位由应用程序填装,校验位是通过应用程序设置相应的控制寄存器设置,为可选位。设置好校验并填装好要发送的数据后,串口控制器会自动生成数据通讯的波形。因此在通讯波形中就会根据校验设置,增加或不增加校验波形时钟。串口通讯的时序如下所示: 空闲:通讯线上没有任何数据在通讯,这时通讯电平为高电平(均以TTL进行说明) 起始位:通讯电平由高电平变为低电平,表示开始 数据位:开始位以后,接就是数据位,且低位在前,高位在后。(根据不同的控制器,通讯位可设置为7位、8位、9位,具体的要视应用而确定) 校验位:根据数据位的高电平个数及校验设置要求,在该位出现一个高电平或低电平 停止位:通讯电平由低电平变为高电平后且通讯位数据位已达到指定个数,则表示停止通讯。串口通讯的各通讯电平距离说明:TTL:最长安全通讯距离视控制器而定,一般不要超过30cmRS232:最长安全通讯距离不要超过2MRS485/RS422:最长安全通讯距离不能超过1KM如果两个通讯设备在同一个PCB基板或很近的两个板卡之间,可以使用TTL电平进行通讯,如同一机箱内的两个单片机微控制系统。如果两个通讯设备相距很近,但没有在同一系统中,可以使用RS232进行通讯,如控制系统与PC机之间。如两个通讯设备之间距离非常远,则必须使用RS485或RS422方式进行通讯,如室外环境控制与检测设备与控制室的服务器或管理器之间的通讯。串口通讯的基本硬件连接方式:TTL连接:RS232连接:RS485连接:RS422连接:电路连接说明:使用TTL或RS232进行串口通讯时,需要共地处理,即两个系统的地线需要连接在一起,且最好想办法尽可能减小信号线受到外界的干扰,以保证通讯的可靠。由于RS482和RS422使用的是差分信号进行通讯,所以不需要也没必要共地。但是,由于RS485和RS422的通讯距离比较长,因此受到外界环境的共模干扰信号也比较严重,特别是冲击波类型的信号,因此,在RS485和RS422的通讯线一定要使用双绞线,且连接线的最端口位置,需要增加TVS、放电管等对冲击脉冲信号及弱小雷电信号的过滤,对RS485和RS422驱动芯片进行保护。由于使用这种通讯方式的特殊性,因此有必要将通讯驱动部份与系统部份隔离,典型的隔离方法就是使用光电隔离。串口通讯应用软件:无论使用TTL、RS232、RS485、RS422,都需要应用软件对通讯数据进行打包、发送、数据接收、组装、解析,都需要针对自己的应用,编排有利于自己的数据包格式及协议。通常情况下,会相对地设置通讯主机及从机。如远程数据采集系统的应用中,数据服务器是主机,数据采集终端为从机。通讯主机主动发出数据请求,从机等待并接收到有效数据或指令后进行相应处理或回应。因此数据发送过程及数据接收过程则成了串口通讯编程中的重要工作。对于大多数应用中,可以按如下的编程思路:数据发送:准备工作:需要一个全局的数据发送BUFF及发送数据的计数变量,且需要将串口初始化为可使用数据发送状态,关闭串口发送中断。1、组装要发送的数据,并装入数据发送BUFF中,同时统计好数据发送的字节数,放入发送数据的计数变量中。2、设置并打开串口的发送中断。3、串口中断服务代码中,检查是否为发送中断。如果是,则检查是否为发送FIFO为空,确认后,向串口发送的FIFO中放入一定的数据量(该数据量是根据相应的发送FIFO数量而定,如STM32F103,一次只能放一个字节。),同时重新统计要发送的数据个数。如这时发送的数据个数变为0,表示要发送的数据已发送完毕,则关闭串口的发送中断。数据接收:准备工作:同样,需要一个全局的数据接收BUFF及接收到数据总字节数的计数变量,并初始化串口为可接收数据状态,同时打开串口接收中断(如是类似于WinCE系统,它有一个数据接收线程,即类似于数据接收中断)。1、当中断产生时,检查是否为数据接收中断状态,如果是,则从控制器的数据接收BUFF中读取数据并存入全局的数据接收BUFF,同时统计接收个数。2、对当前所接收到的数据或接收到的数据个数进行判断,根据通讯协议的约定,判断本次的数据包是否接收完毕(有些简单的通讯协议,是根据一个特定的字符来进行判断,较为完整点的通讯协议,每一个通讯包可能都有不同的数据长度,这时可以解读数据包中的标识符来判断所接收的数据长度)。如果没有接收完毕,最好是启动一个超时检查定时器(时间一般为3-5个字节通讯所花的时间)或重新装载定时器的值,退出中断代码。如接收完毕,则向特定的数据BUFF或功能函数发消息,并关闭超时检查定时器。同时清理全局的数据接收BUFF及计数变量,为下一个数据包做准备。3、如果超时检查定时器产生中断,则说明通讯数据出了错,这时需要清理全局的数据接收BUFF及计数变量,为下一个数据包做准备,并关闭定时器。 用这种方式进行数据发送的好处就是简单可靠。主要的应用程序中,需要数据发送时,只需要组装好数据并打开发送中断即可,然后数据发送的整个过程,均由中断服务代码完全。在实际代码编写中,数据的接收及处理,要比数据的发送复杂得多!因为在接收数据时,要拼装数据、判断数据是否接收完成、校验数据、解析数据。为了数据的可靠

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论