串口通信技术的设计与实现_第1页
串口通信技术的设计与实现_第2页
串口通信技术的设计与实现_第3页
串口通信技术的设计与实现_第4页
串口通信技术的设计与实现_第5页
已阅读5页,还剩74页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1串口通信技术的设计与实现一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。串口通信的工作原理请同学们参看教科书。以下对串口通信中一些需要同学们注意的地方作一点说明:1、波特率选择波特率(Boud Rate )就是在串口通信中每秒能够发送的位数( bits/second) 。MSC- 51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式 0 和模式 2 波特率计算很简单,请同学们参看教科书;模式 1 和模式 3 的波特率选择相同,故在此仅以工作模式1 为例来说明串口通信波特率的选择。在串行端口工作于模式 1,其波特率将由计时/计数器 1 来产生,通常设置定时器工作于模式 2(自动再加模式) 。在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1) )其中,SMOD寄存器 PCON 的第 7 位,称为波特率倍增位;TH1定时器的重载值。在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。下面举例说明波特率选择过程:假设系统要求的通信频率在 20000bit/s 以下,晶振频率为 12MHz,设置 SMOD=1(即波特率倍增) 。则TH1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。列计数器重载值,通信误差如下表:因此,在通信中,最好选用波特率为 1200,2400,4800 中的一个。2、通信协议的使用通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在 PC 机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取 P0 端口数据,并将读取数据返回 PC 机;0xA2:单片机从 PC 机接收一段控制数据;0xA3:单片机操作成功信息。在系统工作过程中,单片机接收到 PC 机数据信息后,便查找协议,完成相应的操作。当单片机接收到 0xA1 时,读取 P0 端口数据,并将读取数据返回 PC 机;当单片机接收到0xA2 时,单片机等待从 PC 机接收一段控制数据;当 PC 机接收到 0xA3 时,就表明单片机操作已经成功。3、硬件连接251 单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是 RS232 电平的,而单片机的串口是 TTL 电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片 MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和计算机的 9 针串口只连接其中的 3 根线:第 5 脚的GND、第 2 脚的 RXD、第 3 脚的 TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232 的第 10 脚和单片机的 11 脚连接,第 9 脚和单片机的 10 脚连接,第 15 脚和单片机的 20 脚连接。使用 MAX232 串口通信电路图(9 孔串口接头)串口通讯的硬件电路如上图所示为了能够在计算机端看到单片机发出的数据,我们必须借助一个 WINDOWS 软件进行观察,这里利用如下图标的一个免费计算机串口调试软件来观察。基于 CAN 总线的 RS-232 串口设备远程通信技术分类: 通信 | 2006-03-27 来源:国外电子元器件 | 李 娟1 引言工业设备通信通常涉及到很多硬件和软件产品以及用于连通标准计算机平台(个人计3算机或工作站)和工业自动化应用设备的协议,而且所使用设备和协议的种类繁多。因此,大部分自动化应用设备都希望执行简单的串行命令,并希望这些命令同个人计算机或者附加的串行端口板上的标准串行端口兼容。RS-232 是目前 PC 机与通信工业中应用最广泛的一种串行接口。RS-232 被定义为一种在低速率串行通讯中增加通讯距离的单端标准。由于RS-232 的发送端与接收端之间有公共信号地,所以它不能使用双端信号,否则,共模噪声会耦合到信号系统中。RS-232 标准规定,其最大距离仅为 15m,信号传输速率最高为 20kbit/s。CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一,一个由 CAN 总线构成的单一网络受到网络硬件电气特性的限制。CAN 作为一种多主方式的串行通讯总线,其基本设计规范要求高位速率和较高的抗电磁干扰性能,而且要能够检测出通讯总线上产生的任何错误。当信号传输距离达 10km 时, CAN 仍可提供高达 50kbit/s 的数据传输速率。表 1 为 CAN 总线上任意两个节点之间最大传输距离与其位速率之间的对应关系。表 1 CAN 总线系统任意两节鼎足之势之间的最大距离点击看原图由此可见,无论从实时性、适应性、灵活性,还是可靠性上来看,CAN 总线都是一种比 RS-232 更为优秀的串行总线。当两台串口设备的相距较远,不能直接用 RS-232 把它们连接起来时,就可以把 RS-232 转换为 CAN,通过 CAN 总线来实现串口设备的网络互连。但是,RS-232 和 CAN 在电平和帧格式上都是很大的不同。具体表现如下:RS -232 标准电平采用负逻辑,规定+3V+15V 之间的任意电平为逻辑 “0”电平,-3V-15V 之间的任意电平为逻辑“1”电平。而 CAN 信号则使用差分电压传送,两条信号线称为“CAN_H”和“CAM_L” ,静态时均为 2.5V 左右,此时的状态表示为逻辑 “1”,也可以叫做“隐性” ;用 CAN_H 比 CAN_L 高表示逻辑“0” ,称为“显性” 。显性时,通常电压值为:CAN_H=3.5V,CAN_L=1.5V;RS-232 串口的帧格式为:一位起始位,八位数据位,一位可编程的第九位(此位为发送和接收的地址/数据位) ,一位停止位。而 CAN 的数据帧格式为:帧信息+ID+数据(可分为标准帧和扩展帧两种格式) 。因此,设计时就需要有一个微控制器来实现电平和帧格式等的转换。其转换方式如图1 所示。2 RS-232 到 CAN 转换的硬件设计在设计 RS-232 到 CAN 的转换装置时,用单片机 AT89C52 作为微处理器;用4SJA1000 作为 CAN 微控制器, SJA1000 中集成了 CAN 协议的物理层和数据链路层功能,可被动局面对通信数据的帧处理;AT82C250 作为 CAN 控制器和物理总线之间的接口,用于提供总线的差动发送能力和 CAN 控制器的差动接收能力,通过 AT82C250 的引脚 3 可选择三种不同的工作方式(高速、斜率控制和待机) 。其中引脚 3 接地时为高速方式;高速光隔用 6N137 实现,其作用是防止串入信号干扰;MAX232 用来完成 232 电平到微控制器接口芯片 TTL 电平的转换。具体的硬件接口电路参见 SJA1000 的有关资源,这里不再多做说明。但有以下几点需要注意。 来源:国外电子元器件 | 李 娟(1)CAN 总线两端接有一个 120 的电阻,其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠行。但实际上只需保证 CAN 网络中“CAN_H ”和“CAN_L”之间的跨接电阻为 60 即可。(2)SJA1000 的 20 引脚 RX1 在不使用时可接地(具体原因见软件设计) ,配合CDR.6 的置位可使总线长度大大增加。(3)引脚 TX0、TX1 的接法决定了串行输出的电平。具体关系可参考输出控制寄存器 OCR 的设置。(4)AT82C250 的 RS 引脚与地间接有一个斜率电阻。电阻大小可根据总线通信 速度作适当调整,一般在 16k140k 之间。(5)MAX232 外围需要四个电解电容 C1、C2 、C3、C4 ,这些电容也是内部电源转换所需电容,其取值均为 1F/25V,宜选用钽电容并且位置应用量靠近芯片,电源 VCC 和地之间要接一个 0.1F 的去耦电容。3 RS-232 到 CAN 转换的软件设计在微处理控制下,RS-232 和 CAN 进行数据交换时,采用串口接收和 CAN 中断方式可提高工作效率。其主程序流程图如图 2 所示。SJA1000 的初始化在复位模式下才可以进行,主要包括工作方式的设置、时钟分频和验收滤波寄存器的设置、波特率参数的设置以及中断允许寄存器的设置等。数据能否准确传递还取决于波特率和流量控制,这也是软件设计时不可忽略的地方。因此接下来主要介绍 CAN 波特率的设置、串口波特率的自动检测、串口数据流量控制。531 CAN 滤波率的设置CAN 协议中的要素之一是波特率。用户可以设置位周期中的位采样点位置和采样次数,以使用户可以自由地优化应用网络性能,但在优化过程中,要注意位定时参数基准参考振荡器的容差和系统中不同信号传播延迟之间的关系。系统的位速率 fBil 表示每单位时间传输数据位的量,即波特率 fBit=1/tBit。额定的位定时由 3 个互不重叠的段 SYNC_SEG、TSEG1 和 TSEG2 组成,这 3 个时间段分别是TSYNC_SEG、TSEG1 和 TSEG2 组成,这 3 个时间段分别是 tSYNC_SEG、tTSEG1 和 tTSEG2。所以,额定位周期 tBit 是 3 个时间段的和。tBit=“tSYNC“_SEG+tTSEG1+tTSEG2位周期中这些段都用整数个基本时间单位来表示。该时间单位叫时间份额 TQ,时间份额的持续时间是 CAN 系统时钟的一个周期 tSCL,可从振荡器时钟周期 tCLK 取得。通过编程预分频因数(波特率预设值 BRP)可以调整 CAN 系统时钟。具体如下:tSCL=“BRP“2tCLK=2BPR/fCLK来源:国外电子元器件 | 李 娟对 CAN 位定时计算的另一个很重要的时间段是同步跳转宽度(SJW) ,持续时间是tSJW。SJW 段并不是位周期的一段,只是定义了在重同步事件中被增长或缩短的位周期的最大 TQ 数量。此外,CAN 协议还允许用户指定位采样模式( SAM) ,分别是单次采样和三次采样模式(在 3 个采样结果中选出 1 个) 。在单次采样模式中,采样点在 TESG1 段的末端。而三次采样模式比单次采样多取两个采样点,它们在 TSEG1 段末端的前面,之间相差一个 TQ。 6上面所提到的 BPR、SJW、SAM 、TESG1、TESG2 都可由用户通过 CAN 控制器的内装中寄存器 BTR0 和 BTR1 来定义。具体如图 3 所示。设置好 BTR0 和 BTR1 后,实际传输的 波特率 范围为:最大=1/( tBit-tSJW) ,最小=1/(tBit+tSJW)3.2 串口波特率检测当串口设备是主机时,如需检测此时转换装置的串口波特率,首先可对主机的接收波特率(以 9600 波特为例)进行设定,并在终端发送一个特定的字符(以回车符为例) ,这样,主机根据接收到的字符信息就可以确定转换装置的通信波特率。回车符的 ASCII 值是0DH,在不同波特率下接收到的值如表 2 所列。表 2 不同波特率下接收的字节点击看原图33 串口流控制此处讲到的“流“指的是数据流。数据在两个串口之间的传输时,常常会出现丢失数据的现象。由于单片机缓冲区有限,如接收数据时缓冲区已满,那么此时继续发送来的数据就会丢失。而流控制能有效地解决该问题,当接收端数据处理不过来时,流控制系统就会发出“不再接收”的信号,而使发送端停止发送,直到收到“可以继续发送”的信号再7发送数据。因此流控制可以控制数据传输的进程,防止数据丢失。常用的两种流控制是硬件流控制(包括 RTS/CTS、DTR/CTS 等)和软件流控制 XON/XOFF(继续/ 停止) ,下面仅就硬件流控制 RTS/CTS 加以说明。采用硬件进行流控制时,串口终端 RTS、CTS 接到单片机的 I/O 口,通过置 I/O 口为1 或 0 来接收和发出起停信号。数据终端设备(如计算机)使用 RTS 来起始单片机发出的数据流,而单片机则用 CTS 来起动和暂停来自计算机的数据流。实现这种硬件握手方式时,在编程时根据接收端缓冲区的大小设置一个高位标志和一个低位标志,当缓冲区内数据量达到高位时,就在接收端将 CTS 线置低(送逻辑 0) ,而当发送端的程序检测到 CTS 为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将 CTS 置高为止。RTS 则用来标明接收设备有没有准确好接收数据。34 CAN 接收子程序PeliCAN 格式既可以发送标准帧也可以送扩展帧,利用时钟分频寄存器中的 CDR.7 可以调协 CAN 模式(0-BasicCAN,1-PeliCAN ) ,接收 CAN 数据时,可根据帧信息中的 FF 位来判断是标准帧还是扩展帧,并且 RTR 位来判断是远程帧还是数据帧。以下是 CAN 接收子程序:;/;/CAN 数据接收/统一成 2 个字节 ID 的帧格式/;/RECAN:MOV R0,#C_RE ;单片机内缓冲区起始地址MOV DPTR, #RXBUF ;读取并保存接收缓冲区的内容 来源:国外电子元器件 | 李 娟MOVX A,DPTR ;读取 CAN 缓冲区的 2 号字节MOV R0,A ;保存JB ACC.7,EFF_RE ;FF 位,0-SFF,1-EFFMOV R2,#0SJMP SFF_RE ;ID 数目不同,截取“数据字节”的位置不同8EFF_RE:MOV R2,#2SFF_RE:MOV R2,#2SFF_RE:JB ACC.6,EXIT_RECAN ;RTR 位判断,1-远程帧,则跳出ANL A, #0FHMOV R3,A ;这时截取中间 4 位是数据长度MOV C_NUM,A ;R3,R5 中存放接收帧的长度RDATA0:INC DPTR ;2 个字节 IDINC R0MOVX A,DPTRMOV R0,AINC DPTRMOVX A,R0,AINC DPTRMOVX A,DPTRMOV R0,AMOV A,R2 ;如果是 EFF 则跳过两个字节 IDJZ DRATA1INC DPTRINC DPTRDATA1: ;数据字节9INC DPTRINC R0MOVX A,DPTRMOV R0,ADJNZ R3,RDATA1EXIT_RECAN:RET4 结束语计算机的微型化为测控仪表的智能化提供了必要的条件,使得带微处理器的终端设备具备更好的数字通信能力。随着越来越多智能终端的出现,无论是对网络的结构、协议、实时性,还是适用性、灵活性、可靠性乃至成本都有了更高的要求,因此现场总线有着很好的发展前景。CAN 总线的帧结构拥有标识 ID,这使得设备网络中拥有多台网络主机成为可能,即通过网络主机可以监控整个设备网络的工作情况并作出相应的控制决策。本装置目前已开发完成,并在实际应用中取得了非常好的效果。一种基于 FPGA 和 SC16C554 实现多串口通信的方法技术分类: 可编程器件 | 2009-08-21 张晓峰 李悦丽 黎向阳 张强0 引言随着电子技术的飞跃发展,通用数字信号处理器(DSP)的性能价格比不断提高,数据处理能力不断加强,其应用领域日益增多,在数据实时采集及高速数字信号处理中应用尤其广泛。当 DSP 独立构成一个处理单元时,往往需要和外设进行数据交换,其通信能力至关重要。在研制机载合成孔径雷达系统时,信号处理机作为系统的核心要与飞控系统、稳定平台、雷达信号源以及导航系统等部分进行数据交换;如何实现其与其它部分之间有效的通信成为系统设计的关键。串口通信因为其简单,可靠仍然是广泛采用的

温馨提示

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

评论

0/150

提交评论