嵌入式串口同步帧数办法解析
串口通讯是日前单片机和DSP等嵌入式体系之间,以及嵌入式体系与PC机或无线模块之间的一种非常重要且遍及运用的通讯办法。在嵌入式体系的硬件结构中,一般只需一个8位或16位的CPU,不只需完结主流程的作业,一起还要处理随时发生的各种中止,因此嵌入式体系中的串口通讯程序规划与PC机有很大的不同。若嵌入式体系中.中止服务子程序在体系运转进程中占用了较多的时刻,就有可能在中止眼务子程序正运转时,又发生一个同类型或其他类型的中止,然后形成主程序得不到履行或后续中止数据丢掉。所以,嵌入式体系中的串口通讯尽管看似简略,但其间仍有许多问题值得研讨,例如串口通讯进程中的帧同步问题。本文针对该问题给出了逐次比较、依据FIFO行列和依据状态机的3种帧同步办法。经过测验、剖析和比较得出,依据有限状态机的办法是嵌入式体系串口通讯中很有用的帧同步办法,一起也是一种很不错的串口通讯程序规划结构。
1 串口通讯的数据帧结构
现代工业操控,往往需要由多个独立的操控模块来共同完结。它们之间经过串口通讯完结杂乱的操控进程,有必要在通讯进程中参加必要的通讯协议,以进步体系的可靠性和稳定性;而要完结特定的通讯协议,就得有必定的同步机制。下面介绍一下简化的串口通讯数据帧结构,以便剖析阐明嵌入式体系串口通讯进程中的帧同步办法。
假定串口发送的数据帧结构为:
其间:包头用于同步,一般是一个或多个ASCII字符,本文中假定数据帧同步头有2字节(0xAA、0x55);包长表明数据包中除掉包头和包长的字节数,一般用约定好的几个字节表明;类型为通讯协议里规则的指令类型;数据为应发送的首要信息;校验一般选用单字节“异或”的办法。
2 串口通讯中的帧同步办法
2.1 逐次比较的帧同步办法
首要等候串口数据,将接纳到的第1个字节数据与约定好的包头信息的第1个字节进行比较。假如不正确,则等候新字节,直到接纳的数据与包头信息的第1个字节相同。第1个字节比较正确今后,将收到的第2个字节与包头信息的第2个字节进行比较。假如依然正确,则阐明串口接纳现已同步,能够开端接纳数据帧中的数据部分;不然,重新开端同步进程。其程序流程如图1所示。
此种办法代码量小,编程简略,一般用于在主程序中以非中止办法接纳串口数据、实时性很差、数据帧较短的场合。可是,在串口速度过快且包头字节数比较多的情况下,串口完成同步花费的时刻很长或很难完成同步。例如,串口接纳到序列Ox0O OxAA0xAA 0x55…,当遇到第一个“0xAA”时,该办法以为第1个字节正确开端比较第2个同步头。第2个字节仍是“0xAA”而不是“0x55”,所以有必要等候新的字节重新开端比较第1个同步头。而紧随其后的是“0x55”,因此,此刻包头的第1个字节也没有同步上。事实上,“0x00 OxAA”是搅扰字节,“0xAA 0x55”才是通讯协议中的同步头。
怎样学好嵌入式技能?
跟着现代社会信息化进程的加快,嵌入式体系被广泛的地使用于军事、家用、工业、商业、工作、医疗等社会各个方面,表现出很强的出资价值。从世界规模来看,作为数字化电子信息产品中心的嵌入式体系现在其硬件和软件开发工具商场现已打破2000亿美元,嵌入式体系带来的全球工业年产值更是达到了一万亿美元,跟着全球经济的持续增加以及信息化的加快开展,嵌入式体系商场必将进一步增加。
依据我国物联网校企联盟的主张,学习嵌入式体系的必备条件与学习办法如下:
1、C开发经历
条件:Linux
办法:首要是把握ANSI C编程(不包含gtk,qt等图形可视化开发)
2、网络、操作体系、体系结构
条件:Linux,各种书,算法、例程。
办法:经过C编程完成简略的网络等常识的算法和进程。
3、嵌入式体系概念
条件:各个嵌入式网站,讨论组,书本
办法:少发问,多留给自己考虑的空间。
4、嵌入式开发实践
条件:各种嵌入式体系开发工具的demo版,包含编译器,仿真器。
办法:一个是依据MCU/MDSP的嵌入式体系开发,另一个是像Palm OS,WinCE,uC/OS II等RTOS下的使用软件开发。第一个是针对硬件开发而言的,而第二个则是针对软件开发而言的。
5、硬件开发
条件:各种嵌入式芯片、存储器等电路器材,protel99等电路规划软件,电路板制造。
办法:这时候该有开发条件了,最起码是51系列,这个比较便利。电路的规划内容较多,不过看起来吓人,实际上比软件要简略的多。只需下功夫,实践会告知你全部。