串行接口

微控制器有几种串行接口。东芝生产的TX03系列微控制器采用高性能Arm Cortex™-M3内核作为CPU。TX03系列中的M360组微控制器选择性地集成了SIO、UART、SSP(SPI)、I2C、USB、CAN和以太网MAC串行接口。本文旨在简要介绍每个串行接口。

同步或异步接口

同步接口

串行接口通过一线或两线发送或接收一组二进制数据。一个原始串行接口只有一个发射器和一个接收器,它们之间连接一条数据传输线和另一条时钟信号线。发射器将以每个时钟脉冲一位数据的方式向接收器发送一组数据。接收器将在时钟的边缘定时捕获传输的数据。这称为“同步”系统。这种串行接口非常简单,易于进行串行通信。

串行接口发射器和接收器
发射器将以每个时钟脉冲一位数据的方式向接收器发送一组数据

异步接口

尽管同步接口很简单,但它的缺点是抗噪性低。数据的发送和接收与时钟同步,因此如果有些噪声影响时钟信号,可能会发生错误的数据传输。例如,当时钟信号处于高电平时,由于噪声的影响,它将在短时间内被迫处于低电平。在这种情况下,时钟可被视为两个脉冲,这就导致了故障“串行传输在一个时钟之前完成”。同步系统中总是需要考虑此类问题。

有些噪声影响时钟信号,可能会发生错误的数据传输

消除噪声影响的最佳对策之一是消除系统中的时钟信号。没有任何时钟信号的时钟就不会存在噪声问题。

消除噪声影响的最佳对策之一是消除系统中的时钟信号

但其副作用之一是接收器不能知道它捕获数据的时间。即使消除了噪声问题,也可能会导致通信中断。因此,必须提出某些方法,确保即使没有时钟信号也能获取时间。以下组合可以作为一种解决方案。

(1)采用比发送时钟更高的频率时钟来捕获接收数据。

(2)对传输一组数据时的开始和停止时间进行明确。

接收时钟的频率比发送时钟高,例如,高出4倍。在这种情况下,当接收时钟连续捕获相同的数据三次或四次时,我们认为1位数据(1或0)有效(“高出4倍”只是举例。有时使用16倍)。
通常,在一组传输数据之前添加一个起始位“0”,在数据之后添加一个停止位“1”,以便理解数据的内容何时传输。

没有时钟信号线的数据传输被称为异步传输。异步通信系统具有较好的抗噪声性能,但接收器电路会更加复杂。

异步通信系统具有较好的抗噪声性能,但接收器电路会更加复杂

数据格式

串行通信通常会对其数据序列进行调节。举例而言,序列以起始代码开始,后面跟着发送器的地址、接收器的地址、传输数据、错误检测代码,并以停止代码结束,这表明传输数据是被特殊的功能代码所包围着。在本例中,数据格式是一种用于指定每个数据和代码在发送数据序列中具体位置的规则。每个代码和传输数据必须根据数据格式正确定位。请再以列车为例进行思考。
列车由列车操作员的车厢、普通乘客的车厢、优先车厢(比如女士专用车厢)、餐车、特价车厢等组成。每一列列车都是这些车厢的组合,并且车厢的顺序都有一个明确的规则。
例如,列车操作员的车厢不能在列车中间,餐车也不能在列车尾部。即使车厢的顺序是由铁路公司决定的,但乘客也能理解车厢的顺序,在火车站,乘客会在他们想乘坐的车厢将要停车的位置等候火车。
这个序列就是格式。如果铁路公司无视这一顺序,用任意顺序的车厢来准备列车,那么早上在火车站通勤上下班的乘客就会陷入恐慌。
同样道理,当发送器在忽略数据格式的情况下传输字符串数据时,接收器将无法正确地接收数据。除非理解数据格式,否则永远无法构建串行接口网络。

主器件与从器件

串行通信系统中必须至少具有两个相关的器件:一个发射器和一个接收器。由其中一个器件指挥其它器件。负责指挥的器件被称为主器件,其它器件则被称为从器件。(主器件和从器件的关系不同于发送器和收发器的关系。)

区分主从器件的重要性在于系统中存在许多串行接口。这些接口共享相同的线路以进行彼此通信。如果没有主器件,每个接口都单独工作,则系统很容易陷入混乱。所以它们中只有一个作为主器件进行工作,指挥其它从器件服从主器件的指示。串行数据只在主器件和一个从器件之间传输,绝对不会在两个从器件之间传输。

我们有两种主从器件结构的系统。第一种系统是每个接口都可以偶尔成为主器件(最多只能有一个接口成为主器件),另一种系统是主器件已经预先确定,其它接口绝对不会成为主器件。在第一种系统中,每个接口共用同一条信号线,构成一个并行结构系统(并联型)。在第二种系统中,每个从器件接口都连接到同一个主器件接口,从器件之间没有连接线路。这叫做星型结构。

并联型
星型

虽然星型系统对于如何确定一个主器件毫无问题,但并联型对此却存在问题。解决这个问题的方法之一是使每个接口按照优先级来设置为主器件。当两个接口竞争主器件时,具有更高优先级的接口将成为主器件。这可以避免接口之间的冲突。

系统可扩展性

许多串行接口可以以并联型结构连接到一条信号线上。但是,共享线路的接口数量有一定限制。过多的接口会降低传输速度,或者由于服务器竞争关系,使得优先级较低的接口永远无法成为主器件。所以并联型系统的接口数量限制通常是128或256。

星型系统因为使用层次结构而可以进行扩展。从器件接口通过一个名为“集线器”的缓冲区连接到系统。一个集线器也可以连接到另一个集线器。尽管扩展可以这样简单的方式完成,但在某些星型系统中,这种集线器到集线器的层次结构不得超过五级(举例而言)。

星型

传输错误的对策

在远距离传输数据时,数据可能与受噪声影响的原始发送数据不同。另外还会因多个接口输出的意外冲突或接口的某些故障而引起另一个传输错误。
我们提出了一个解决数据线噪声问题的方法,就是发送一对具有2线信号结构的互补数据。接收器将检查一根导线电压和另一根导线电压之间的“差”。
奇偶校验便是一种简单的检测数据传输过程中是否发生错误的方法。在一组传输数据的末尾添加一个奇偶校验位,使得传输数据中的“1”的数目变为偶数,接收器在接收数据时检查“1”的数目是否为偶数,以此进行奇偶校验。更复杂的错误检查是CRC(循环冗余码)方法。CRC是发射器在传输数据的末尾加上的传输数据的总和,接收器将计算接收数据的总和并对这两个总和进行比较。如果这两个总和相同,则传输成功。如果不同,则接收到的数据中一定出现错误。当接收器检测到传输错误时,将要求发射器再次发送数据。

如上所述,我们有很多种串行接口。我们采用表格把这些串行接口归纳为SIO、UART、SSP(SPI)、I2C、CAN、USB和EtherMAC,具体参见下一章。

串行接口表格

联系我们

技术咨询

联系我们

联系我们

常见问题

常见问题(FAQ)
在新窗口打开