单片机串行通信全解析

  • A+
所属分类:嵌入式开发

1.什么是串行通信?

串行通信(英语:Serial communication)是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。与之对应的是并行通信,它在串行端口上通过一次同时传输若干位元数据的方式进行通信。

简言之:串行通讯就是排成一队走,并行就是排成一列走,如下图

单片机串行通信全解析
2.同步串行通信(Synchronous serial communication)和异步串行通信(Asynchronous serial communication)

1)发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(例如在时钟信号的上升沿的时候,将数据发送出去)发送数据,接收端根据发送端提供的时钟信号,以及大家的约定,接收数据。这就是常说的同步串行通信(Synchronous serial communication),I2C、SPI等有时钟信号的协议,都属于这种通信方式。

2)发送端在数据发送之前和之后,通过特定形式的信号(例如START信号和STOP信号),告诉接收端,可以开始(或者停止)接收数据了。与此同时,收发两方会约定一个数据发送的速度(就是大名鼎鼎的波特率),发送端在发送START信号之后,就按照固定的节奏发送串行数据,与此同时,接收端在收到START信号之后,也按照固定的节奏接收串行数据。这就是常说的异步串行通信(Asynchronous serial communication)。

3.单片机上常用的串行通讯接口

•  SPI:高速同步串行口。3~4线接口,收发独立、可同步进行串行外围设备接口,是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。SPI通常有SCK时钟,STB片选,DATA数据信号三个信号。 I2C通常有 SDA数据和SCL时钟两个信号。SPI总线真正实现了全双工数据传输,SPI 有3线跟4线两种,4线的话,就是多了一条叫SDC的线,用来告知从设备现在传输的是数据还是指令。这个接口较快,可以传输较连续的数据。SPI的速度要大于IIC,一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。

•  UART:通用异步串行口,一般我们说的单片机上的“串口”大多是特指UART。可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。在多机(单片机与单片机之间)通信上面用的最多。

•  IIC:一种串行传输方式,三线制,网上可找到其通信协议和用法的,IIC 接口的协议里面包括设备地址信息,可以同一总线上连接多个从设备,通过应答来互通数据及命令。但是传输速率有限,标准模式下可达到100Kbps,快速模式下可达到400Kbps,高速模式下达到Mbps,不能实现全双工,不适合传输很多的数据。

•  USB:这个肯定是很熟悉的了,几乎每天都打交道。通用串行总线(英语:Universal Serial Bus,缩写:USB)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。很多单片机上也带有USB接口例如ST的STM32。

以上各种接口的通讯协议是不一样的,如UART最简单的协议是一个起始位一个终止位中间八个数据位,而USB的话通讯协议就复杂的多的多。

4.串行接口电气标准。

TTL电平:TTL电平指的是低电平为0,高电平为1(+5V电平),大多数的单片机自带的串口用的就是这种电平。一般用于芯片之间通信,TTL电平通信距离较短。

UART使用的是单片机自带的电平,单片机是什么电平标准那么该单片机上的UART就是什么电平标准,例如51单片机的UART就是用的TTL电平。而这种电平是没办法用于远程数据传输的,为了能让串行数据能够传输的更远,我们需要更加强大的传输标准,于是就有了RS-232、RS-422、RS485等。

•   RS-232-C
也称标准串口,是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座。自IBM PC/AT开始使用简化了的9芯D型插座。至今25芯插头座现代应用中已经很少采用。电脑一般有两个串行口:COM1和COM2,9针D形接口通常在计算机后面能看到。现在有很多手机数据线或者物流接收器都采用COM口与计算机相连。

•   RS-422
为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS- 422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。

•   RS-485
为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485 标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为 TIA/EIA-485-A标准。

下图是一般传输过程:单片机匹配电平到RS-232,通过RS-232传输,再从RS-232匹配到TTL再给另一个单片机。

单片机串行通信全解析
5.其他

各种串行通讯是可以相互转换的,如下图中我们最经常使用的CH340芯片就能够把USB转成TTL电平的UART串口通讯

单片机串行通信全解析
参考资料:
【1】http://blog.sina.com.cn/s/blog_62dd0b350100qyey.html
【2】http://www.cnblogs.com/lucky-apple/archive/2008/07/03/1234581.html
【3】http://www.wowotech.net/basic_tech/serial_intro.html
【4】http://www.ing10bbs.com/forum.php?mod=viewthread&tid=437

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: