嵌人式环境下串行帧通信的设计与实现
基于FPGA的串口通信设计与实现

置和输人数据计算出响应
的奇偶校验位,它是通过
纯组合逻辑来实现的。
2.6总线选择模块
总线选择模块用于
选择奇偶校验器的输入是
数据发送总线还是数据接
收总线。
2.7计数器模块
计数器模块的功能
是记录串行数据发送或者
接收的数日,在计数到某
数值时通知UART内核模
块。 3 UART程序设计 UART完整的工作流程可以分为接收过程
关键词:FPGA:UART:RS232
引言 串行接口的应用非常广泛,为实现串口通 信功能一般使用专用串行接口芯片,但是这种 接口芯片存在体积较大、接口复杂以及成本较 高的缺点,使得硬件设计更加复杂,并且结构与 功能相对固定,无法根据设计的需要对其逻辑 控制进行灵活的修改。介绍了一种采用FPGA 实现串口通信的方法。 1串口通信协议 对一个设备的处理器来说,要接收和发送 串行通信的数据,需要一个器件将串行的数据 转换为并行的数据以便于处理器进行处理,这 种器件就是UART(Universal Asynchronous Re— ceiver/Transmitter)通用异步收发器。作为接iSl的 一部分,UART提供以下功能: 1.1将由计算机内部传送过来的并行数据 转换为输出的串行数据流; 1.2将计算机外部来的串行数据转换为字 节,供计算机内部使用并行数据的器件使用; 1.3在输出的串行数据流中加入奇偶校验 位,并对从外部接收的数据流进行奇偶校验: 1.4在输出数据流中加入启停标记,并从 接收数据流中删除启停标记。 2 UART模块设计 UART主要由UART内核、信号检测器、移 位寄存器、波特率发生器、计数器、总线选择器 和奇偶校验器7个模块组成。(见图1) 2.1 UART内核模块 UART内核模块是整个设计的核心。在数 据接收时,UART内核模块负责控制波特率发 生器和移位寄存器同步的接收并且保存 RS一232接收端口上的串行数据。在数据发送 时,UART内核模块首先产生完整的发送序列, 之后控制移位寄存器将序列加载到移位寄存器 的内部寄存器里,最后再控制波特率发生器驱 动移位寄存器将数据串行输出。 2_2信号检测模块 信号检测器用于对RS一232的输入信号进 行实时检测,一旦发现新的数据则立即通知 UART内核。需要注意的是,这里所说的 RS一232输入输出信号都指经过电平转换后的 逻辑信号,而不是RS一232总线上的电平信号。 2_3移位寄存器模块 移位寄存器的作用是存储输入或者输出 的数据。 2.4波特率发生器模块 由于RS一232传输必定是工作在某种波特 率下,比如9600,为了便于和RS一232总线进行 同步,需要产生符合RS一232传输波特率的时 钟。 2.5奇偶校验器模块 奇偶校验器的功能是根据奇偶校验的设
嵌入式实时内核的串口通信模块设计

网络与通信NETWORK AND COMMUNICATION1引言许多采用51单片机的工业控制系统使用了各种智能模块。
智能模块一般具有数据采集、实现控制、实时通信等功能,各种智能模块提供的数字化输出形式多采用串行方式,因此,针对51系列单片机与智能模块的串口通信,研究基于嵌入式实时内核的串口通信模块设计具有一定的普遍意义。
然而,在51系列单片机系统中,可以进行移植的嵌入式操作系统为数不多。
Keil公司的RTX51Full是一个基于51系列单片机的有实用价值的实时操作系统,但该操作系统是一个源码不公开的收费软件。
Small RTOS51是专门为小RAM系统设计的占先式内核,占用资源少、实时性好,且可以免费获得源代码。
在此介绍基于实时操作系统Small RTOS51的串口通信模块程序设计技术。
2Small RTOS51及其消息队列Small RTOS51是一个专门为51系列单片机设计的嵌入式实时操作内核,使用Keil编译器可以直接使用其代码。
Small RTOS51采用中断管理方式,源代码公开,便于用户的二次开发,可以嵌入到产品中成为应用产品的一部分。
这对以51系列单片机为硬件平台的嵌入式系统设计而言,不仅简化了编程手段,而且便于程序移植。
Small RTOS51的消息队列以字节变量作为消息,任务或中断服务程序通过内核提供的服务将消息放入消息队列,同样,任务也可以通过内核提供服务从消息队列中得到消息。
用户需要对表示消息的字节变量自行定义,同时给它赋予一定的含义。
实际设计中可以选择按照FIFO或LIFO方式传送消息。
内核提供了创建消息队列OSQCreate()、等待消息队列的消息OSQPend()、任务向消息队列发送消息OSQPost()、中断向消息队列发送消息OSQIntPost()、无等待取得消息OSQAc-cept()等典型消息队列服务。
这些内核服务函数均带参数。
函数参数包括消息队列的ID、队列中消息数目和消息的大小、向消息队列中存放的数据、被存放数据的所在位置和数据读取后将要存放的位置。
基于VxWorks串行通信的设计与实现

O八一 科技
基 于V Wok 串行 通信 的设 计与 实现 x rs
4 5
3 实 时 系 统 的 串 口通 信 基 本 原 理
在 V Wok x rs中 ,串 口通信 由 串行 通 信 控制 器 (C )控 制 。一个 S C芯片 一般 有 2 4 SC C —
个 通 道 ,一个 通 道 物 理 上对 应 一个 串 口 ,每 个 S C通 道 有 独立 的 通 道缓 冲 区 ,能独 立地 C
2 V W ok x rs简 介
V Wok 是一个 具 有 可伸 缩 、可 裁 剪 和高 可 靠性 。同时适 用 于 所 有流 行 目标 C U平 x rs P 台的实 时操作 系 统 。V Wok 包 括 一个 微 内核 、强 大 的 网络 支 持 、文 件 系统 、I 系统 和 x rs / 0
基 于V Wo k 串行通信 的设计 与 实现 x rs
O八 一科技
基于V Wok串行通信的设计与实现 x rs
王 晓芬
( 兵器 集 团火控技 术 中心 成都 6 1 3 ) 1 7 1 摘 要 :本 文通过嵌 入 式 实时操 作 系 ̄V W ok在 火控 系统 中的 实际应 用, x rs 以
C + 持 的各种模 块 。v Wok 提 供定 制硬件 的板级 支 持包 (S ) +支 x rs B P ,实 现硬 件抽 象层 。B P S 由代 码 、文 档 、和规 范 组成 。用做 V wok 程序 和 特 定硬 件 之 问 的接 1 x rs 3。B P包 含 标 准 S
的 串行通 信规 范 。为 在 V Wok 系统 下 的 串行通 信 实 现提 供 了便 利 。 同时 ,WR x rs S公 司还
图 1 串 1软 件 结 构 : 7
嵌入式系统与PC机的USBUART通信设计

嵌入式系统与PC机的USBUART通信设计1 概述RS232(UART)接口是一种简单、方便和实用的通信接口,用途非常广泛。
在许多嵌入式应用,如智能仪器仪表、电子设备中,均使用RS232与PC机等外部系统进行通信,实现上位机对下位机的控制及数据交换等。
在系统调试过程中,通常也是通过RS232,将调试数据发送到PC上显示出来。
但在PC机领域,RS232(COM)串行接口已经从最新一生产的计算机,尤其是笔记本电脑中消失了,而串行接口USB成为了标准的配置。
这种变化给硬件工程师带来了不少麻烦。
目前通常的解决办法是购置一根“USB to RS232”转换电缆,其基本作用是在USB总线上仿真出一个RS232端口。
这种方法的主要优点在于:PC应用程序将该USB口连接当作COM口连接使用,从而可以使工程师轻松跨越复杂的USB低层接口协议,仍使用原来熟悉的,针对COM口操作的方式编写程序代码。
本文将介绍另外一种与上述方法原理类似的设计实现方案,设备之间的外表连接全部换成了USB标准物理接口和连接电缆,但在PC上仍然使用针对COM口操作的方式编写程序代码,保留了原来的风格。
该方案是采用Cypress公司PSoC家族中带USB接口的CY7C64215(或CY8C24x94)芯片实现的。
2 PSoC、PSoC USB和USBUART2.1 PSOC可编程片上系统(Prograromable System on Chip,PSoC),是Cypress公司近几年推出的一种新型的可编程半导体器件芯片。
PSoC由8位微处理器内核,多个可编程的模拟模块和数字模块,硬件乘法累加器,以及I2C、Flash、SRAM等周边外围资源组成。
因此,PSoC除了能实现一般MCU的功能外,还可通过可编程模拟和数字模块,灵活地实现嵌入式系统所需的多种模拟与数字外围功能。
PSoC集三种可编程能力于一体,不仅具有MCU的可编程能力,还包含了部分可编程逻辑运算功能,同时提供了可编程模拟阵列。
嵌入式系统中串口通信帧的同步方法

嵌入式系统中串口通信帧的同步方法引言串口通信是日前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种非常重要且普遍使用的通信方式。
在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU,不仅要完成主流程的工作,同时还要处理随时发生的各种中断,因而嵌入式系统中的串口通信程序设计与PC机有很大的不同。
若嵌入式系统中.中断服务子程序在系统运行过程中占用了较多的时间,就有可能在中断眼务子程序正运行时,又产生一个同类型或其他类型的中断,从而造成主程序得不到执行或后续中断数据丢失。
所以,嵌入式系统中的串口通信虽然看似简单,但其中仍有许多问题值得研究,例如串口通信过程中的帧同步问题。
本文针对该问题给出了逐次比较、基于FIFO队列和基于状态机的3种帧同步方法。
通过测试、分析和比较得出,基于有限状态机的方法是嵌入式系统串口通信中很有效的帧同步方法,同时也是一种很不错的串口通信程序设计结构。
1 串口通信的数据帧结构现代工业控制,往往需要由多个独立的控制模块来共同完成。
它们之间通过串口通信完成复杂的控制过程,必须在通信过程中加入必要的通信协议,以提高系统的可靠性和稳定性;而要完成特定的通信协议,就得有一定的同步机制。
下面介绍一下简化的串口通信数据帧结构,以便分析说明嵌入式系统串口通信过程中的帧同步方法。
假定串口发送的数据帧结构为:其中:包头用于同步,一般是一个或多个ASCII字符,本文中假定数据帧同步头有2字节(0xAA、0x55);包长表示数据包中除去包头和包长的字节数,一般用约定好的几个字节表示;类型为通信协议里规定的命令类型;数据为应发送的主要信息;校验通常采用单字节“异或”的方法。
2 串口通信中的帧同步方法2.1 逐次比较的帧同步方法首先等待串口数据,将接收到的第1个字节数据与约定好的包头信息的第1个字节进行比较。
如果不正确,则等待新字节,直到接收的数据与包头信息的第1个字节相同。
串行通信协议在嵌入式系统中的应用试卷

串行通信协议在嵌入式系统中的应用试卷(答案见尾页)一、选择题1. 串行通信协议在嵌入式系统中主要用于:A. 数据传输B. 远程控制C. 系统间通信D. 以上都是2. 在嵌入式系统中,以下哪个不是常见的串行通信协议?A. RS-232B. SPIC. I2CD. HDMI3. 以下哪项不是串行通信协议的特性?A. 信号传输简单B. 只能传输数字信号C. 传输距离远D. 成本低4. 在选择串行通信协议时,通常需要考虑哪些因素?A. 传输速度B. 通信距离C. 抗干扰能力D. 以上都是5. 以下哪种设备通常使用串行通信协议进行数据传输?A. 打印机B. 键盘C. 鼠标D. 显示器6. 以下哪项不是串行通信协议中的帧格式?A. 同步帧B. 异步帧C. 空闲帧D. 广播帧7. 在使用串行通信协议时,为了确保数据的正确传输,通常需要考虑哪些因素?A. 波特率B. 数据位C. 奇偶校验D. 以上都是8. 以下哪种设备是串行通信协议中常用的从设备?A. 计算机B. 手机C. 微控制器D. 数字相机9. 在设计嵌入式系统时,选择串行通信协议需要考虑哪些因素?A. 系统的性能需求B. 电源限制C. 通信距离D. 以上都是10. 以下哪种情况不适合使用串行通信协议?A. 高速数据传输B. 长距离通信C. 高抗干扰能力要求D. 低功耗要求11. 以下哪项不是串行通信协议在嵌入式系统中常用的?A. I2CB. SPIC. USBD. HDMI12. 在嵌入式系统中,哪种串行通信协议具有高速度和低功耗的特点?A. I2CB. SPIC. USBD. HDMI13. 以下哪项是SPI通信协议的特点?A. 高速度B. 低功耗C. 高成本D. 易于使用14. IC通信协议中,主设备是如何与从设备进行通信的?A. 主设备发出命令,从设备响应B. 主设备发送数据,从设备接收C. 主设备与从设备同时发送和接收数据D. 以上都不对15. SPI通信协议中,主设备控制时钟信号的方式是?A. 主设备提供时钟信号B. 从设备提供时钟信号C. 双方设备共同提供时钟信号D. 以上都不对16. 以下哪种设备通常作为SPI通信协议的从设备?A. 微控制器B. 存储器C. 显示屏D. 扬声器17. USB通信协议主要用于哪种类型的设备连接?A. 高速外设B. 低速外设C. 有线连接D. 无线连接18. USB通信协议中的设备分类包括?A. HubB. 控制器C. 外设D. 上层软件19. 以下哪项不是USB通信协议中的传输类型?A. 控制传输B. 批量传输C. 端点传输D. 中断传输20. 在设计嵌入式系统时,选择适当的串行通信协议需要考虑哪些因素?A. 性能需求B. 功耗限制C. 连接设备的类型D. 系统成本21. 以下哪个是常用的串行通信协议?A. I2CB. SPIC. USBD. HDMI22. 以下哪个是SPI通信协议的特点?A. 高速度B. 低功耗C. 需要时钟信号D. 不支持多个设备同时连接23. 以下哪个是IC通信协议的数据传输方向?A. 单工B. 半双工C. 全双工D. 无方向性24. 以下哪个是USB通信协议的标准版本?A. USB 1.0B. USB 2.0C. USB 3.0D. USB 4.025. 以下哪个是SPI通信协议的典型应用场景?A. 网络通信B. 存储设备访问C. 传感器数据采集D. 显示器控制26. 以下哪个是IC通信协议在嵌入式系统中常见的应用?A. 传感器数据采集B. LED闪烁控制C. 键盘输入D. 触摸屏操作27. 以下哪个是USB通信协议在嵌入式系统中常见的应用?A. 网络通信B. 存储设备访问C. 打印机连接D. 无线模块通信28. 以下哪个是SPI通信协议在嵌入式系统中的常见实现方式?A. 基于硬件桥接B. 基于软件编程C. 基于专用控制器D. 基于通用处理器29. 以下哪个是IC通信协议在嵌入式系统中的常见实现方式?A. 基于硬件桥接B. 基于软件编程C. 基于专用控制器D. 基于通用处理器30. 以下哪个是USB通信协议在嵌入式系统中的常见实现方式?A. 基于硬件桥接B. 基于软件编程C. 基于专用控制器D. 基于通用处理器31. 在嵌入式系统中,串行通信协议通常用于:A. 高速数据传输B. 远距离通信C. 系统内部设备间通信D. 以上都是32. 以下哪项不是串行通信协议的特点?A. 信号传输简单B. 传输线路成本低C. 可靠性高D. 传输速度慢33. 串行通信协议中的波特率是指:A. 每秒传输的位数B. 信号的电平级别C. 数据的起始位34. 在嵌入式系统中,常用的串行通信协议有:A. RS-232B. SPIC. I2CD. 以上都是35. RS-协议主要用于:A. 近距离低速通信B. 近距离高速通信C. 远距离低速通信D. 远距离高速通信36. SPI协议的主要特点不包括:A. 高速传输B. 同步传输C. 信号线少D. 易于使用37. IC协议主要用于哪种类型的设备间通信?A. 高速电子设备B. 远距离传感器C. 复杂的电子设备D. 低功耗设备38. 以下哪项是串行通信协议在嵌入式系统中可能遇到的常见问题?A. 错误检测B. 信号干扰C. 数据丢失D. 以上都是39. 在设计嵌入式系统的串行通信协议时,主要考虑的因素包括:B. 通信距离C. 抗干扰能力D. 以上都是40. 什么是串行通信协议?它在嵌入式系统中的主要作用是什么?A. 串行通信协议是一种数据传输方式,用于在嵌入式系统中与外部设备进行数据交换。
嵌入式系统中的通信协议设计

嵌入式系统中的通信协议设计嵌入式系统是现代电子技术中的一种重要形式,由于其设计的嵌入结构,通信协议是其最基础的设计需求之一。
通信协议是数据传输的规则,它可以帮助我们控制数据流量,使不同设备之间进行有效的通信。
因此,在嵌入式系统设计中,通信协议设计显得尤为重要。
嵌入式系统中最常用的通信协议是RS232和SPI。
RS232是一种串行通信接口协议,它可以在短距离传输数据。
SPI是一种串行外设接口协议,它可以在不同设备之间高速传输数据。
RS232和SPI协议的设计原则相同,都是将数据封装成帧,以便于发送和接收。
在嵌入式系统中,将会面临许多与处理器和外设的通信协议,包括CAN、USB、I2C和Ethernet协议等。
CAN是一种高速串行通信协议,它常用于汽车领域中。
CAN协议允许多个节点同时进行通信,其硬件设计非常成熟,可以使数据传输过程更加可靠。
USB协议是一个由多个设备之间进行数据传输的标准协议,它的传输速率高,且可以同时支持多种设备。
I2C协议是一种地址定向协议,通过设置地址的方式可以在同一总线上进行多个设备之间的通信。
Ethernet协议是一种高速通信协议,它可以在网络之间传输数据,并且可以使用TCP/IP协议来实现应用层协议的通信。
在嵌入式系统中,设计通信协议需要考虑多种因素。
首先,需要考虑系统的传输速率和数据传输大小。
其次,需要考虑系统的传输距离和环境条件。
还需要考虑通信协议的可靠性、利用率和兼容性等问题。
通信协议设计的第一步是确定通信协议的格式和规则。
在确定协议格式时,需要考虑包的长度、起始位、结束位、校验码等因素。
在确定协议规则时,需要考虑数据传输的速率、数据帧的重传机制、错误检测和纠错机制等。
设计通信协议还需要考虑硬件设计,包括电路板的和传输线路的设计。
需要设计电路板以最小化设备结构,在较大的范围内最小化功耗并确保最小化抗干扰性。
传输线路的设计也要考虑到抗干扰性和反射波的影响。
在嵌入式系统中,还有一个通信协议设计的问题是实时性。
VC环境下串行通信的设计与实现

第2卷 第1 3 2期 20 0 7年 1 2月
甘肃 科技
Ga s ce c n c n l g n u S in e a d Te h o o y
V . N o 2 Z 23 .1
D e . 20 7 c 0
V C环 境 下 串行通 信 的设 计 与 实现
形式进行 通信 。数 据 通 信 时 , 位 机 与 上位 机 之 间 下 发送 通信命 令 , 位机 接 收 到 数 据采 集 点 发 送 回的 上 应 答命令 后 继 续 发送 下 行 命 令 。根 据 系 统 功 能要 求, 上位机需 发送 两种 类 型 的命 令 , 是 周 期命 令 , 一
据链路 层上位 机接收数 据流程 图及下 位机发 送数 据
流程 图等 。限于 篇 幅 , 给 出上 位机 查 看 网 络所 有 只
志准备接 收数据 。( ) 2 数据传送 : 位机 发送 接收数 下位机 , 上 获取下位 机号 程序流程 图。
传送 : 据 3 数 传送 : 据 4 数 传送 : 据 5 数 传送 : 据 6 数 传送 : 数据 7
2 通 信 协 议
( ) 理 层 1物
实 现单 字 节无 条 件 传 输 。在 RS 3 2 2线 路 上 实
现半双工 、 异步 传输 字节 。波特 率 由物理 层 设定 , 并 事先 在相互 传递 的物理 层 之间 约定 好 。物理 层 传输 完全 由硬件实 现 。 () 2 数据 链路层 实现数据 包 按 地 址 正确 可靠 地 到达 目标 位 置 。 信 道的分 配 : 连 接 后 传 数 据 。校 验 : 用 奇 偶 校 先 采 验 。纠错 : 自动重 发 +等停 协议 。
:恃 地 打 } 兰 髓 盘 夸
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
发方设备按照约定的应用层数据格式构造应用层 数据,交由链路层进行数据的拆分、封装、校验,再将生 成的数据以数据帧的形式发送至物理线路;收方设备则 从物理线路上接收数据,进行帧定位、解封装、错误检 测、数据合并等,最后将应用层数据上交给应用层处理。 收发方设备的应用层可根据用户需求的变化,不断修改 应用层数据格式,并利用链路层提供的功能接口完成通 信功能,故该通信协议设计的关键在于链路层,以下着 重阐述链路层的设计与实现。 3链路层设计
4链ห้องสมุดไป่ตู้层实现
链路层采用C¨语言实现∽8|,以便于代码在各模 块程序中复用。应用层数据发送和接收流程如图2, 图3N示。
61
■匿曩冒国圜
堕 压董:壁△重还撞工里i重蝰适量笪逡i土墨塞塑
图2应用层数据发送流程图 图3应用层数据接收流程图
S结语
链路层的作用是可靠地把应用层数据发送到对端 设备,但如果仅仅是这样,应用程序使用起来并不是很 方便,如果使用面向对象编程的方法,把链路层代码封 装在一个类中嘲,向应用程序提供一些较为简单的功能 接口,如发送数据,接收数据,检测对端是否可达等,就 可以很好地解决易用性问题。另外当数据发送失败时, 应当以返回值或事件方式通知应用程序,当有应用层数 据需要处理时,最好以回调函数或事件方式激活应用层 处理程序,以避免应用程序低效的循环检测口…。通过 在协议设计和协议实现两个方面同时进行优化,该协议 在实际应用过程中表现出极好的可靠性和一定的通用 性,可供参考借鉴。
信协议,该协议简单可靠,能适应多种系统环境。在嵌入式Linux系统环境下,该协议在实际应用系统中运行稳定。
关键词:串行通信;协议设计;嵌入式Linux系统;应用层;链路层
中圈分类号:TNgll一34
文献标识码:A
文章编号:1004—373X(2010)23—0060—03
Design and Implementation of Serial Frame Communication in Embedded Environment
接收方收到数据帧后,当超时指示位为0时,如果 校验正确,则发送确认帧,并处理此帧,如果校验错误, 则发送拒绝帧,不处理该帧;当超时指示位为1时,说明 对方未正确收到确认帧或拒绝帧,如果上次非重发帧的 校验结果是正确的,则该帧实际上已经处理过,直接发 送确认帧即可;如果上次非重发帧的校验结果是错误 的,则根据校验结果正常处理该帧。
链路层主要包含以下功能:数据拆分与合并、数据 封装与锯封装、数据帧的发送和接收以及错误检测与重 发机制。 3.1数据拆分与合并
数据拆分即是把过长的应用层数据分成几部分,用 多帧数据帧发送,接收端收到后再进行数据合并,上交 给应用层处理。过长的应用层数据如果不进行拆分,可 能导致数据帧超出设计的缓冲区大小,也可能造成发送 时间太长导致超时错误。这个长度需要根据实际需求 合理设置,当数据帧传输出现错误时,这帧数据就需要 重新传输,长度太大将造成较大开销;长度太小,封装时 产生的开销字节所占比例又太高,影响传输效率。 3.2数据封装与解封装
参考文献
[1]马玉春‘,宋瀚涛.串行通信协议的研究及应用[J].计算机应 用研究,2004。21(4):228—229.
[2]尚为科技有限公司.串行通道协议[-EB/OL].[2006—10-09]. http://www.china-sunwe.com.
[3]王晓兰,刘伟平,王惠中,等.电力抄表系统的握手式串行通 信协议的研究[J].测控技术,2006,25(3):66—68.
1系统通信需求
本系统主要完成野外环境下时间间隔测量和瞬态 数据采集的功能,系统内各模块均选用三星公司的 ¥3C2440芯片为处理器,操作系统使用嵌入式Linux。 模块问通信的主要任务为控制命令的下发与应答、工作 状态和采集数据的上报等,对通信的可靠性要求较高, 无数据加密需求。
根据系统软硬件情况设定串口工作参数如下:
—囝■重国固
堕压董:送△塾还煎工室缉堕逗笪鱼退让墨塞堡
嵌人式环境下串行帧通信的设计与实现
陈 乐,唐 波,卢 力
(国防科学技术大学电子科学与工程学院,湖南长沙410073)
摘 要:在嵌入式环境下,因设备同通信距离较远,多采用串行通信方式,但许多串行通信协议只适用于协议设计时的
应用系统环境,不具有通用性,且有些协议存在通信失败的风险。通过分析设备间的通信需求,设计了一种分层的串行帧通
欢娅订阅2011年度《坝代电子技市》(半月刊)
邮发代号:52—126 定价:18元/期432元/年 电话:029--85393376 传真:029--85393376
62
万方数据
收稿日期:2010—07—08 60
万方数据
115 200波特率,8位数据位,1位停止位,奇校验、无流 控。波特率的设置需要综合考虑所选用芯片的串口性 能、串口连接线长度、传输数据的最大帧长和应用过程 中的误码率等;无流控则是由于串口使用三线方式 连接。 2通信协议的分层结构
为保证不同设备之间通信协议的通用性,降低实现 的复杂度,将通信协议为分上下两层:上层为应用层,规 范了设备间应用程序通信使用的应用层数据格式;下层 为链路层,提供物理线路数据的发送与接收,应用层数 据拆分与合并、封装与解封装以及错误检测功能。协议 应用层部分根据各设备功能的不同使用不同的数据格 式,而链路层部分则完全通用。应用层通信过程如图1 所示。
[10]Sun Microsystems Inc..Linux多线程编程指南[R].[2001~ 08—11].http://www.sun.corn.
[11]周政,王成华.嵌入式Linux下基于单片机的矩阵键盘与 ARM的串行通信[J].现代电子技术。2008,31(4):
1 77一】80.
作者简介:陈 乐 男,1983年出生,江西樟树人,硕士生,实习研究员。主要研究方向为图形图像处理与信息可视化。 ’7070,07妇b,70,o,、)’e’,7j70,,,,7070’07070’o,o’o’o’070,o,o,0707々,070,070,o,o’o’e_,C70’o’o’o,07070,o'o’o,’7
发送方发送一帧数据帧后,设置一个最长等待时 间,等待接收对方的确认帧或拒绝帧,若收到确认帧则 发送下一帧;若收到拒绝帧或者在超时时间内未收到确 认帧或拒绝帧,则重发当前帧,因等待超时而重发的帧 要设置超时指示位。当连续收到拒绝帧三次或连续超 时重发三次,则认为对端不可达,取消当前帧的发送,上 报错误给应用层。
在链路帧发送前,应使用CRCl6算法对封装数据 进行校验,校验多项式为z¨+z12+z5+1,校验值写入 校验字段中;在链路帧接收后,先对其进行校验,如果检 验成功再进行数据解封装处理,如果校验失败则按照下 述重发机制进行重发。 3.4错误检测与重发机制
综合考虑协议实现的简单性和数据收发的可靠性, 决定采用停等协议进行数据收发,过程如下:
Keywords:serial communication;protocol design;embedded Linux system;application layer;link layer
嵌入式系统之间的通信通常有两种方式:并行通信 和串行通信。并行方式传输数据速度快,但占用的通信 线多,传输数据的可靠性随距离的增加而下降,只适用 于近距离的数据传送。在远距离数据通信中,一般采用 串行通信方式口],它具有占用通信线少、成本低等优点。 目前RS 232串口是PC机与通信工业中应用最广泛的 一种串行接口,它应用于点对点通信模式,实际使用中 多采用最简单的三线方式连接,即两端设备的串口只连 接收、发、地三根线,即可实现简单的全双工通信o]。通 信协议是两端设备数据交换的语言,是通信可靠性的保 证,在保证功能的前提下,通信协议应该力求简洁。
数据封装即是以一定格式把拆分后的应用层数据 加上功能指示、数据长度等字段,以便对方收到后知道 如何处理。数据封装格式及功能指示字段含义如表1, 表2所示。
表1数据封装格式
裹2功能指示字段含义
万方数据
3.3帧发送与接收
链路层以帧为单位进行数据收发,一种普遍的界定 帧起始与结束的方法是:在待发送数据的头部和尾部加 入特殊的起始码和结束码∞4],如果在数据中出现了这 个码型,就必须在数据发送前进行转义处理,把它转换 成其他码型,否则将导致帧定位错误,数据通信失败。 很多协议实现者为求实现简单没有进行这种转义,存在 通信失败的风险,其实在点对点协议(PPP协议)中的 描述了一种转义处理方法哺],经简化后,实现起来也并 不复杂,描述如下:
[4]陈佳男,李欣,张海燕.基于ARM+Linux的异步串行通信 设计[J].微计算机信息,2009,25(8):139—140.
[5]SIMPSON W.RFCl661:the point-to-point protocol(PPP) [R].USA:Internet Society,1994.
[6]孙琼.嵌入式Linux应用开发详解[M].北京:人民邮电出版 社,2007.
.CHEN Le.TANG Bo,LU Li (School of Electrical Science&Eng洒ee“ngt National University of Defense&TechnoIogy,Changsha 410073,China)
Abstract:Because there is a long-distance between communication equipments,serial communication mode is widely used in embedded environment.Many serial communication protocols are applied only to the application system environment at the time of the protocol design since they do not have universality,and some of them may get risk of communication failure.By analyzing the demands of communication between equipments,a layered serial communication protocol was designed.The pro— tocol is simple and reliable,and can be used in many kinds of system environments.The protocol is running well in a practical application system under the environment of embedded Linux system.