单片机和嵌入式系统编程_第1页
单片机和嵌入式系统编程_第2页
单片机和嵌入式系统编程_第3页
单片机和嵌入式系统编程_第4页
单片机和嵌入式系统编程_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

学习内容和目标从信息交互角度的建立通讯的概念总览各种通讯方法,及其注意事项建立帧、包、报文等基本概念,以及其使用方法建立通讯中需要注意的问题注意:思维一定要开阔一些,多问为什么。允许不用举手,并随时打断,向我提任何和课程相关的问题。2024/11/61本节学习目标1.1引言信息交互:发出和接收信息的过程。通常由6个部分组成:信息源、信息、信息传递的通道或网络、接收者、反馈、噪音。事实上,信息交互不仅仅存在于通讯系统中。至少目前的定义,通讯就是信息交互的过程。那么请从信息流的角度看待通讯问题即使对于某个测控系统,当中传递的也是信息(信号只是信息的载体)。2024/11/621信息交互与通讯继续考虑上述的封闭测控系统,可以在任何一个环节与环节之间采用模拟的或数字的通讯方式,传递信息。2024/11/631.1引言(续1)需要考虑的是如何有效的传递信息:采用何种载体如何保证信息在传递过程中的正确率请务必注意:必须依据信源特性确定载体类型、特征等问题。当前来说,信号是目前在工业中传递信息最常用的载体。当前,工业中常用的标准信号规格可以分为:模拟信号:0~5V的电压信号、4~20mA的电流信号数字信号:这是目前用的最多的,并且有着多种形式可供选择。不论传递何种信号,必然需要考虑两个内容:确定发射机与接收机之间的物理连接方法;确定发射机和接收机之间对话模式。物理链接、对话模式、信号特征三者往往是统一的,必须综合考虑。另外,在实现中往往加入其他因素进行综合考虑,例如:环境状况、成本问题、工艺问题、保密性问题、……对以下2个实例进行分析:为什么使用这种方式?能否使用其他的通讯方式?实现这些通讯方式的过程中需要注意哪些内容?电缆式测井中采用7000m电缆将仪器和HOSTPC连接起来。但是在仪器与遥传短节之间采用CANBus连接;在一些数控机床中,PLC的CPU模块与其他模块采用RS232通讯。2024/11/641.2信号、信号传输与通讯对以下2个实例进行分析:为什么使用这种方式?能否使用其他的通讯方式?实现这些通讯方式的过程中需要注意哪些内容?电缆式测井中采用7000m电缆将仪器和HOSTPC连接起来。但是在仪器与遥传短节之间采用CANBus连接;在一些数控机床中,PLC的CPU模块与其他模块采用RS232通讯。2024/11/651.2信号、信号传输与通讯(续1)接口:泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。对于目前的信息科学领域,接口可以分为两大类:软件接口:例如,用户界面、JAVA接口、动态链接库接口、……硬件接口:RS232、Ethernet、I2C、……简单的说接口就是一个契约或者规范。正如,信号可以分为两类一样,接口也可以分为两类:模拟接口:数字化接口:不论是模拟或数字接口,都必须在数字化控制中考虑以下问题:速度:资源占用:CPU时间、中断、DMA传输距离:差错控制:供电:其他:2024/11/661.3通讯接口引论2.1引言考虑:在MCU内部,所谓总线是否可以归纳到接口的范畴。在这里,若非特别指明,接口均指代系统间的通讯连接。2024/11/672数字化通讯接口大部分的数字化通讯接口以下图为基础进行修改,实现通讯。2024/11/682.2数字化接口电路的构成接口的基本功能:数据传送:CPU执行输入/输出指令与外部设备交换数据。(串行、并行)数据缓冲:用于输入输出过程中的暂存,对方不能及时接收数据时,将数据暂存在接口电路中。根据接口的需要可以是1个或2个字节,或是FIFO存储器,也可以是数据存储区。信号变换:完成数字信号与I/O设备信号(如模拟信号、开关信号、计数脉冲等)的相互转换。中断:大多数接口电路有中断功能,以提高接口程序的效率。接口的高级功能差错控制:实现检错或纠错。高层通信协议:实现呼叫、数据包、流量控制等。即插即用、电源管理、动态配置等。2024/11/692.3通讯接口运行概述接口的操作:程序对接口的访问(读/写)方式。不同的接口电路支持不同的操作方式。查询控制方式:在程序的主动控制下,通过读取状态寄存器了解接口的情况,完成相应的程序操作。为了及时了解接口的状态,需要时间密集的查询操作。CPU效率低。中断控制方式:当接口出现需要程序干预的事件,通过中断通知CPU,CPU再读取状态寄存器,确定事件的种类,以便执行不同的代码处理。CPU效率高而且及时。DMA控制方式:CPU与接口的数据传送采用DMA传送,即传送的具体过程由硬件(DMA控制器)完成,传送速度比通过CPU快,尤其是在批量传送时效率很高。2024/11/6102.3通讯接口运行概述(续1)通信协议是指通信双方对数据传送控制的一种约定,包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定。通信双方必须共同遵守,它也叫做链路控制规程。由于这些规格(语言)的规定都是事先在会议上讲好的,一般我们称之为“协议”(英文称为protocol)。协议主要由以下三个要素组成:语法:“如何讲”,数据的格式、编码和信号等级(电平的高低)语义:“讲什么”,数据内容、含义以及控制信息。定时规则(时序):明确通信的顺序、速率匹配和排序。讨论接口则必须讨论协议,硬件接口相同,不代表协议相同;协议类型相同,不代表编码方式相同;……。正是由于多种不同,使得目前存在各种各样的通讯方式。例如,同样是TCP协议,但是并非一定使用RJ45接头;同样电平标准也可以设定的不同。同样,对于RS232的串口标准,即使按照以前规定的7位字符位,但是若组成方式不同也会有不同。2024/11/6112.4数字通讯协议可以参考ISO/OSI的7层网络架构。实现信息交互/通讯,的最终目标是考虑如何让接收方能够“理解”发送方的意图。2024/11/6122.5完整的数字化通讯模型多种多样、千变万化的通讯接口。PC机常用内部总线和接口:ISA、PCI、PCI-E、Compact-PCI、PC104、PXI、PC104Plus、DDR3、STAT、STAT2、SCSI、……PC机常用对外总线和接口:RS232、PS2、VGA、HDMI、USB2.0、USB3.0、SCSI、PCMCIA、……常用无线接口:BlueTooth、WIFI、CDMA、WCDMA、LTE、……芯片之间常用接口:高速串口:SPI、HDMI、PCI-E并口:低速串口:I2C工业常用接口:早期串行接口:RS232、RS422、RS485、……工业网络总线:工业以太等现场总线:目前比较热门的接口其他:2024/11/6132.6常见通讯接口举例3.1数据传输中的报文报文(message)是通讯中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。显然报文也是网络传输的单位,传输过程中会不断的封装成分组、包、帧来传输。封装的方式就是添加一些信息段,那些就是报文头以一定格式组织起来的数据。比如里面有报文类型,报文版本,报文长度,报文实体等等信息。注意:报文<>帧;报文是一个完整的内容,当然可以将一个很长的、很大的报文拆分成几个小的报文报文不是由硬件完成的,而是由通讯双发约定的(协议)由于为通讯使用,所以报文还必须考虑到便于传输、校验、信息说明等内容2024/11/6143报文、包和帧的概念一般在ISO的网络层,往往将报文拆分后,根据各自的通讯协议进行封装,并下发到下一层。打包的工作可以分为两类,一类是需要用户实现的,一类则可以依靠硬件驱动和硬件实现的。譬如,某网页的内容非常多,不可能仅靠一个报文就够的。因此可以对报文进行拆分。拆分后,依据网络层进行打包传递。但是将较大的报文进行拆分,将面对多的问题(略)。有些工作目前已经被整合到驱动中,有些则需要用户自己实现。在有些接口协议中,帧数据就是包数据。但是请不要将包和帧等同起来。对于包的理解,在TCP/IP中应用的非常多。推荐书籍:《TCP/IP详解》(3卷),W.RichardStevens著,机械工业出版社2024/11/6153.2数据传输中的数据包(packet)通讯传输中,帧是由不同的“位”组成的最小数据段。数据包往往也会被拆分,按照帧的单位进行传输。帧由几部分组成,不同的部分执行不同的功能。例如CANBus协议,将帧同报文一样,分成帧头、数据、帧尾三个部分。帧头和帧尾往往由协议自动指定。帧的大小由通讯设备来确定,对于有些通讯接口而言,帧的大小是固定的,例如RS232、CANBus等;但是有些通讯接口的帧大小是在一定范围内浮动的,例如以太网。不仅在通讯接口中,帧的概念在其他很多地方都有使用。例如,目前的有些高清摄像机,实际保存的是图片,只不过拍摄这些图片的时间间隔非常短,连续起来就像视频(事实上视频也是按照帧进行划分的)。这些图片往往被称为帧。帧的结构是由相对应的通讯接口进行确定的。在很多通讯协议中(例如RS232、CANBus、SPI等),报文被拆分成包或帧。因此对于接收方来说,获取接收信息,必须按照规则将帧进行整合,从而得到报文。2024/11/6163.3帧(Frame)虽然协议,或者接口,均带有编码和解码的概念,但是并不是我们说采用何种通讯接口,就可以实现通讯。在当前的很多工业通讯中,接口并未定义应用层和表示层的协议。换句话说,这些接口只能够告诉你报文的0、1组成方式,而不能告诉你报文所代表的具体含义。编码往往具有两种范畴:将对象数据采用约定的协议(往往自定义),切分成由0、1组成的数据段;在通信理论中,编码是对原始信息符号按一定的数学规则所进行的变换。编码的目的是要使信息能够在保证一定质量的条件下尽可能迅速地传输至信宿。事实上,在应用中这两种范畴都使用到了。解码则是编码的逆过程。2024/11/6174编码(Code)和解码(Decode)某设备中,采用以太网传输采样数据、控制命令、状态信息等内容。2024/11/6185报文编码和解码示例1考虑:如何来保证接收方能够接收到来自发送方的数据和指令?必须保证不能丢数据;必须保证能够正确的理解数据背后的含义;显然需要分析对象特征从而确定以下内容分析应用环境,以保证可靠性分析数据流量和传输特征,来确定传输速率、带宽分析交互方法,从而确定通讯协议分析数据类型,划分报文分析传递的信息内容,确定报文编码、解码方式其他;以上内容并非各自独立,确定使用何种通讯协议必须综合考虑所有因素,有时因素之间存在矛盾的问题,因此需要根据对象特性进行平衡。如果经过综合分析和论证,选定了通讯协议和接口,那么报文的编码和解码方式则可以开始。2024/11/6195报文编码和解码示例1(续1)在这里,我们将所有的报文分为三个部分:报文头、报文正文、报文尾。报文结构报文头结构

报文尾结构2024/11/6205报文编码和解码示例1(续2)b0

b7

b15报文起始标识符:0x55aa报文总长度(报文头+报文正文+填充字段)发送方标识报文类型标识时戳(内容不定)b0

b7

b15

报文校验和

报文结束标志符:0xff00

在报文头中:报文起始标志:0x55AA是常用的标志由于存在多种报文,每种报文长度并不确定,为了方便将帧数据组装成报文,则需要给出报文长度发送方标识:由于具有多个设备,每个设备均可以做发送方,并且每个发送方数据的含义不同,因此为了方便解码必须指定发送方,从而使用对应的编码方式。(当然还有其他原因,略)报文类型:有时候一个个发送方会发送多种报文,为了区别这种来自单个设备的多个报文。(问:如果这样为啥还用发送方标识)时戳:当前报文发送和接收到的时间。报文尾的主要目的在于:如何确定报文结束;如何确定报文接收的正确性;如何保证帧组装和解码时,不会出错。2024/11/6215报文编码和解码示例1(续3)在报文头中的“发送方标识”和“报文类型”已经具有编码的概念了,例如用0x0801表示“动力系统集中监控台”,用0x0001表示该报文类型。但是在报文正文中,各个数据的定义则涉及到较多的内容,并非像报文头那样简单指定。报文正文涉及到以下内容:数据内容:例如发送哪些数据;数据类型:这些数据时开关量、数值量(浮点、定点、正负)数据长度:有些数据位32bit,有些为8bit;数据的取值范围:数据的单位:数值量往往有其物理含义,例如表征压力、电流等发送数据的先后顺序:哪个数据先发送,哪个后发送;编码和解码方式:如何使用数字量表示这些浮点、定点、正负数值,并且接收方如何针对数据进行解码。对于其中的一些报文请参见文档:2024/11/6225报文编码和解码示例1(续4)由于报文是一个组装起来的数据段,因此可以使用封装包的方法来进行编程。目前多种语言提供了这种封装方法,例如C/C++的结构体、C++的类、Delphi的类、JAVA的类。事实上封装的方法很多,例如:方法1:采用结构体嵌套的方式,能够较清楚的反映报文大致结构。每个被嵌套的结构体采用各自的字段进行编写。方法2:使用完整的结构体表示一个报文的具体结构。2024/11/6236报文编码和解码的编程//C示例:方法1struct_tagMsg_XXX//名称{struct报文头结构体;

struct报文正文结构体;struct报文尾

结构体;

其他字段;}typedefstruct_tagMsg_XXXSSMSG_XXX,*PSSMSG_XXX;方法1和方法2的本质是一样的,但是在报文正文中存在多种定义字段的方式。例如,按帧流的方式定义、或者按照数据内容的方式定义字段。2024/11/6246报文编码和解码的编程(续1)//方法1:报文头的定义(C示例)typedefstruct_tagMsgBody_XXX//名称{UINT16msg_tag;//报文起始标志符

UINT16msg_len;//报文长度

UINT16msg_id;//发送方标识

UINT16msg_type;//报文类型标识

UINT32msg_time;//时戳}MSG_HEADERINFO,*LP_MSG_HEADERINFO;//方法1:采用数据内容定义报文正文typedefstruct_tagMsgBody_XXX//名称{

数据类型

数据名称;//第1个字段数据类型

数据名称;//第2个字段……数据类型

数据名称;//第n个字段}SSMSGBODY_XXX,*PSSMSGBODY_XXX;//采用帧流的方式定义报文正文//假定低位在前,且帧长为8bittypedefstruct_tagMsgBody_XXX//

温馨提示

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

评论

0/150

提交评论