串口编程以前奏篇算法
------------------------------------------------------------------------编程
Author :tiger-john
WebSite :blog.csdn.net/tigerjbapp
Email :jibo.tiger@gmail.comspa
Update-Time : 2011年1月30日星期日.net
Tiger声明:本人鄙视直接复制本人文章而不加出处的我的或团体,但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人联系或留言给我。3Q设计
--------------------------------------------------------------------------调试
众所周知嵌入式系统之间采用通讯方式交换数据,因为各种CPU均集成了UART部件。因此串行通讯是一种最基本的通讯手段。所以,咱们也对它进行深刻的了解orm
本文章针对串口编程时如何设计串口通讯协议,以及对RS232接口进行了说明。为下一步进行串口编程进行热身htm
1. 通讯协议设计blog
在进行通讯时,每次须要传送的信息通常超过1字节。为此,通讯双方必须约定通讯数据的排列格式,即通讯协议。一般把一次通讯过程的所有内容称为一个“通讯帧”。通讯协议设计就是帧结构设计。
在一帧内容中,一般包括如下部分。
1> 起始码:由一个或若干个包含特定内容的字节,表示一个通讯帧的开始。起始码的内容必须与通讯数据内容有明显区别(不能在通讯数据里出现与起始码相同的内容)
注:
当通讯帧的总长度比较短,信道质量比较高时,为了提升效率,能够不设置起始码。
2> 地址码:在主从结构的多机组网通讯系统中,用来指明分机号。
l 当分机总数在255台以内时,地址码为1字节。能够定义一个特殊的地址码做为广播地址,表明全部的分机。
l 在多主多从(无主从)结构的多机组网通讯系统中,地址码包含收发双方的地址。
注:
若是是两台设备之间进行点对点的通讯,帧结构中就步须要包含地址码。
3> 长度码:在数据长度不固定的通讯场合(变长帧),表示本帧数据内容的字节数。当长度确定不超过255字节时,长度码用1字节表示。
注:
若是每次通讯数据内容的长度为双方约定的固定值(定长帧),帧结构中就不须要包含长度码。
4> 数据段:通讯的实质内容。
5> 校验码:因为通讯信道存在干扰,为了判断接收的内容是否受到干扰,须要加入效验码。
效验码算法能够采用
l 简单的异或校验码。
l 也能够像HEX文件那样采用算术加法校验。
l 采用功能极强的CRC校验。
注:当通讯环境很是好时(如室内设备之间的通讯),帧结构中就不须要包含校验码。
2. RS232标准
1> 简介:
l RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通信的标准。它的全名是“数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。
l 该标准规定采用一个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 振铃提示
Tiger-John说明:
1在UART0串口编程中咱们只用到了引脚2,引脚3,和引脚5.
2. 目前的串口线有两中链接方法:
l 平行线:2接2,3接3(即发对发,接对接)
l 交叉线:2接3,3接2(即发对接,接对发)
各个外设所用的链接方法都不同。所以,调试程序时,必定要注意你所用的是那中串口线。若是串口线选错的话,它们之间是不通讯的