串口编程之前奏篇
------------------------------------------------------------------------
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下的串口编程
分享到:
相关推荐
自己整理的UART串口编程详解教程,希望对大家有用
UART串口通信案例一,如何将一个字符串发送给上位机
1、C8051f的UART0是异步、全双工串口。其波特率发生器规定由定时器1定时器提供。可配置为8位UART或9位UART(多机通讯第九位用于片选作用)。SYSCLK=24.5MHZ(我的板子采用内部晶振频率作为系统时钟) BAUDRATE=...
cc2530 uart0串口初始化和接收,cc2530 uart0串口初始化和接收,cc2530 uart0串口初始化和接收
基于ZYNQ7020的UART串口程序,管脚使用MIO14,MIO15,软件版本VIVADO2018.2,包含FPGA 和 PS部分的串口程序,发送数据到上位机
UART串口通信实验报告.docx
控制STM32 适合自学 UART 串口
UART 串口编程 C51 C语言,绝对正确, 效率高,已验证,欢迎下载
UART 232 串口调试软件工,可以灵活选择COM端口,配置属性参数,实时抓取Log。
UART串口通信程序
1 基于Linux-3.14.43内核配置与编译 3 1.1 适用性说明 3 1.2 Linux内核配置及编译 3 1.3 从UART0串口和USB启动Linux-3.14.43系统 5 2 基于Linux-4.4.41内核配置与...2.3 从UART0串口和USB启动Linux-4.4.41系统 15
采用MFC的控件“Micsoft Communications Control”来编写的串口调试工具源码,简捷而稳定。
uart串口通信,包括uart_8bit数据收发和uart_32bit数据收发。可调比特率,板级验证正确
8_imx6ull_pro之_UART串口编程.pdf
海思3531A芯片有四个串口uart单元,uart0是调试串口,默认打开。现添加uart1、uart2、uart3,测试验证成功。
stm32f407UART4串口4标准例程,串口4很多例程里都没有,这里给大家分享一下
ESP32的UART串口通信(基于micropython)中所展示的所有代码
介绍UART多串口扩展器SP2337,该器件可将现有的单串口单片机扩展为全新的具有3个串口的单片机。给出该器件的性能、引脚功能及应用,并给出将AT89C51单片机的单串口扩展为三个UART串口的硬件电路及相应程序。
Uart异步串口通信verilog源码
利用python完成uart串口通信,可以采集数据并且用matplotlib进行绘图。