GPIO实现高可靠性RS485/422通信的研究

来源 :电子世界 | 被引量 : 0次 | 上传用户:fubaoran
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】为解决在不扩充硬件情况下进行串口通讯的问题,在保证总体波特率和可靠性的要求的情况下,通过对GPIO口异步串口通信实现方法的研究,采用DSP实现通讯功能,并在实际产品研制中验证了此方法的有效性。
  【关键词】串口通信;可靠性;面向对象
  1.引言
  工程实践中,对于解决同一个问题,我们常面临两种选择:要么硬件简单软件复杂,要么软件复杂硬件简单。如某引信系统的DSP电路,需要与内部两个组部件以及外部多个系统进行接口或者信息交互,且总体要求采用异步串口方式进行通信。此类问题主要有三种解决方案:第一,在DSP的并行总线上扩展UART芯片,通过硬件转换实现,软件最简单;第二,在DSP的McBSP串行总线上扩展UART芯片,软件有一定的复杂度;第三,不扩展其他硬件直接利用IO引脚通过软件控制实现,该方法软件最复杂。根据以往文献[1-4]等知在硬件资源允许的前提下,前两种方法已经得到了广泛的研究。然而在产品的研制过程中,常出现引信硬件资源紧张的情况,无法扩展满足需求的UART,只能选择第三种解决方式,总体的高波特率和高可靠性要求增加软件设计的难度。笔者通过软件的合理设计,成功地解决了以上问题。
  2.串行通信基本原理
  串行通信的基本原理是以改变数字电平的方式将数据按照一定的时间宽度(波特率)按位(通常低位在前高位在后)顺序传输,分为同步串口和异步串口两类。同步串口通信主要应用于传输速率高但传输距离要求不高的场合,异步串口则侧重于传输速率要求稍低的情形。图1给出了异步串行通信的数据基本格式,对于一个完整的字节,传输时包含起始位、数据位、校验位。
  实现同步串口通信通常需要6根总线,即收、发数据线,收、发帧同步线,收、发位时钟线。而异步串口则最少可只需2条总线(最多4条)便实现数据通信,如果采用差分传输还可以有效地提高传输距离,根据能否同时收发数据又分为全双工和半双工两种工作模式。图2是应用最普遍的串口形式之一的RS485/422串口总线,RS485半双工传输采用一对差分信号,由主控端的RE和DE来控制当前数据收发,收发不能同时进行;RS422全双工传输采用两对差分信号,主控端直接独立收发,且收发可同时进行。
  本研究通过软件控制改变GPIO端口的状态,完成RS485/422串口通信的时序。
  3.基本流程设计
  为提高软件的质量和可维护性,收发通讯实现时均采用位、字节和帧三个处理层次。每层相对独立,低层处理的结果通过状态传递方式通知上一层。
  研究中采用的数据传输格式:1bit起始位“0”,8bit数据位(先低后高),无校验位,1bit停止位“1”,每个字节累计为10bit。
  3.1 发送通信流程
  主动发送数据形式如图1所示,其流程如下:
  1)底层:位发送。在波特率控制的时间间隔内将发送数据管脚置为和当前bit一致的电平状态。
  2)中间层:字节发送,如图3所示。发送当前bit,发送完位计数器+1,如果位数达到10位,则当前字节发送结束,并通知顶层;
  3)顶层:帧发送,如图4所示。首先检测串口当前状态是否为发送允许,如果不是则将串口置为接收禁止、发送允许状态,确定了发送允许后进入帧发送。帧发送按照报文格式顺序发送各字节,发送结束将串口设为发送禁止、接收允许状态。
  3.2 接收通信流程
  接收通信需要把每一个bit的数据准确地检测出来,确定字节的起止位,判断帧的起止字节,也就是说通过分析和计算将数据格式和通信协议所规定的每一个细节精确定位。对于帧起始时刻的判断,根据图1数据(下转封三)(上接第122页)格式知在数据传输的过程中,即使数据位为全“1”或全“0”,由于有起始位和停止位的存在,也不会出现连续10个bit的“1”或“0”的情况,于是当连续出现10个bit的“1”时,则数据线处于停止传输的状态;而连续出现10个bit的“0”时,则数据线处于异常状态。于是接收通信开始后至少连续10个bit的“1”之后的“0”可以作为帧的起始位。这里的“帧”不是指通信协议中的完整报文,只是指收到的一段数据,至于当前字节是否为报文头,则需根据协议判断。好处是不漏任何数据,可靠接收约定报文。
  接收通信流程如下:
  1)底层:位接收,如图5所示。位接收在由波特率确定的时间间隔到达时,采样接收数据线的电平状态作为当前bit值,同时判断帧起始位,帧开始后的位接收完成,通知中间层进行字节处理。
  2)中间层:字节接收,如图6所示。当新bit接收完成时,将当前Bit值按照格式组合到字节数据。当字节位计数器满一个字节时,如果满足起始位“0”和停止位“1”的条件,字节接收完成,并通知顶层进行帧接收控制,否则字节无效。
  3)顶层:帧接收,如图7所示。首先检测串口当前状态是否为接收允许,如果不是则将串口置为接收允许、发送禁止状态,在确任接收允许后开始收数。在新字节接收完成后,将新字节写入接收缓冲区,同时根据通信协议启动报文识别,直到收到一帧完整的报文,结束接收通信。根据实际需要可以加入通信超时控制。
  4.面向对象实现方法
  在DSP中,对某一个GPIO管脚操作,需要对某一个寄存器的某一位进行置位或者清零。为避免每次对管脚操作时去寻找寄存器的地址和位地址这个易出错的缺点,软件设计时采用C++类结构的方式进行数据封装,使用时只需在初始化时一次性的传入寄存器及其位地址,其余用处均采用交互性良好的助记符[7]。
  4.1 GPIO管脚类数据结构
  在构建GPIO管脚类时,围绕寄存器以及位地址操作和电平操作进行。
  软件数据类型与处理器的型号相关,本文采用TMS3206713处理器,为有效控制数制,将硬件支持数制和编译系统符号相对应,将C6000数据类型重定义,在GPIO操作中主要使用无符号数。   4.2 串口类数据结构
  为了区分当前使用的串口类型,故定义串口类型号枚举,为串口操作程序提供识别入口。
  由类的构造函数知,由于RS422和RS485所使用的管脚不同,为了将每种操作统一到一个函数中,采用了swtich结构,其他成员函数类似。其中发射函数Sending()对应图3、4中的流程,接收函数Receving()对应图5、6、7中的流程。
  软件设计以定时器为中心,由使用目的属性来区分发送还是接收,以中断方式控制通信时序,能够实现全双工通信。在全双工通信中,当出现收发定时中断冲突的极端情况时,可设定发送优先,由于端口操作时间为纳秒级,接收滞后处理的影响可以忽略不计。
  5.位检测与接收通信可靠性
  由于每一个bit的检测结果直接决定着接收数据是否正确,按照波特率所确定的时间间隔对端口电平采样一次来确定bit的值来实现的软件,实验室拷机时存在误码现象,因此通过提高bit的检测能力,降低误码率。bit检测改进方法如下:
  (1)接收通信的位采样仍然采用由波特率确定的时间间隔,但对于位检测时,采用读3次管脚电平然后进行表决的方式确定当前bit的值,有效降低了误码率,但仍有字节出错的问题,因为3取2的方式可以部分地剔除纳秒级的高频毛刺,但不能有效抑制强干扰引起的电平翻转,需进一步改进。
  (2)将每一bit检测的时间间隔缩短到1/3,即对每一个bit进行三次检测,然后做3取2判决,并将连续30个1/3bit的高电平后的首个1/3bit低电平作为帧起点的先决条件,确保正常情况下每一bit的3个1/3bit都是同样的电平值,这样做的好处是每一个bit的检测可以允许一个1/3bit出错。
  以下进行简要分析,令改进之前的误码率是p,引起误码的噪声为非相干的,第一次改进后,对于任一bit的三次检测中允许有一次出错,因此在理想状态下的误码率为检测出错两次和三次的条件概率:
  计算过程中利用了p<<1,1-≈1,以及p3<  如果p=10-6,那么最终的误码率可以降低到约为1.4×10-25,分析表明改进措施应该有效。
  经改进的软件在实验室进行了30小时通讯强度试验,试验中20ms完成一轮收发,报文长度为20个字节,在约1.08×108字节的接收通信中,未发现一个字节的通信错误。此后在产品8个月的调试与外场试验统计数据表明,除了有一次因通信接口芯片损坏以及一次不明原因的通信出错以外,没有出现因为软件产生的通信故障,证实了接收通信的可靠性。
  6.结论
  本文在GPIO模拟通用RS485/422串口通信的研究中,采用分层处理技术、优化bit检测方法、面向对象设计手段,实现了全双工通讯,具有逻辑清晰、易于实现、可靠性高和易于改进、维护和移植的优点;但也存在一定的局限性,如软件不宜采用汇编语言实现,全双工通信是以定时器为中心进行统筹实现的,并不是真正独立意义上的全双工,其波特率受工作频率的限制较大。
  参考文献
  [1]张经爱,许凯华,刘玉华.基于MSP430的模拟SPI串口通信的实现[J].计算机工程与设计,2008,29(5).
  [2]孙松.嵌入式系统中GPIO模拟SPI总线主/从双向通信的设计与实现[J].自动化技术与应用,2007,26(10).
  [3]杨稳积,王新宏.鱼雷数字信号处理机异步串口通信接口电路设计[J].鱼雷技术,2007,14(5).
  [4]程志成,金施群.PC机与DSP异步串口通信实现研究[J].现代显示,2008(86).
  [5]曹志刚,钱亚生.现代通信原理[M].清华大学出版社,2001.
  [6]徐台松,李在铭.数字通信原理[M].电子工作出版社,1991.
  [7]MS320C6000 Code Composer Studio Manuals.Texas Instruments Incorporated.2001.
其他文献
科研对教师的发展具有一定的重要性,是教师专业成长的需要。实践表明,一线教师在教育教学上能积极参与科研的实践,学习理论,更新观念,以科研带教研,教研促教改,对提高教师素质大有裨
介绍了当归的形态特征、生态习性,阐述了当归林地覆膜栽培及采收、加工技术。
为解决无线基站宽带工作频带内电压驻波比(Voltage Standing Wave Ratio,VSWR)的实时测量,提出了一种采用信道估计法的测量方案。该方案实现简单,在基带处理单元高速率位置发
根据《北京交通发展纲要(2004~2020年)》,近期北京交通发展策略重点放在大力发展公共交通上,而实现步行与公共交通方式快速、便捷的换乘是促使居民出行方式向公共交通方式转移
教学的有效性是课堂教学的永恒主题。针对当前高中化学课堂的现状,本文主要从化学课堂教学有效性的内涵、高中化学教学的现状、高中化学课堂教学有效性的策略与方法作阐述,从而
报纸
目的:改进盐酸普拉格雷的合成工艺。方法:以5,6,7,7a-四氢噻吩并[3,2-c]吡啶-2(4H)-酮盐酸盐和2-溴-2-(2-氟苯基)-1-环丙基乙酮为起始原料,经过取代、酰化、成盐3步得到目标
目的:探讨中医情志护理在手术患者围术期的应用效果,以及对患者疼痛指标和疼痛阈值的影响。方法:将医院收治的90例手术患者随机分为对照组和观察组,每组45例。对照组围术期实
在职高生的成长发展中,语文知识是学好各学科技能的基础。但职高学生普遍基础差,因而上好一堂语文课是、至关重要的。要搞好职高语文教学,就必须不断更新教育思想和教育观念,从而
本文的目的是通过研究新的轮胎工程计算法进行改进胎坯构件的设计方法,并用CAD定制程序的自动化运作来提高轮胎工程计算的精确度,以图在设计开发过程中减少误差并减少研制周
胡乔木是中国共产党著名的马克恩主义理论家、宣传家 ,他在抗日救亡高潮时期投身革命 ,一生与党的新闻、宣传工作密不可分 ,是新中国新闻事业的开拓者和奠基人。但人们知晓的