OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4262|回复: 2

串口摘录 详解 。。。代码分析还没弄

[复制链接]

40

主题

144

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2013-7-26
在线时间
72 小时
发表于 2015-7-18 22:15:07 | 显示全部楼层 |阅读模式

通信简介

通信方式分为两种:

串行(字符数据按位传输,区别高低位,控制时序稍复杂-

并行(数据位一次传输完成,传输中需要其他控制信号线完成,速度快)

通信协议:

包含数据格式,同步方式,传输速率,校验方式等。

串行通信同步方式

同步(发送接收方使用同一套时钟)

同步通信时要建立发送方时钟对接收方时钟的直接控制。

外同步:有一单独的时钟信号

内同步:数据与时钟信号一同发送

面向字符同步(IBM 的二进制同步规程 BSC

面向位同步(HDLC 和 IBM 的同步数据链路控制规程 SDLC

异步(发送接收使用各自的时钟)

异步通信的特点是不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个 字符要附加 2位用于起止位,各帧之间还有间隔,因此传输效率不高。

通信方向

单工,半双工,全工。

校验方式

奇偶校验

奇校验 包含校验位,累计的1为偶数个

偶校验 包含校验位,累计的1为奇数个

CRC校验

累加和校验

传输速率(波特率与比特率)

比特率是每秒钟传输二进制代码的位数, 单位是: 位/秒( bps)。 如每秒钟传送 240 个字符,而每个字符格式包含10 (1 个起始位、 个停止位、 个数据位),这时的比特率为10 位×240 /秒 = 2 400 bps    bit/s

参考文档 关于波特率与比特率的概念

传输速率应该用比特率。

比特率 =  波特率 X  单个调制对应的二进制位数。


接口通信

RS232(全双工)

机械特性:阳头为计算机端

电气特性:

RS-422A (全双工)

RS232区别是收发双方的信号地不再共用。 另外, 每个方向用于传输数据的是

两条平衡导线。

所谓“ 平衡”, 是指输出驱动器为双端平衡驱动器。如果其中一条线为逻辑“ 1” 状态,另一条线就为逻辑“ 0”, 比采用单端不平衡驱动对电压的放大倍数大一倍。 驱动器输出允许范围是 ±2~±6V

差分电路能从地线干扰中拾取有效信号,差分接收器可以分辨 200mV 以上的电位差。 若传输过程中混入了干扰和噪声,由于差分放大器的作用,可使干扰和噪声相互抵消。 因此可以避免或大大减弱地线干扰和电磁干扰的影响。

RS-485 (半双工)

点对多(最多32)。差模信号。

抗干扰以及电阻匹配

参阅 WIZ_ RS232 RS485 电气特性与抗干扰设计


8051串口通信

UART(Universal Asynchronous Receiver/Transmitter)通用异步收发器

工作方式

方式0,   8位移位寄存器,同步通信,一般配合移位器件或其他器件使用。

方式1,   8位异步全双工,可变比特率。

方式2,   9位异步,全双工。固定比特率。可使用奇偶校验或多机通信。

方式3,   9位异步全双工,可变波特率。可使用奇偶校验或多机通信。

内部实现简单机制:参见文档


软件设计

数据(一字节)传输低位在前,高位在后。

串口接收的时候,接收器以所选择波特率的 16 倍速率(波特率因子)采样 RXD引脚电平。

在发送数据时,发送器在发送时钟的下降沿将移位寄存器的数据串行移位输出;在接收数据时,接收器在接收时钟的上升沿对接收数据采样,进行数据位检测,

数据格式

1)起始位:起始位必须是持续一个比特时间的逻辑0电平,标志传输一个字符的开始,接收方可用起始位使自己的接收时钟与发送方的数据同步。

2)数据位:数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定,一般可以是5位、7位或8位,标准的ASCII码是0~1277位),扩展的ASCII码是0~2558位)。传输数据时先传送字符的低位,后传送字符的高位。

3)奇偶校验位:奇偶校验位仅占一位,用于进行奇校验或偶校验,奇偶检验位不是必须有的。如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位;如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。由此可见,奇偶校验位仅是对数据进行简单的置逻辑高位或逻辑低位,不会对数据进行实质的判断,这样做的好处是接收设备能够知道一个位的状态,有可能判断是否有噪声干扰了通信以及传输的数据是否同步。

4)停止位:停止位可以是是1位、1.5位或2位,可以由软件设定。它一定是逻辑1电平,标志着传输一个字符的结束。

5)空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来填充。

异步通信的数据发送过程

清楚了异步通信的数据格式之后,就可以按照指定的数据格式发送数据了,发送数据的具体步骤如下:

1)初始化后或者无需发送数据,发送端输出逻辑1,可以有任意数量的空闲位。

2)当需要发送数据时,发送端首先输出逻辑0,作为起始位。

3)接着就可以开始输出数据位了,发送端首先输出数据的最低位D0,然后是D1 最后是数据的最高位。

4)如果设有奇偶检验位,发送端输出检验位。

5)最后,发送端输出停止位(逻辑1)。

6)如果没有信息需要发送,发送端输出逻辑1(空闲位),如果有信息需要发送,则 转入步骤(2)。

异步通信的数据接收过程

在异步通信中,接收端以接收时钟和波特率因子决定每一位的时间长度。下面以波特率因子等于16(接收时钟每16个时钟周期使接收移位寄存器移位一次)为例来说明。

1)开始通信,信号线为空闲(逻辑1),当检测到由10的跳变时,开始对接收时  钟计数。

2)当计到8个时钟的时候,对输入信号进行检测,若仍然为低电平,则确认这是起  始位,而不是干扰信号。

3)接收端检测到起始位后,隔16个接收时钟对输入信号检测一次,把对应的值作为  D0位数据。

4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据,直到全  部数据位都输入。

5)检验奇偶检验位。

6)接收到规定的数据位个数和校验位之后,通信接口电路希望收到停止位(逻辑1), 若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志;若没 有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中取出 送至数据输入寄存器,若校验错,在状态寄存器中置“奇偶错”标志。

7)本帧信息全部接收完,把线路上出现的高电平作为空闲位。

8)当信号再次变为低时,开始进入下一帧的检测。

几个概念

1)发送时钟:发送数据时,首先将要发送的数据送入移位寄存器,然后在发送时钟  的控制下,将该并行数据逐位移位输出。

2)接收时钟:在接收串行数据时,接收时钟的上升沿对接收数据采样,进行数据位  检测,并将其移入接收器的移位寄存器中,最后组成并行数据输出。

3波特率因子:波特率因子是指发送或接收1个数据位所需要的时钟脉冲个数。在 同步传送方式,必须取n1,即接收/发送时钟的频率等于收/发波特率。在异步传 送方式,n1,16,64,即可以选择接收/发送时钟频率是波特率的1,16,64 倍。因 可由要求的传送波特率及所选择的倍数来确定接收/发送时钟的频率


波特率误差分析

理论上一个字节发送或接收中BIT累加误差不能超过50%,传送9位数据格式+开始,停止位总共是11位。11*4%=48%约等于50%,实际上一般2%以内可以比较可靠通信(考虑对方误差)。

由于是异步通信,异步的波特率误差不会产生累积效应的。所以只要能保证一个字符的传送没有问题即可,反正都是先起始位,再数据位,最后是停止位。

串口波特率高输出容易误码

单片机以波特率16倍的速度对串口信号采样 当发现启始信号以后与外部同步 每个信号位采样16次 其中选择中间三位(789)的值做此传输位值 这三个位的值如果不同 也要32位一致的电平值为信号值 

采样3次,那么每一位中间t/2 已及前后各一次吧。那么当原本中间的这次采样偏差超过t/2 就必然有2次采样落到相邻的位上。落到相邻的2次采样结果必然一样

比如 A发 , B收 。 假设发送一位的时间是t .

B在接收时要不断采样,发现起始位后将试图以起始位的中点时刻开始每隔t时间取值一次。

假如AB两者时钟精度一致,那么B取值时刻都在数据位的中点上,也就是每一位的t/2处。当AB之间时钟有相对误差时,串口帧最后一位停止位时,B的采样时刻偏离这一位中点将达到最大值。但只要AB之间最后累积偏差值 < t/2 时, B就不会采样到相邻的位,也就是不会出现错误。所以t值越大宽容度越高,也就是波特率越小越不容易出错

当使用软件模拟的时候,需要注意。

误差来源有4

串口时钟启动,停止的滞后。 T1

时钟发生器产生时钟的本身误差(1个机器周期)T2

晶振误差 T3

波特率发生器/定时器计算误差 T4


软件模拟串口通信(参考波特率因子)

通信笔记@Lyt.pdf

948.69 KB, 下载次数: 267

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

40

主题

144

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2013-7-26
在线时间
72 小时
 楼主| 发表于 2015-7-18 22:18:50 | 显示全部楼层
图片没复制进来,囧

都是网上摘录的,然后集中在一起。 个人觉得讲的比较详细啦。

关于波特率与比特率的概念.doc

15.5 KB, 下载次数: 171

51单片机串行口的工作模式及时序图.doc

370 KB, 下载次数: 253

串口通信详解.pdf

6.29 MB, 下载次数: 155

串口通讯内核实现机制.pdf

667.68 KB, 下载次数: 243

RS232 RS485 电气特性与抗干扰设计.mht

169.29 KB, 下载次数: 58

回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-18 23:40:30 | 显示全部楼层
串口,楼主辛苦,谢谢分享
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表