串口编程之前奏篇

------------------------------------------------------------------------

Author   :tiger-john
WebSite  :blog.csdn.net/tigerjb

Email    :jibo.tiger@gmail.com

Update-Time   : 2011年1月30日星期日

Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体,但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人联系或留言给我。3Q

--------------------------------------------------------------------------

众所周知嵌入式系统之间采用通信方式交换数据,由于各类CPU均集成了UART部件。所以串行通信是一种最基本的通信手段。因此,我们也对它进行深入的了解

本文章针对串口编程时如何设计串口通信协议,以及对RS232接口进行了说明。为下一步进行串口编程进行热身

1.    通信协议设计

在进行通信时,每次需要传送的信息一般超过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(即发对接,接对发)

各个外设所用的连接方法都不一样。因此,调试程序时,一定要注意你所用的是那中串口线。如果串口线选错的话,它们之间是不通信的

串口编程之前奏篇

UART0串口编程系列(一)裸机下的轮训方式的串口编程

UART0串口编程系列(二)裸机下的中断方式的串口编程

UART0串口编程系列(三)UC/OS下的串口编程注意的问题

UART0串口编程系列(四)UC/OS下的串口发送任务编程

UART0串口编程系列(五) UC/OS下的串口接收任务编程

UART0串口编程系列(六)Linux下串口编程要知道的那些事

UART0串口编程系列(七)Linux下的串口编程

转自:http://blog.csdn.net/tigerjibo/article/details/6153810

UART0串口编程系列之前奏篇相关推荐

  1. UART0串口编程系列(四)

    2019独角兽企业重金招聘Python工程师标准>>> 串口编程(UART0)之UC/OS(一) ------------------------------------------ ...

  2. UART0串口编程(五):串口编程(UART0)之UC/OS(一)UC/OS下的串口发送任务编程

    UART0串口编程(五) 串口编程(UART0)之UC/OS(一) 一.在UC/OS中设计串口程序所要考虑的问题 1.     串口通信数据以帧为单位进行处理,如果需要接收大量数据,则帧缓冲区规模必然 ...

  3. UART0串口编程(三):中断方式的串口编程;用中断编写发送函数

    UART0串口编程(三) 一:中断方式的串口编程 1.用中断方式编写串口程序由那几部分组成 2.硬件上的支持 1>UART0 发送FIFO缓冲区 A.UART0含有1个16字节的发送FIFO缓冲 ...

  4. 嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解

    在上一篇文章中,我们介绍了串口的一些基本知识.串口配置接口 termios结构体的概念,串口的配置参数有n多个,这里面不用都背下来,什么时候使用,翻看手册即可,但是有两个 参数是一定要理解的,就是VM ...

  5. UART0串口编程(一):通信协议设计;RS232标准

    UART0串口编程(一) 嵌入式系统之间采用通信方式交换数据,串行通信是一种最基本的通信手段.现在由于各类CPU均集成了UART部件.本节对串口编程时如何设计串口通信协议,以及对RS232接口进行了说 ...

  6. 嵌入式Linux 串口编程系列3——通过VTIM、VMIN、select实现串口不定长数据接收功能

    上一篇文章中,我们详细分析了VTIM和VMIN的功能, <嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解> 也明白了这两个参数设计的初衷和使用方法,接下来 ...

  7. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

    我假设读者已经了解了c#的语法,本文是针对刚打算解除串口编程的朋友阅读的,作为串口编程的入门范例,也是我这个系列的基础. 我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用20 ...

  8. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyazhe/archive/2010/05/17/5598945.aspx 我假设读者已经了解了c#的语法,本文是针 ...

  9. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。 ——兔子党逍遥原创,转来分享学习

    我假设读者已经了解了c#的语法,本文是针对刚打算解除串口编程的朋友阅读的,作为串口编程的入门范例,也是我这个系列的基础. 我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用20 ...

  10. UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机

    UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...

最新文章

  1. JavaScript与C# Windows应用程序交互
  2. 使用 pg_dump 迁移 postgresql
  3. IDEA中查看SVN项目历史版本更新信息
  4. Linux磁盘管理与文件系统(实验详解,一看就懂)
  5. how to consume a webservice via ABAP proxy
  6. 非正常关机导致无法启动MYSQL提示丢失mysql.sock的解决办法
  7. performSelector:withObject:afterDelay: 精要概览(持续更新)
  8. 郴州大数据产业招商会在深举行,中琛源科技签约智慧水务项目
  9. 地区的省市区联动数据样例
  10. 《遥感原理与应用》总结—遥感平台
  11. 从零开始搭建自己的个人博客网站
  12. html公用页脚使用代码,页脚在HTML
  13. s5pv210 linux,S5PV210-零基础体验uboot
  14. 现在的学生能把老师活活气死
  15. latex如何绘制标准三线表 lllegal charactor in array arg 如何合并单元格?
  16. 王乐畅草书签名怎么写
  17. win10 安装并配置docker
  18. html中的分页条怎么写,包含HTML标签的文本分页处理
  19. [Java 一道简单的排序题]
  20. 阿里云服务器托管-云服务器托管介绍

热门文章

  1. 基于计算机显卡的研究
  2. 【生物电信号】基于matlab GUI生物电信号仿真【含Matlab源码 684期】
  3. CRAY超级计算机发展,Cray推出专为企业设计的Shasta超级计算机
  4. android课程设计的需求分析,安卓课程设计心得体会.doc
  5. 美国计算机访学,计算机应用专业4天喜获美国加州大学洛杉矶分校访问学者职位...
  6. 如何设置打开图片的默认方式
  7. 手机版支付宝html页面,支付宝手机网页支付代码
  8. 网站域名假墙处理方法 内含cloudflare API自动更换IP的php脚本
  9. Linux移植Windows摄像头驱动,Arm-Linux摄像头驱动程序的移植
  10. maker win10有movie_手把手解决win10系统出现windows MovieMaker故障的方法