嵌入式环境下分层的串行帧通信的设计与实现

发布者:BlissfulJoy最新更新时间:2013-02-25 来源: dzsc关键字:S3C2440  串行帧通信  系统通信 手机看文章 扫描二维码
随时随地手机看文章

      嵌入式系统之间的通信通常有两种方式:并行通信和串行通信。并行方式传输数据速度快,但占用的通信线多,传输数据的可靠性随距离的增加而下降,只适用于近距离的数据传送。在远距离数据通信中,一般采用串行通信方式,它具有占用通信线少、成本低等优点。目前RS 232串口是PC机与通信工业中应用最广泛的一种串行接口,它应用于点对点通信模式,实际使用中多采用最简单的三线方式连接,即两端设备的串口只连接收、发、地三根线,即可实现简单的全双工通信。通信协议是两端设备数据交换的语言,是通信可靠性的保证,在保证功能的前提下,通信协议应该力求简洁。

  1 系统通信需求

  本系统主要完成野外环境下时间间隔测量和瞬态数据采集的功能,系统内各模块均选用三星公司的S3C2440芯片为处理器,操作系统使用嵌入式Linux。模块间通信的主要任务为控制命令的下发与应答、工作状态和采集数据的上报等,对通信的可靠性要求较高,无数据加密需求。

  根据系统软硬件情况设定串口工作参数如下:115 200波特率,8位数据位,1位停止位,奇校验、无流控。波特率的设置需要综合考虑所选用芯片的串口性能、串口连接线长度、传输数据的最大帧长和应用过程中的误码率等;无流控则是由于串口使用三线方式连接。

  2 通信协议的分层结构

  为保证不同设备之间通信协议的通用性,降低实现的复杂度,将通信协议为分上下两层:上层为应用层,规范了设备间应用程序通信使用的应用层数据格式;下层为链路层,提供物理线路数据的发送与接收,应用层数据拆分与合并、封装与解封装以及错误检测功能。协议应用层部分根据各设备功能的不同使用不同的数据格式,而链路层部分则完全通用。应用层通信过程如图1所示。

应用层通信过程
图1 应用层通信过程

  发方设备按照约定的应用层数据格式构造应用层数据,交由链路层进行数据的拆分、封装、校验,再将生成的数据以数据帧的形式发送至物理线路;收方设备则从物理线路上接收数据,进行帧定位、解封装、错误检测、数据合并等,最后将应用层数据上交给应用层处理。收发方设备的应用层可根据用户需求的变化,不断修改应用层数据格式,并利用链路层提供的功能接口完成通信功能,故该通信协议设计的关键在于链路层,以下着重阐述链路层的设计与实现。

  3 链路层设计

  链路层主要包含以下功能:数据拆分与合并、数据封装与解封装、数据帧的发送和接收以及错误检测与重发机制。

  3.1 数据拆分与合并

  数据拆分即是把过长的应用层数据分成几部分,用多帧数据帧发送,接收端收到后再进行数据合并,上交给应用层处理。过长的应用层数据如果不进行拆分,可能导致数据帧超出设计的缓冲区大小,也可能造成发送时间太长导致超时错误。这个长度需要根据实际需求合理设置,当数据帧传输出现错误时,这帧数据就需要重新传输,长度太大将造成较大开销;长度太小,封装时产生的开销字节所占比例又太高,影响传输效率。

  3.2 数据封装与解封装

  数据封装即是以一定格式把拆分后的应用层数据加上功能指示、数据长度等字段,以便对方收到后知道如何处理。数据封装格式及功能指示字段含义如表1,表2所示。

表1表2

  3.3 帧发送与接收

  链路层以帧为单位进行数据收发,一种普遍的界定帧起始与结束的方法是:在待发送数据的头部和尾部加入特殊的起始码和结束码,如果在数据中出现了这个码型,就必须在数据发送前进行转义处理,把它转换成其他码型,否则将导致帧定位错误,数据通信失败。很多协议实现者为求实现简单没有进行这种转义,存在通信失败的风险,其实在点对点协议(PPP协议)中的描述了一种转义处理方法,经简化后,实现起来也并不复杂,描述如下:

  数据发送方在帧首处发送0x7E作为起始码,逐字节发送封装后的数据,遇到0x7E时,发送0x7D,0x5E字节序列,遇到0x7D时,发送0x7 D,0x5D字节序列,最后在帧尾处发送0x7E作为结束码;[page]

  数据接收方在串口数据流中搜索第一个0x7E作为帧起始(连续的0x7E则以最后一个为帧起始),逐字节接收数据,遇到0x7D时,跳过不处理,而把该字节的后一个字节加上0x20,直到遇到0x7E认为帧结束。

  在链路帧发送前,应使用CRC16算法对封装数据进行校验,校验多项式为,校验值写入校验字段中;在链路帧接收后,先对其进行校验,如果检验成功再进行数据解封装处理,如果校验失败则按照下述重发机制进行重发。

  3.4 错误检测与重发机制

  综合考虑协议实现的简单性和数据收发的可靠性,决定采用停等协议进行数据收发,过程如下:

  发送方发送一帧数据帧后,设置一个最长等待时间,等待接收对方的确认帧或拒绝帧,若收到确认帧则发送下一帧;若收到拒绝帧或者在超时时间内未收到确认帧或拒绝帧,则重发当前帧,因等待超时而重发的帧要设置超时指示位。当连续收到拒绝帧三次或连续超时重发三次,则认为对端不可达,取消当前帧的发送,上报错误给应用层。

  接收方收到数据帧后,当超时指示位为0时,如果校验正确,则发送确认帧,并处理此帧,如果校验错误,则发送拒绝帧,不处理该帧;当超时指示位为1时,说明对方未正确收到确认帧或拒绝帧,如果上次非重发帧的校验结果是正确的,则该帧实际上已经处理过,直接发送确认帧即可;如果上次非重发帧的校验结果是错误的,则根据校验结果正常处理该帧。

  4 链路层实现

  链路层采用C++语言实现,以便于代码在各模块程序中复用。应用层数据发送和接收流程如图2,图3所示。

应用层数据发送流程图
应用层数据接收流程图

  5 结语

  链路层的作用是可靠地把应用层数据发送到对端设备,但如果仅仅是这样,应用程序使用起来并不是很方便,如果使用面向对象编程的方法,把链路层代码封装在一个类中,向应用程序提供一些较为简单的功能接口,如发送数据,接收数据,检测对端是否可达等,就可以很好地解决易用性问题。另外当数据发送失败时,应当以返回值或事件方式通知应用程序,当有应用层数据需要处理时,最好以回调函数或事件方式激活应用层处理程序,以避免应用程序低效的循环检测。通过在协议设计和协议实现两个方面同时进行优化,该协议在实际应用过程中表现出极好的可靠性和一定的通用性,可供参考借鉴。

关键字:S3C2440  串行帧通信  系统通信 引用地址:嵌入式环境下分层的串行帧通信的设计与实现

上一篇:基于IPv6的嵌入式互联网视频应用开发
下一篇:基于ZigBee无线传感网络的节水灌溉系统设计

推荐阅读最新更新时间:2024-03-16 13:19

基于脉冲同步的混沌保密通信系统
摘要:介绍了脉冲混沌同步的基本原理,提出了基于脉冲同步的一般化混沌保密通信系统。针对该系统存在的传输时间帧拥堵问题,提出一种“信息感应”脉冲同步系统。该系统中有用信息被嵌入在发射端的同步脉冲里,在接收端再通过这些脉冲被感应出来,解决了时间帧拥堵的问题。 关键词:脉冲同步 混沌保密通信 时间帧拥堵 1990年,美国海军实验室研究人员Pecora和Carroll首次利用驱动一响应法实现了两个混沌的同步后,混沌同步技术和混沌保密通信成为国际、国内通信领域的一个研究热点。国际上相继提出了各种混沌通信制式及其理论与方法,由此使混沌保密通信成为现代通信领域的一个新的分支。 混沌保密通信发展历比为四代。第一代为1993年提出的加性混沌遮
[应用]
双向通信渔船测报仪系统电路模块设计
  提出了一种双向通信渔船测报仪电路系统设计方案。该渔船测报仪电路系统具有低功耗、微型化、接口丰富、可靠性高等特点,可为渔民提供船舶定位、海上通信、遇险求救等多种功能服务,可提升海上船舶安全防范能力,因而对相关行业主管部门具有重要意义。渔船测报仪采用三星公司基于ARM920T内核的S3C2440A作为系统中央处理器,配备128M的SDRAM,256M的NAND FLASH和16M的NOR FLASH,以应对嵌入Linux操作系统所消耗的内存。S3C2440A集成了MMC/SD卡读写控制器,LCD与触摸屏接口,3路UART串口,1路主控与1路从动USB接口,1个IDE接口可挂接大容量硬盘,实时时钟。S3C2440A内部集成的3路串口
[单片机]
双向<font color='red'>通信</font>渔船测报仪<font color='red'>系统</font>电路模块设计
基于TMS320F2812集中供电系统的串口通信设计
引言 集中供电系统是电量的自动计量及管理的发展趋势,它将促进电力系统的潜能得到最大限度的发挥。 本集中供电系统利用RS-485通信,网络应用计算机、通信技术等,以DSP为核心、将智能计量与通信控制单元有机结合起来。 TMS320F2812串行通信接口概述 TMS320F2812串行通信接口(SCI)是一个双线通信异步串行通信接口,为减少串口通信时CPU的开销,F2812的串口支持16级接收和发送FIFO。串行通信接口支持与CPU以及其他使用费归零格式的异步外设之间的异步串行数字通信,它的接收器和发送器都是双级缓冲器,有各自独立的控制位与中断位,都可以同时工作在全双工模式下,为保证数据的完整性,串行通信接口对接收的数据进行间
[工业控制]
Facebook开发激光通信系统:从天空传输数据
据科技网站SiliconBeat报道,Facebook首席执行官马克 扎克伯格(Mark Zuckerberg)当地时间周三宣布,该公司在开发一种激光通信系统,从天空传输数据。 开发激光通信系统是Facebook Internet.org项目的一部分。它还在开发利用太阳能动力无人机提供互联网服务的技术。但是,并非所有Facebook类似项目都取得了预期成功,例如,有媒体报道称它放弃了耗资10亿美元生产和发射一颗卫星提供互联网服务的计划。 扎克伯格在Facebook上发布消息称, 我们的Connectivity实验室在开发一款激光通信系统,能从天空向社区传输数据。这一系统将极大提高远距离数据传
[网络通信]
Facebook开发激光<font color='red'>通信</font><font color='red'>系统</font>:从天空传输数据
基于AT89C51应用系统串行通信设计
1 引 言 在红外成像技术的电力设备状态检测系统中,基于AT89C51单片机的应用系统,采用美国雷态公司的型号为3iLRL3的非接触式红外测温仪.该测温仪采用的是RS232C串行通信标准接口,该接口在很多通信设备中通用,目前与PC机的直接串行通信也是RS 232C接口。尽管RS232C性能指标并非很好,但还是有广泛的市场支持。串行通信技术在测控系统中占有很重要的地位,只用三根线.就可以方便的在2个数字设备之间进行信息的交换,实现全双工的传送数据,硬件成本低.而且通用性好。 2 串行通信的硬件设计 在所开发的系统中.红外测温仪将检测电力没备的工作和环境温度,通过RS 232C串口传给单片机,同时由单片机控制检测装置的在线工作组态
[单片机]
村田推出为CPU/通信系统负载点用DC-DC模块
村田推出了MonoBK DC-DC转换器系列。该系列的第一款产品MYWGC3R53FFW92RAE具有过流(OCP),过压(OVP),欠压(UVP)和过热(OTP)保护。 目标应用市场包括FPGA,CPU和数据通信/电信系统。据该公司称,新的负载点(POL)模块的占地面积比竞争解决方案小50%,并在尺寸,效率和性能方面树立了新的标准。 MonoBK MYW系列是4通道DC-DC转换器,将所有无源组件(包括电感器)集成到9.3 mm x 9.0 mm x 2.9 mm(L×W×H)的外形尺寸中。该产品的输入电压范围为2.8–5.5V,可编程输出为0.4–3.58V(最高3.0A),只需要很少的外部组件。 该模块的热性能可
[电源管理]
s3c2440栈分配情况(fl2440裸机 stack)
//2440INIT.S ;The location of stacks UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ SVCStack EQU (_STACK_BASEADDRESS-0x2800) ;0x33ff5800 ~ UndefStack EQU (_STACK_BASEADDRESS-0x2400) ;0x33ff5c00 ~ AbortStack EQU (_STACK_BASEADDRESS-0x2000) ;0x33ff6000 ~ IRQStack EQU (_STACK_BASEADDRESS-0x1000)
[单片机]
防碰撞无线通信汽车黑匣子的系统设计
随着我国国民经济的高速发展,渣土车、长途客运车的重、特大道路交通事故频发,给国家和人民生命财产带来了巨大损失。为了在全国范围内深入开展预防和减少道路交通事故工作,国内已有很多企业和科研单位研制汽车行驶记录仪。但现有的记录仪,使用有线方式阅读,对执法交警很不方便,交警很少操作;采用无线方式读取数据,既方便,又快捷,必将受到执法交警的欢迎,因此,研制无线读取数据的汽车记录仪势在必行。 汽车行驶记录仪(俗称汽车黑匣子),是对车辆行驶速度、时间、里程以及有关车辆行驶的其他状态信息进行记录、存储并可通过接口实现数据输出的数字式电子记录装置。对遏止疲劳驾驶、车辆超速等交通违章、约束驾驶人员的不良驾驶行为、保障车辆行驶安全以及道路交通事
[单片机]
防碰撞无线<font color='red'>通信</font>汽车黑匣子的<font color='red'>系统</font>设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved