电子设计创新训练(提高)第五章_常用串行通讯规范及具体编程方法

上传人:xh****66 文档编号:62154170 上传时间:2018-12-17 格式:PPT 页数:27 大小:483KB
返回 下载 相关 举报
电子设计创新训练(提高)第五章_常用串行通讯规范及具体编程方法_第1页
第1页 / 共27页
电子设计创新训练(提高)第五章_常用串行通讯规范及具体编程方法_第2页
第2页 / 共27页
电子设计创新训练(提高)第五章_常用串行通讯规范及具体编程方法_第3页
第3页 / 共27页
电子设计创新训练(提高)第五章_常用串行通讯规范及具体编程方法_第4页
第4页 / 共27页
电子设计创新训练(提高)第五章_常用串行通讯规范及具体编程方法_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《电子设计创新训练(提高)第五章_常用串行通讯规范及具体编程方法》由会员分享,可在线阅读,更多相关《电子设计创新训练(提高)第五章_常用串行通讯规范及具体编程方法(27页珍藏版)》请在金锄头文库上搜索。

1、第五章 常用串行通讯规范及具体编程方法,基本概念 两种通讯方式: 并行通讯:数据的各位同时传送,传送速度高,距离短。 串行通讯:数据一位一位顺序传送,传送速度低,传送距离长,几十至几千米。 目前,少量多CPU并行的系统中还存在并行通讯,少量计算机设备仅举例通讯也采用并行通讯(打印电缆、智能仪器的GPIB接口)。绝大多数的计算机设备间通讯都采用串行方式。,5-1 常用串行通讯硬件规范,一、普通TTL或者CMOS逻辑 此类规范其实就是MCU或者串口芯片(16C550)等的直接逻辑接口,一般的低电平逻辑为0V,高电平为5V。现在许多MCU也支持2.73.6V的高电平逻辑。 实际上这类信号传输为纯粹的

2、单端方式,即不平衡方式:用单线传输信号,以地线作为信号的回路,接收器是用单线输入信号的,抗干扰能力差。 又由于信号最高电平就是数字系统的电源电平,因此基本无传输距离可言。 一般仅用于多MCU系统中,用于多任务时,主MCU与辅助MCU之间进行信息交换。,MCU的串口一般只提供RXD和TXD信号,不提供握手信号。16C550芯片是8250的扩展版本,支持握手信号。8250实际上原来大量应用于PC机,现在基本上被16C550取代(南桥集成)。,16C550具有RTS(请求发送)和CTS(清除发送)等信号端,能够进行有握手的信号传递。 同时,为应用于繁忙的系统,它扩展有16个接收和16个发送缓冲器。尤

3、其是接收缓冲器能够支持系统在不能够及时收取数据时不至于丢失上一帧已经接收到的数据。,图5-1 16C550管脚图,二、 RS-232C标准 鉴于普通的TTL或者CMOS逻辑基本无法实现计算机设备之间的通讯,出现了RS-232C标准 。 采用单端,双极性电压供电;使用负逻辑,一般515V表示低电平,-5-15V表示高电平。接收器的输入检测电平 逻辑0:+3V ; 逻辑1:-3V ;每个信号一根导线,双向共用一个地线; 采用不平衡的发送器和接收器,易被干扰;传输速率20Kbps时,安全传输距离15米;连接器有25插针、9插针等设计方案。 RS-232C标准定义了除地线之外的8个信号线,不过一般情况

4、下,其中RXD、TXD、GND三线就能够完成工作。其它的信号线都是辅助的握手信号,都是用来在传输过程中保证数据可靠接收的辅助信息。许多情况下,在系统具有做够快的处理速度和可靠的数据校验能力时,可以不使用辅助信号线。 表5-1为9针D型接头RS-232C标准的引脚信息,目前所有PC机上的COM1都是这种标准。,表5-1 RS232C的9针引脚信号规范,三、RS422/RS485规范 用双绞线传输信号,信号在双绞线中自成回路不通过地线,接收器以双端差动方式输入信号,抗干扰能力强。平衡,双极性电压供电;平衡驱动和差分接收方式,取消地线;抗干扰能力强;传输速率高,距离远。电源采用普通5V,目前也有芯片

5、支持3V电源。 RS-422A的传输率最大为10Mb/s,在此速率下,电缆允许长度为120m。如果采用较低传输速率,如90kb/s,最大距离可达1200m。 RS-485是RS-422A的变形,收发公用2根信号线。RS-422A为全双工,可同时发送和接收;RS-485则为半双工,在某一时刻,一个发送另一个接收,能够实现总线型网络。,图5-2 RS422/RS485传输逻辑图,图5-3 RS485以总线方式传输逻辑图,RS485规范由于采用半双工方式,同时使用2根信号线传输双向数据,故此可以构成典型的总线型网络,更常用。即:网络上始终仅存在一个主机,其它都为从机(可以通过交换权利更换主机)。具体

6、总线连接形式如图5-3,对于远激励应用,两个终端一般需要配置终端120欧姆电阻。,表5-2 3种常用接口规范主要性能比较,5-2 常用串行通讯芯片,一、RS232通讯芯片 (一)早期芯片 早期的RS232通讯,典型使用的芯片是:发送为MC1488,它采用双电源供电,将TTL电平转换为负逻辑;接受MC1489,它采用5V供电,将负逻辑转换为正常的TTL电平。连接使用见图5-4。,图5-4 早期RS232芯片连接图,(二)目前常用芯片 鉴于早期的芯片为芯片组,芯片数目多;同时,系统还必须为芯片提供双电源。因此整个系统结构复杂,目前常用的为单芯片,芯片本身在完成收发的同时,自身在单5V(3V)的供电

7、下产生双输出驱动电源(12V)。常见的芯片有MAX232,目前也大量使用它的升级版本:MAX202,升级版本把原来需要的4个1微法电容换成了104。此芯片提供2路输入与两路输出。,图5-5 MAX232芯片管脚与连接图,鉴于目前大量的电池供电系统的应用,3V系统已经大量应用。许多公司适时推出了3V版本的单电源232芯片产品,例如SIPEX公司推出了SP3232芯片即支持2.75V电源。,图5-6 SP3232芯片管脚与连接图,二、RS485通讯芯片 目前各大半导体公司都推出了大量的RS485通讯芯片,典型的有TI公司的75LBC184。它采用单5V供电,高输入内阻,因此可以在一条总线上挂128

8、个终端。对于3V系统,SN75HVD08是一个比较好的选择,它甚至可以在一条总线上挂256个终端。,图5-7 RS485芯片管脚、结构与真值表,大多数RS485通讯都用于长距离下使用,考虑到系统由多个终端组成,环境情况不可估计,因此,为个终端抗干扰考虑,一般均会采用光电隔离措施。如图5-8,为采用高速光电隔离器6N137的隔离RS485电路。,图5-8 高速光电隔离的RS485电路,5-3 串行通讯应用编程举例,一、理想情况下的串行通讯举例 条件:多MCU并行系统,其中主MCU一个,辅助MCU多个。 进行主从通讯。 要求:主机与从机通讯,收集从机处理完毕的信息。 系统结构:如图5-9。,图5-

9、9 主从MCU串行通讯连接图,(一)通讯方式 1.此系统为纯粹的主从方式,从机只能同时有一个与主机通讯! 2.从机必须分配地址号,主机按照地址进行甄别呼叫。 (二)通讯协议 任何通讯都必须遵守彼此约定的固定格式,以能够相互理解通讯的内容。这种彼此约定的格式就是通讯协议。 本例定义协议如下: 主机:地址(1字节)+命令(1字节)+命令内容(1字节)。其中,地址可以是1255,0号一般定义为公共广播地址;命令号可以是0255,表示要求从机进行不同操作(如:0127为写操作,直接对应从机接收寄存器地址,命令内容为写入内容;128255为读命令,对应从机0127号寄存器地址);命令内容是可能传送下来的

10、数据。,从机: 1.当主机发送写命令时,应答一个字节AAH,表示收到。 2.当主机发送读命令时,应答主机要求传送的寄存器内容(假设为一个字节)。 假设均使用51系列MCU,因此可以设置为串行通讯方式3工作,能够保持较高的通讯速度。 (三)软件设计思路 对于主机,与从机通讯完全是主动的,因此,通讯完全可以采用主程序完成,因此,对于主机,通讯程序只是一个普通的函数。 对于从机,因为主机呼叫是随机的,因此只能采用中断方式接收处理,才能满足实时任务处理的需要。,图5-10 主MCU通讯软件框图,此函数应该为带有入口型参的函数,同时又是一个返回型函数。 入口参数应该有3个CHAR变量:从机地址、命令号、

11、命令内容。 返回参数应该包含两个信息:成功与失败信息、返回内容。可以直接返回一个INT型数据,高位字节=0表示成功通讯,=FF表示通讯失败;低位字节为接收到的数据。,Y,N,Y,Y,N,N,图5-11 从MCU通讯软件框图,本设计总结 设计建立在系统内,认为通讯过程为理想过程,不会出现差错。实际上,真实的智能设备之间通讯可能需要适应各种复杂环境,可能涉及许多实际问题,主要有如下几点: 1、数据传输过程因干扰产生错误。此时需要进行错误甄别(校验:奇偶校验、和校验、冗余校验等)和处理(一般可以要求重新发送)。 2、数据因传输不完整,造成整个报文短缺。需要进行接收过程的超时处理,避免使接收方进入死循

12、环。 3、许多系统实时性强,可能不允许在一次中断内完成整个通讯处理。需要采用多次串口中断接收数据。,下面以一个汇编语言的例子来展示中断发送和接收传输数据过程。采取甲发送,乙接收模式,不考虑出错处理。 异步通讯程序举例,11.0592MHZ晶振,9600波特,8位无校验通讯,发送和接收数据块。 1.发送程序:将片内RAM 50H起始单元的16个数由串行口发送。给出主程序初始化部分和发送中断子程序。,ORG 0000H LJMP MAIN ORG 0023H LJMP COM_INT MAIN: MOV SP, #6FH MOV SCON,#01000000B ;串行口初始化 MOV TMOD,#

13、00100000B ;T1方式1工作 MOV TH1, #0FDH MOV TL1, #0FDH SETB TR1 ;产生9600波特率时钟 SETB EA SETB ES ;开串行口中断,MOV R0,#50H ;设数据指针 MOV R7,#10H ;数据长度 LOOP: MOV A,R0 ;取一个字符 MOV SBUF,A ;启动一次发送 HERE: SJMP HERE ;CPU执行其它任务,COM_INT: PUSH A ;保护现场 PUSH PSW CLR TI ;清发送结束标志 DJNZ R7,NEXT ;是否发送完? CLR ES ;发送完,关闭串行口中断 SJMP TEND NE

14、XT: INC R0 ;未发送完,修改指针 MOV A,R0 ;取下一个字符 MOV SBUF,A ;发送一个字符 TEND: POP PSW ;恢复现场 POP A RETI ;中断返回 END,2.接收程序:接收数据存入片内RAM 50H起始单元的16个单元。给出主程序初始化部分和接收中断子程序。,ORG 0000H LJMP MAIN ORG 0023H LJMP COM_INT MAIN: MOV SP, #6FH MOV SCON,#01010000B ;串行口初始化 MOV TMOD,#001010000B ;T1方式1工作 MOV TH1, #0FDH MOV TL1, #0FD

15、H SETB TR1 ;产生9600波特率时钟 SETB EA SETB ES ;开串行口中断 MOV R0,#50H ;设数据指针 MOV R7,#10H ;数据长度 HERE: SJMP HERE ;CPU执行其它任务,COM_INT: CLR RI ;清接收结束标志 MOV R0, SBUF INC R0 ;未接收完,修改指针 DJNZ R7,REND ;是否接收完? CLR ES ;接收完,关闭串行口中断 SJMP REND REND: RETI ;中断返回 END,总结: 这个发送和接收程序均采用了中断处理的方式,中断程序每次处理一个字节的发送或者接收。处理通讯的中断占用时间很短,其它实践均交还主程序使用,因此系统效率很高。 实际的通讯还需要进行容错、超时等处理,此处的例子仅用于理想情况下。,二、真实情况下的串行通讯举例 条件:485总线网络,主从系统。其中主机一个,子机多个。 进行主从通讯。 要求:主机与从机通讯,收集从机处理完毕的信息。 系统结构:如图5-10。,图5-12 基于RS485总线的主从系统串行通讯连接图,(一)通讯协议设计 本例定义协议如下: 主机:地址(1字节)+命令(1字节)+命令内容(1字节)+累加和(1字节)。其中,地址可以是1255,0号一般定义为公共广播地址;命令号可以是0255,表示要求从

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号