Linux串口通讯
© 2005 博创科技
博创科技 嵌入互动
串行通信的分类
根据信息的传送方向 单工,信息只能单向传送 半双工,信息能双向传送但不能同时双向传送 全双工,信息能够同时双向传送 根据同步方式 同步通信
分面向字符、面向比特以及面向字节计数三种
异步通信
© 2005 博创科技
博创科技 嵌入互动
博创科技
嵌入互动
Linux开发基础
北
京
博
创
兴
业
科
技
有
限
公
司
© 2005 博创科技
BEIJNG
UNIVERSAL
PIONEERING
TECHNOLOGY Co . , LTD
博创科技 嵌入互动
教学大纲
Linux系统入门基础 Linux程序设计基础—C环境 Linux Shell编程 任务管理、同步与通信 嵌入式Linux的串口通信
© 2005 博创科技
博创科技 嵌入互动
软件流控制
一般通过XON/XOFF来实现软件流控制 当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端 发出XOFF字符(十进制的19或Control-S),发送端收到XOFF字符 后就立即停止发送数据; 当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端 发出XON字符(十进制的17或Control-Q),发送端收到XON字符后 就立即开始发送数据。 一般可以从设备配套源程序中找到发送的是什么字符。
© 2005 博创科技
博创科技 嵌入互动
异步通信的接收过程(2/2)
(3)接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的 值作为D0位数据。若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0 (4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。… 直到全部数据位都输入 (5)检测校验位P(如果有的话)。 (6)接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑 1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。 若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器 中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。 (7)本幀信息全部接收完,把线路上出现的高电平作为空闲位。 (8)当信号再次变为低时,开始进入下一幀的检测
© 2005 博创科技
博创科技 嵌入互动
硬件流控制
RTS/CTS(请求发送/清除发送)流控制 数据终端设备(如计算机)使用RTS来起始调制解调器或其它数据通 讯设备的数据流 数据通讯设备(如调制解调器)则用CTS来起动和暂停来自计算机的 数据流。 DTR/DSR(数据终端就绪/数据设置就绪)流控制
© 2005 博创科技
博创科技 嵌入互动
串行通信物理接口的基本任务(2/3)
控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率 进行选择和控制的能力。 进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位 或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码, 确定是否发生传送错误。
发送端以“发送时钟”和“波特率因子”决定一位的时间长度。 当初始化后,或者没有信息需要发送时,发送端输出逻辑1,即空闲位,空 闲位可以有任意数量。 当需要发送时,发送端首先输出逻辑0,作为起始位 接着,发送端首先发送D0位,直到各数据位发送完 如果需要的话,发送端输出校验位 最后,发送端输出停止位(逻辑1) 如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任 意数量。如果还有信息需要发送,转入第(2)步
© 2005 博创科技
博创科技 嵌入互动
软/硬流控制的关系
由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用 软件流控制。 若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作, 这是软件流控制的缺陷,而硬件流控制不会有这个问题。
© 2005 博创科技
博创科技 嵌入互动
流控制在串行通讯中的作用 “流” 是指数据流。数据在两个串口之间传输时,常常会出现丢失数据的现 象,或者两台计算机的处理速度不同,如台式机与单片机之间通讯,接收端 数据缓冲区已满,则此时继续发送来的数据就会丢失 流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收” 的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。 因此流控制可以防止数据的丢失。 PC机中常用的两种流控制 硬件流控制(包括RTS/CTS、DTR/CTS等) 软件流控制XON/XOFF(继续/停止)
© 2005 博创科技
博创头部(即起始位)进行一次重新定位,因此发送端可以 在字符之间插入不等长的空闲位,不影响接收端的接收。 发送端的发送时钟和接收端的接收时钟,其频率允许有一定差异,当频率差异在 一定范围内,不会引起接收端检测错位,能够正确接收。并且这种频率差异不会 因多个字符的连续接收而造成误差累计(因为每个字符的开始(起始位处)接收 方均重新定位)。只有当发送时钟和接收时钟频率差异太大,引起接收端采样错 位,才造成接收错误。 起始位、校验位、停止位、空闲位的信号,由“发送移位寄存器”自动插入。在 接收方,“接收移位寄存器”接收到一帧完整信息(起始、数据、校验、停止) 后,仅把数据的各位送至“数据输入寄存器”,即CPU从“数据输入寄存器”中 读得的信息,只是有效数字,不包含起始位、校验位、停止位信息
© 2005 博创科技
博创科技 嵌入互动
同步通信方式
同步通信时,许多字符组成一个信息组(通常称为帧) 在每组信息的开始要加上同步字符 在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙 一个字符可以对应5~8位。对同一个传输过程,所有字符对应同样的 数位,比如说n位。 传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一 个字符,接收端则在一个时间片中接收一个字符
© 2005 博创科技
博创科技 嵌入互动
© 2005 博创科技
博创科技 嵌入互动
异步通信方式
起止式异步通信的特点是: 一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个 字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有 固定的时间间隔要求。 每一个字符的前面都有一位起始位(低电平,逻辑值),字符本身由 5-7位数据位组成,接着字符后面是一位校验位(也可以没有校验 位),最后是一位或一位半或二位停止位,停止位后面是不定长的空 闲位。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起 始位开始处一定有一个下跳沿。
© 2005 博创科技
博创科技 嵌入互动
波特率
波特率 (bps) 110 300 1200 2400 4800 1 号电缆传输距离(英尺) 2 号电缆传输距离(英尺)
5000 5000 3000 1000 1000
3000 3000 3000 500 250
9600
250
250
© 2005 博创科技
© 2005 博创科技
博创科技 嵌入互动
正逻辑或负逻辑
正逻辑 负逻辑 逻辑0 低电平 高电平 逻辑1 高电平 低电平
© 2005 博创科技
博创科技 嵌入互动
异步通信的信息格式
起始位 数据位 校验位 停止位 空闲位 逻辑0 逻辑0或1 逻辑0或1 逻辑1 逻辑1 1位 5位、6位、7位、8位 1位或无 1位,1.5位或2位 任意数量
© 2005 博创科技
博创科技 嵌入互动
串行通信接口电路的组成
串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA与TTL电平 转换器以及地址译码电路组成 串行接口芯片主要分为USAR和UART:(Universal Asynchronous Receiver and Transmitter)
奇偶校验
奇校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为奇数, 如: 1 0110,0101 0 0110,0001 偶校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数, 如: 1 0100,0101 0 0100,0001 奇偶校验能够检测出信息传输过程中的部分误码(奇数误码能检出,偶数误码不 能检出),同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简 单,仍得到了广泛使用
© 2005 博创科技
第5讲 嵌入式Linux下的串口通信
博创科技 嵌入互动
1
串行I/O的基本概念和分类
2
串行接口的物理接口标准
3
串行接口的软件协议
RS-232C串口规范
4 5
北 京 博 创 兴 业 科 技
编写串口通信程序
有 限 公 司
© 2005 博创科技
TECHNOLOGY Co . , LTD
BEIJNG
UNIVERSAL
PIONEERING
博创科技 嵌入互动
5.1 串行I/O的基本概念
串行通讯:一条信息的各位数据被逐位按顺序传送的通讯方式称 为串行通讯。 串行通讯的特点是: 数据位传送,传按位顺序进行,最少只需一根传输线即可完 成 成本低但送速度慢。串行通讯的距离可以从几米到几千米。
© 2005 博创科技
博创科技 嵌入互动
异步通信的接收过程(1/2)
接收端以“接收时钟”和“波特率因子”决定一位的时间长度。 下面以波特率因子等于16(接收时钟每16个时钟周期,使接收移位寄存器移位一次)、正逻 辑为例说明异步通信的接收过程 (1)开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对“接收 时钟”计数。 (2)当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始 位”B,而不是干扰信号。