当前位置:首页 > 消费电子 > 消费电子
[导读]为解决在不扩充硬件情况下进行串口通讯的问题,在保证总体波特率和可靠性的要求的情况下,通过对GPIO口异步串口通信实现方法的研究,采用DSP实现通讯功能,并在实际产品研制中验证了此方法的有效性。

1.引言

工程实践中,对于解决同一个问题,我们常面临两种选择:要么硬件简单软件复杂,要么软件复杂硬件简单。如某引信系统的DSP电路,需要与内部两个组部件以及外部多个系统进行接口或者信息交互,且总体要求采用异步串口方式进行通信。此类问题主要有三种解决方案:第一,在DSP的并行总线上扩展UART芯片,通过硬件转换实现,软件最简单;第二,在DSP的McBSP串行总线上扩展UART芯片,软件有一定的复杂度;第三,不扩展其他硬件直接利用IO引脚通过软件控制实现,该方法软件最复杂。根据以往文献可知在硬件资源允许的前提下,前两种方法已经得到了广泛的研究。

然而在产品的研制过程中,常出现引信硬件资源紧张的情况,无法扩展满足需求的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)底层:位发送。在波特率控制的时间间隔内将发送数据管脚置为和当前bit一致的电平状态。

2)中间层:字节发送,如图3所示。发送当前bit,发送完位计数器+1,如果位数达到10位,则当前字节发送结束,并通知顶层;3)顶层:帧发送,如图4所示。首先检测串口当前状态是否为发送允许,如果不是则将串口置为接收禁止、发送允许状态,确定了发送允许后进入帧发送。帧发送按照报文格式顺序发送各字节,发送结束将串口设为发送禁止、接收允许状态。

 

 

 

 

3.2 接收通信流程

接收通信需要把每一个bit的数据准确地检测出来,确定字节的起止位,判断帧的起止字节,也就是说通过分析和计算将数据格式和通信协议所规定的每一个细节精确定位。对于帧起始时刻的判断,根据图1数据格式知在数据传输的过程中,即使数据位为全“1”或全“0”,由于有起始位和停止位的存在,也不会出现连续10个bit的“1”或“0”的情况,于是当连续出现10个bit的“1”时,则数据线处于停止传输的状态;而连续出现10个bit的“0”时,则数据线处于异常状态。于是接收通信开始后至少连续10个bit的“1”之后的“0”可以作为帧的起始位。这里的“帧”不是指通信协议中的完整报文,只是指收到的一段数据,至于当前字节是否为报文头,则需根据协议判断。好处是不漏任何数据,可靠接收约定报文。

接收通信流程如下:

1)底层:位接收,如图5所示。位接收在由波特率确定的时间间隔到达时,采样接收数据线的电平状态作为当前bit值,同时判断帧起始位,帧开始后的位接收完成,通知中间层进行字节处理。

 

[!--empirenews.page--]

 

2)中间层:字节接收,如图6所示。当新bit接收完成时,将当前Bit值按照格式组合到字节数据。当字节位计数器满一个字节时,如果满足起始位“0”和停止位“1”的条件,字节接收完成,并通知顶层进行帧接收控制,否则字节无效。

 

 

3)顶层:帧接收,如图7所示。首先检测串口当前状态是否为接收允许,如果不是则将串口置为接收允许、发送禁止状态,在确任接收允许后开始收数。在新字节接收完成后,将新字节写入接收缓冲区,同时根据通信协议启动报文识别,直到收到一帧完整的报文,结束接收通信。根据实际需要可以加入通信超时控制。

 

 

4.面向对象实现方法

在DSP中,对某一个GPIO管脚操作,需要对某一个寄存器的某一位进行置位或者清零。

为避免每次对管脚操作时去寻找寄存器的地址和位地址这个易出错的缺点,软件设计时采用C++类结构的方式进行数据封装,使用时只需在初始化时一次性的传入寄存器及其位地址,其余用处均采用交互性良好的助记符。

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 )将每一b i t检测的时间间隔缩短到1/3,即对每一个bit进行三次检测,然后做3取2判决,并将连续30个1/3bit的高电平后的首个1/3bit低电平作为帧起点的先决条件,确保正常情况下每一bit的3个1/3bit都是同样的电平值,这样做的好处是每一个bit的检测可以允许一个1/3bit出错。

以下进行简要分析,令改进之前的误码率是p,引起误码的噪声为非相干的,第一次改进后,对于任一bit的三次检测中允许有一次出错,因此在理想状态下的误码率为检测出错两次和三次的条件概率:

 

 

如果p=10-6,那么最终的误码率可以降低到约为1.4×10-25,分析表明改进措施应该有效。

经改进的软件在实验室进行了30小时通讯强度试验,试验中20ms完成一轮收发,报文长度为20个字节,在约1.08×108字节的接收通信中,未发现一个字节的通信错误。此后在产品8个月的调试与外场试验统计数据表明,除了有一次因通信接口芯片损坏以及一次不明原因的通信出错以外,没有出现因为软件产生的通信故障,证实了接收通信的可靠性。

6.结论

本文在GPIO模拟通用RS485/422串口通信的研究中,采用分层处理技术、优化bit检测方法、面向对象设计手段,实现了全双工通讯,具有逻辑清晰、易于实现、可靠性高和易于改进、维护和移植的优点;但也存在一定的局限性,如软件不宜采用汇编语言实现,全双工通信是以定时器为中心进行统筹实现的,并不是真正独立意义上的全双工,其波特率受工作频率的限制较大。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

全新原生集成方案实现企业短信服务的简化、强化与规模化升级 马来西亚吉隆坡2025年9月11日 /美通社/ -- 全球云通信平台Infobip宣布扩展与微软Azure通信服务的集成合作,通过其先进的短信接口,助力企业与全...

关键字: 微软 通信 IP AZURE

当地时间 9 月 8 日,SpaceX 与 EchoStar 正式达成一项价值 170 亿美元的频谱交易,SpaceX 将收购 EchoStar 旗下 AWS-4 频段(2GHz 频段)及 H 频段的频谱许可证,此举引发...

关键字: SpaceX EchoStar 星链 通信

在现代工业和汽车领域,控制器局域网(CAN)总线作为一种可靠且高效的通信方式,广泛应用于各种电子设备之间的数据传输。在 CAN 总线系统中,有一个看似毫不起眼却至关重要的元件 ——120Ω 终端电阻。这个小小的电阻,对于...

关键字: 控制器局域网 总线 通信

8月14日消息,今天,国务院新闻办公室举行“高质量完成‘十四五’规划”系列主题新闻发布会,国家数据局介绍“十四五”时期数字中国建设发展成就。

关键字: 算力 通信

北京2025年8月8日 /美通社/ -- 8月7日,浪潮信息发布面向万亿参数大模型的超节点AI服务器"元脑SD200"。该产品基于浪潮信息创新研发的多主机低延迟内存语义通信架构,以开放系统设计向上扩展...

关键字: 模型 节点 SD 通信

在现代通信技术的复杂网络中,射频(RF)滤波器犹如一位幕后英雄,虽鲜少被大众提及,却发挥着举足轻重的作用。从我们日常使用的智能手机,到构建通信基础设施的基站,再到新兴的物联网设备,RF 滤波器无处不在,默默保障着信号的顺...

关键字: 射频 滤波器 通信

在当今数字化时代,5G 通信技术以前所未有的速度改变着我们的生活,从高速的数据传输到实时的物联网应用,5G 的影响力无处不在。然而,在这一系列令人瞩目的技术背后,有一个常常被忽视却至关重要的角色 —— 晶振。它如同幕后的...

关键字: 通信 数据传输 晶振

德国斯图加特 2025年7月2日 /美通社/ -- 国际关键通信协会The Critical Communications Association (以下简称TCCA)宣布...

关键字: 通信 TETRA TC 测试流程

近日,欧洲统一专利法院曼海姆分庭更新的一则诉讼信息,引发了全球科技界震动——联发科子公司HFI Innovation起诉了华为旗下五家子公司侵犯其LTE专利EP2689624。这场诉讼标志着两家科技巨头持续两年的专利纠纷...

关键字: 通信

为了进一步推动电子通信半导体产业创新发展,“EIS 2025 中国电子通信半导体数智创新峰会", 以 “智联万物·芯创未来 ”为主题, 将于 2025 年 10月 24日在上海隆重举办。

关键字: 通信 半导体
关闭