资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
5.4 串口通信的收与发串口通信的收与发 5.4.1 什么是串口通信什么是串口通信 串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数 据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但 其传输速度比并行传输低。 串口是计算机上一种非常通用的设备通信协议。大多数计算机(不包括笔记本电脑)包 含两个基于 RS-232 的串口。 串口同时也是仪器仪表设备通用的通信协议(串口通信协议也可 以用于获取远程采集设备的数据)。 当年 51 单片机内置串口的时候,被认为是微控制器发展史上的重大事件,因为当时的 串口是唯一一个微控制器与 PC 交互的接口。MCU 微控制器经过这么多年的发展,串口仍然 是其必不可少的接口之一。 5.4.2 串口通信的属性串口通信的属性 1. 通信存在的问题 评价一个通信是否优质,主要体现在传输的速度,数据的正确性,功耗是否低,布线成 本是否低 (例如 1 根线收发都能满足就比 8 根线的并行收发要节约成本) ; 使用是否普及 (就 好像大家都学英语, 世界很大部分的人都可以独立使用英语吗, 会英语的人多, 就非常普及, 可通信面就非常广;如果你学的鸟语,那就只能跟鸟通信,没有人能听懂) 。 2. 串口到底有几个标准?(经常听说有 3 线、5 线串口) 传统的串行接口标准有 22 根线,采用标准 25 芯 D 型插头座(DB25) ,后来使用简化为 9 芯 D 型插座(DB9) ,现在应用中 25 芯插头座已很少采用。 像现在所说的几线串口,一般都是指使用了几根线,最初的 RS-232 串口是 25 针的,所 有的针脚定义都有用到, 后来变成了 9 针的, 所谓全功能串口就是所有的针脚定义都使用上 了,例如流量控制,握手信号等都有用到,一般来说国外的产品做产品比较规矩,把所有的 串口信号都做上去了。但是国内的技术人员发现,其实 RS-232 串口最主要使用的就是 2,3 线, 另外的接口如果不使用的话, 也不会出现很大的问题, 所以, 就在 9 针的基础上做精简, 所以就有所谓的 2,3,4,5,6,8 线的串口出来了。. 2 线串口只有RXD,TXD两根基本的收发信号线; 3 线串口除了RXD和 TXD, 还有 GND; 所谓 49 线只是在 TXD 和 RXD 基础上增加了相应的控制信号线,依据实际需要进行设计。 一般来说,使用 5 线的 232 通信,是加了硬件流控的,即 RTS,CTS 信号,主要是为了 保证高速通信时的可靠性,如果你的通信速度不是很高,完全可以不用理会。 3. 串口的速度与距离 RS-232(串口的英文代名词)采取不平衡传输方式,即所谓单端通讯。由于其发送电平 与接收电平的差仅为 2V 至 3V 左右, 所以其共模抑制能力差,再加上双绞线上的分布电容, 其传送距离最长为约 15 米,最高速率为 20kb/s。RS-232 是为点对点(即只用一对收、发设 备)通讯而设计的,其驱动器负载为 37k。所以 RS-232 适合本地设备之间的通信。 4. 从串口通信衍生出 422 与 485 的通信方式 RS-232、RS-422 与 RS-485 都是串行数据接口标准,最初都是由电子工业协会(EIA) 制订并发布的,RS-232 在 1962 年发布,命名为 EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。 RS-422 由 RS-232 发展而来,它是为弥补 RS-232 之不足而提出的。为改进 RS-232 通信 距离短、速率低的缺点,RS-422 定义了一种平衡通信接口,将传输速率提高到 10Mb/s,传 输距离延长到 4000 英尺(速率低于 100kb/s 时) ,并允许在一条平衡总线上连接最多 10 个 接收器。 RS-422 是一种单机发送、 多机接收的单向、 平衡传输规范, 被命名为 TIA/EIA-422-A 标准。 为扩展应用范围,EIA 又于 1983 年在 RS-422 基础上制定了 RS-485 标准,增加了多点、 双向通信能力, 即允许多个发送器连接到同一条总线上, 同时增加了发送器的驱动能力和冲 突保护特性,扩展了总线共模范围,后命名为 TIA/EIA-485-A 标准。 由于 EIA 提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将 上述标准以 RS 作前缀称谓。 RS-232、RS-422 与 RS-485 标准只对接口的电气特性做出规定,而不涉及接插件、电缆 或协议,在此基础上用户可以建立自己的高层通信协议。因此在视频界的应用,许多厂家都 建立了一套高层通信协议,或公开或厂家独家使用。如录像机厂家中的 Sony 与松下对录像 机的 RS-422 控制协议是有差异的,视频服务器上的控制协议则更多了,如 Louth、Odetis 协议是公开的,而 ProLINK 则是基于 Profile 上的。 5. 串口的通信方式(串口属于串行通信) (1)并行通信和串行通信)并行通信和串行通信 51 单片机与外界通信的基本方式有两种:并行通信和串行通信,并行通信是指利用 多条数据传输线将一个数据的各位同时发送或接收。 串行通信是指利用一条传输线将数据一 位位地顺序发送或接收。 并行通信和串行通信的示意图如下图: 在每一条传输线传输速率相同时, 并行通信的传输速度比和串行通信快。 然而当传输距 离变长时,并行通信的缺点就会凸显,首先是相比于串行通信而言信号易受外部干扰,信号 线之间的相互干扰也增加, 其次是速率提升之后不能保证每根数据线的数据同时到达接收方 而产生接收错误,而且距离越长布线成本越高。 所以并行通信目前主要用在短距离通信,比如处理器与外部的 flash 以及外部 RAM 以 及芯片内部各个功能模块之间的通信。 串行通信以其通信速率快和成本低等优点成为了远距 离通信的首选。RS232C 串口,以及差分串行总线像 RS485 串口、USB 接口、CAN 接口、 IEEE-1394 接口、以太网接口、SATA 接口和 PCIE 接口等都属于串行通信的范畴。 下图左侧为每根数据线的数据同时到达接收方,被正确采样的最理想情况;右侧的图为每根数据线的数据不能同时到达接收方而产生接收错误情形。 (2)异步通信与同步通信 串行通信又分为两种方式:异步通信与同步通信。 A、 异步通信及其协议 异步通信以一个字符为传输单位,通信中两个字符间的时间间隔不固定可以是任意长 的, 然而在同一个字符中的两个相邻位代码间的时间间隔是固定的, 接收时钟和发送时钟只 要相近就可以。 通信双方必须使用约定的相同的一些规则(也叫通信协议) 。 常见的传送 一个字符的信息格式规定有起始位、 数据位、 奇偶校验位、 停止位等, 其中各位的意义如下: 或 起始位 先发出一个逻辑”0”信号,表示传输字符的开始。 数据位 紧接着起始位之后。数据位的个数可以是 5、6、7、8 等,构成一个字符。一般采用扩展的 ASCII 码,范围是 0255,使用 8 位表示。首先传送最低位。 奇偶校验位(不是必须) 奇偶校验是串口通信中一种简单的检错方式,当然没 有校验位也是可以的。数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。例如,如果数据是 01100000,那么对于偶 校验,校验位为 0。 停止位 它是一个字符数据的结束标志。可以是 1 位、1.5 位、2 位的高电平。由于数 据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台 设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计 算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度 越大,但是数据传输率同时也越慢。 空闲位 处于逻辑“1”状态,表示当前线路上没有数据传送。 B、同步通信是指数据传送是以一个帧(数据块或一组字符)为传输单位,每个帧中包含有 多个字符。在通信过程中,字符与字符之间、字符内部的位与位之间都同步,每个字符间的 时间间隔是相等的, 而且每个字符中各相邻位代码间的时间间隔也是固定的。 同步通信的数 据格式如图所示 同步通信的特点可以概括为: 以数据块为单位传送信息。 在一个数据块(信息帧)内,字符与字符间无间隔。 接收时钟与发送进钟严格同步 同步串行通信方式中一次连续传输一块数据, 开始前使用同步信号作为同步的依据。 同 步字符的插入可以是单同步字符方式或双同步字符方式, 均由同步字符、 数据字符和校验字 符 CRC 等三部分组成: 同步字符位于帧结构开头,用于确认数据字符的开始。 数据字符在同步字符之后,字符个数不受限制,由所需传输的数据块长度决定; 校验字符有 12 个,位于帧结构末尾,用于接收端对接收到的数据字符的正确性的校 验。 由于连续传输一个数据块, 故收发双方时钟必须相当一致, 否则时钟漂移会造成接收方 数据辨认错误。 这种方式下往往是发送方在发送数据的同时也通过一根专门的时钟信号线同 时发送时钟信息,接收方使用发送方的时钟来接由数据。同步串行通信方式传输效率高,但 对硬件要求高,电路结构复杂。 所有的串行接口电路都是以并行数据形式与 CPU 接口、而以串行数据形式与外部逻辑 接口。所以串口对外应该是串行发送的,速度慢,但是比并行传输要稳定很多。 6. 串口是如何解决干扰以及校验的问题 什么是数据校验?通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据 计算出的一个校验值。 接收方用同样的算法计算一次校验值, 如果和随数据提供的校验值一 样,就说明数据是完整的。 为了理解数据校验,什么是最简单的校验呢?最简单的校验就是把原始数据和待比较数 据直接进行比较, 看是否完全一样这种方法是最安全最准确的。 同时这样的比对方式也是效 率最低的。只适用于简单的数据量极小的通信。 串口通信使用的是奇偶校验方法,具体实现方法是在数据存储和传输中,字节中额外增 加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来;也就是说单片机串口 通讯有一模式就是一次发送 8 位的数据通讯,增加一位第 9 位用于放校验值。 奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中 “1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用 何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数 为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数, 从而确定传输代码的正确性。 奇偶校验能够检测出信息传输过程中的部分误码(1 位误码能检出,2 位及 2 位以上误 码不能检出) ,同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍 得到了广泛使用。 5.4.3 什么是单片机的什么是单片机的TTL电平?电平? 单片机是一种数字集成芯片,数字电路中只有两种电平:高电平和低电平;高电平和低 电平是通过单片机的管脚进行输入和输出的, 我们只要记住一句话, 单片机管脚不是输入就 是输出,不是高电平就是低电平。 为了让大家在初学的时候对电平特性有一个清晰的认识, 我们暂且定义单片机输出与输 入为 TTL 电平,其中高电平为+5V,低电平为 OV。计算机的串口出来的为 RS-232C 电平,其 中高电平为-5V -12V,低电平为+5V+12V。这里要强调的是,RS-232C 电平为负逻辑电 平,所以高电平为负的,低电平为正的,大家千万不要认为上面是我写错了,因此当计算机 与单片机之间要通信时,需要加电平转换芯片,我们在神舟 51 单片机实验板上所加的电平 转换芯片是 MAX3232(在串口 DB9 座附近)。初学者在学习时先掌握上面这点就够了,若有 兴趣请大家再看下面的知识点常用逻辑电平。 知识点:常
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号