UART0串口编程(一):通信协议设计;RS232标准
2018-01-12 19:08
477 查看
UART0串口编程(一)
嵌入式系统之间采用通信方式交换数据,串行通信是一种最基本的通信手段。现在由于各类CPU均集成了UART部件。本节对串口编程时如何设计串口通信协议,以及对RS232接口进行了说明。
1. 通信协议设计
在进行通信时,每次需要传送的信息一般超过1字节。为此,通信双方必须约定通信数据的排列格式,即通信协议。通常把一次通信过程的全部内容称为一个“通信帧”。通信协议设计就是帧结构设计。在一帧内容中,通常包括以下部分。
(1)起始码:由一个或若干个包含特定内容的字节,表示一个通信帧的开始。起始码的内容必须与通信数据内容有明显区别(不能在通信数据里出现与起始码相同的内容)。当通信帧的总长度比较短,信道质量比较高时,为了提高效率,可以不设置起始码。
(2)地址码:在主从结构的多机组网通信系统中,用来指明分机号。
当分机总数在255台之内时,地址码为1字节。可以定义一个特殊的地址码作为广播地址,代表所有的分机。在多主多从(无主从)结构的多机组网通信系统中,地址码包含收发双方的地址。如果是两台设备之间进行点对点的通信,帧结构中就步需要包含地址码。
(3)长度码:在数据长度不固定的通信场合(变长帧),表示本帧数据内容的字节数。当长度肯定不超过255字节时,长度码用1字节表示。如果每次通信数据内容的长度为双方约定的固定值(定长帧),帧结构中就不需要包含长度码。
(4)数据段:通信的实质内容。
(5)校验码:由于通信信道存在干扰,为了判断接收的内容是否受到干扰,需要加入效验码。
效验码算法可以采用
1)简单的异或校验码。
2)也可以像HEX文件那样采用算术加法校验。
3)采用功能极强的CRC校验。
注:当通信环境非常好时(如室内设备之间的通信),帧结构中就不需要包含校验码。
2. RS232标准
(1)简介:
RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。随着设备的不断改进,出现了代替DB25的DB9接口,现在都把RS232接口叫做DB9
注:我们后面所用的都是RS232的DB9接口
(2)接口定义如下图:
引脚1:DCD 载波检测
引脚2:RXD 接收数据
引脚3:TXD 发送数据
引脚4:DTR 数据终端准备好
引脚5:SG 信号地
引脚6:DSR 数据准备好
引脚7:RTS 请求发送
引脚8: CTS 清除发送
引脚9: RI 振铃提示
(3)在UART0串口编程中我们只用到了引脚2,引脚3,和引脚5.
(4)目前的串口线有两中连接方法:
平行线:2接2,3接3(即发对发,接对接)
交叉线:2接3,3接2(即发对接,接对发)
各个外设所用的连接方法都不一样。因此,调试程序时,一定要注意你所用的是那中串口线。如果串口线选错的话,它们之间是不通信的。
嵌入式系统之间采用通信方式交换数据,串行通信是一种最基本的通信手段。现在由于各类CPU均集成了UART部件。本节对串口编程时如何设计串口通信协议,以及对RS232接口进行了说明。
1. 通信协议设计
在进行通信时,每次需要传送的信息一般超过1字节。为此,通信双方必须约定通信数据的排列格式,即通信协议。通常把一次通信过程的全部内容称为一个“通信帧”。通信协议设计就是帧结构设计。在一帧内容中,通常包括以下部分。
(1)起始码:由一个或若干个包含特定内容的字节,表示一个通信帧的开始。起始码的内容必须与通信数据内容有明显区别(不能在通信数据里出现与起始码相同的内容)。当通信帧的总长度比较短,信道质量比较高时,为了提高效率,可以不设置起始码。
(2)地址码:在主从结构的多机组网通信系统中,用来指明分机号。
当分机总数在255台之内时,地址码为1字节。可以定义一个特殊的地址码作为广播地址,代表所有的分机。在多主多从(无主从)结构的多机组网通信系统中,地址码包含收发双方的地址。如果是两台设备之间进行点对点的通信,帧结构中就步需要包含地址码。
(3)长度码:在数据长度不固定的通信场合(变长帧),表示本帧数据内容的字节数。当长度肯定不超过255字节时,长度码用1字节表示。如果每次通信数据内容的长度为双方约定的固定值(定长帧),帧结构中就不需要包含长度码。
(4)数据段:通信的实质内容。
(5)校验码:由于通信信道存在干扰,为了判断接收的内容是否受到干扰,需要加入效验码。
效验码算法可以采用
1)简单的异或校验码。
2)也可以像HEX文件那样采用算术加法校验。
3)采用功能极强的CRC校验。
注:当通信环境非常好时(如室内设备之间的通信),帧结构中就不需要包含校验码。
2. RS232标准
(1)简介:
RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。随着设备的不断改进,出现了代替DB25的DB9接口,现在都把RS232接口叫做DB9
注:我们后面所用的都是RS232的DB9接口
(2)接口定义如下图:
引脚1:DCD 载波检测
引脚2:RXD 接收数据
引脚3:TXD 发送数据
引脚4:DTR 数据终端准备好
引脚5:SG 信号地
引脚6:DSR 数据准备好
引脚7:RTS 请求发送
引脚8: CTS 清除发送
引脚9: RI 振铃提示
(3)在UART0串口编程中我们只用到了引脚2,引脚3,和引脚5.
(4)目前的串口线有两中连接方法:
平行线:2接2,3接3(即发对发,接对接)
交叉线:2接3,3接2(即发对接,接对发)
各个外设所用的连接方法都不一样。因此,调试程序时,一定要注意你所用的是那中串口线。如果串口线选错的话,它们之间是不通信的。
相关文章推荐
- ARM:UART串口异步通信驱动编程
- socket编程里,如何设计自定义通信协议的包头?
- socket编程里,如何设计自定义通信协议的包头?
- 基于STC串口通信和VC6.0MFC编程的电子琴设计
- 【C#串口编程计划】通信协议解析 -- byte[]与常用类型的转换
- UART 通信逻辑协议设计(2)
- UART 通信逻辑协议设计(3)
- FPGA基础设计(三):UART串口通信
- C#串口介绍以及简单串口通信程序设计实现
- Verilog之串口(UART)通信
- 赵雅智_java网络编程(1)网络体系结构及通信协议
- 串口通信模块2:串口通信编程基础(打开、配置)
- 手机蓝牙通信设计(三) RFCOMM协议客户端+语音传送与接收
- Linux串口(serial、uart)驱动程序设计
- 使用Visual C++进行串口通信编程[一]
- S3C2440 Mini 2440 DMA方式实现Uart(串口)通信
- 51与PC通信协议设计及实现(一):要求及通信协议的初步设计
- Android 串口通信编程及串口协议分析
- Socket通用TCP通信协议设计及实现(防止粘包,可移植,可靠)
- # 2017-2018-1 20155324 实验五 通信协议设计