我们将简要介绍七个串行接口:SIO、UART、SSP(SPI)、I2C、CAN、USB和EtherMAC。虽然每个接口都有几个不同的操作模式,但我们只介绍一个典型的模式。
1. SIO(串行输入输出)
最基本的串行接口是SIO,它由一个主器件和一个从器件通过一条数据线和一条时钟线采用一对一的方式连接组成。主器件把传输时钟提供给从器件。
接口将被其控制电路中的寄存器指定为主从器件。在数据传输之前,应该设置另一个寄存器以确定哪一个成为发射器或接收器。
如果数据集为8位,则发出8个时钟来同步传输数据。主器件的指令随时钟信号传输至从器件。这就是说,当主器件向从器件发送或接收数据时,主器件将通过发出时钟来启动传输请求。由于数据传输方向是预先定义的,因此主器件将在必要时向从器件发出时钟,并执行与从器件之间的数据发送或接收,与时钟同步。
数据通常是8位串行数据。可以在数据末尾添加一个奇偶校验位,这将使得长度总共为9位。在这种情况下,从器件接口必须在接收串行数据之前已经知道串行数据有一个奇偶校验位。
2. UART(通用异步收发器)
UART是异步串行接口,两个接口之间没有时钟信号。因此在UART中,主从器件的定义没有意义。
虽然消除时钟信号的目的是防止噪声问题,但这将造成另一个问题。如前所述,来自主器件的命令将通过SIO中的时钟信号发送到从器件。但是由于UART没有任何时钟信号,UART接口无法接受任何命令。因此,接收器必须等待数据到达,然后随时正确接收数据。
为了使接收器能够识别传输数据的开始和结束,发射器应对传输数据的开始或结束数据设置一些指示。起始位是数据“0”,停止(结束)位是数据“1”,它们分别添加在传输数据之前和之后。
在数据传输之前,发射器或接收器的分配已经完成。如果数据线变为“0”(数据线通常为“1”),则接收器会识别到发射器将要发送数据并准备开始接收传输数据。在数据传输过程中,由于没有时钟信号,很难理解一个位的时间间隔有多长。如果发射器发送了两个“0”(“00”),则接收器不可能在发射器和接收器之间没有任何约定的情况下识别出传输数据只是一个“0”或“00”。
关于该约定的典型例子是,接收器用频率比发射器中的发送时钟快16倍的时钟接收数据,该发射器应在数据传输之前预先定义。一旦接收器检测到起始位,它将每隔16个时钟捕获一次数据。
在UART和SIO中都可以添加奇偶校验位。
UART中可能有两个以上的接口。在这种情况下,只有一个接口能分配为主器件,其它接口作为从器件。接收器将应答返回给发射器,使得对接功能可在UART上工作。
3. SSP(SPI)(同步串行端口(串行外围接口))
SSP是同步串行接口的总称,是指包括SPI在内的几种不同的数据传输方法。
SPI有一个主器件和多个从器件,这就是说SPI具有星型结构。所有接口共享两条数据线。其中一条是主器件发送数据线(SPDO),另一条是主器件接收数据线(SPDI)。通过使用这两条数据线,SPI可以方便地控制从器件接口,同时可轻松地增加从器件接口的数量,因为数据线上不会发生数据冲突。一条时钟线(SPCLK)将由主器件和所有从器件以及数据线共享。
主器件具有选择线路(SPFSSn)来访问其中一个从器件以便与主器件进行通信。一条选择线路连接到一个从器件,因此主器件的选择线路数量与从器件的相同。
4. I2C(内部集成电路)
即使网络中存在多个从器件,在I2C中也只需要两条线路,即一条数据线和一条时钟线。I2C还允许多个主器件结构(可以分配多个主器件)。在每个接口控制电路中设置一个寄存器,可以完成主从器件的分配。I2C是同步接口。
设计I2C数据线和时钟线以实现多个主器件结构。所有接口的输出只有“0”或高阻状态,数据和时钟的高电平由线路上的上拉元件(“线与”结构)提供。每个接口的输出缓冲区只有NMOS晶体管,没有PMOS晶体管。必要时,这些晶体管变为“导通”,接口的输出将为“0”。如果这些NMOS晶体管变为“关断”,则接口的输出变为高阻状态。由于上拉元件连接到每条线路,如果连接到信号线的接口的所有输出变成高Z状态,则该线路被上拉直至VDD并变成“1”。这是“线与”结构。
在“线与”连接中,数据“0”比数据“1”强。也就是说,如果两个接口分别输出“0”和“1”(高阻状态),则该线路的数据变为“0”。该强度优先级实现了对于防止多个主器件系统中发生数据冲突的仲裁方式。考虑两个主器件同时向数据线输出数据的情况,如果其中一个数据为“0”,另一个数据为“1”,则后一个接口将立即知道其它输出为“0”,并根据自己的判断立即停止线路访问。结果是前一个接口将保留使用线路的优先级,后一个接口将在知道前一个接口的数据传输结束后恢复数据传输。这种仲裁方式使得多个主器件系统成为可能。
5. CAN(控制器区域网络)
CAN是一种主要用于汽车内部通信的网络。CAN的结构致力于抗噪声。它采用差分数据线结构,不需要任何时钟线。所以CAN是异步接口,尽管CAN仅由与I2C一样的两条信号线构成。
双数据线即所谓的CAN.H和CAN.L。两个数据信号之间的电压差表示数据;较高电压的CAN.H和较低电压的CAN.L定义数据“0”,而这些信号的相同电压电平定义数据“1”。这些定义实现了高的抗噪性,因为噪声将以相同的方式同时影响两条线路。
CAN接口有一种特殊的同步方式,不需要任何时钟,主从器件之间没有区别。因此,信号线上存在数据冲突的可能性,所以每个接口应设置优先级。接口之间的同步按以下方式进行。首先,发射器将在发送数据之前传输起始位“0”。因为到目前为止,信号线上的数据一直是“1”,所以其它接口将检测到这个“0”数据,并将它们自己的时钟同步到数据“0”的边缘。当接收到传输的数据时,接收器将其时钟定时调整到数据“0”的任意边缘。当数据“1”继续时,这个方法将出现问题,因为数据“1”在CAN.H或CAN.L上没有边缘。连续的数据序列“1”无边缘,并且接收器可能与发射器失去同步。其解决方案是采用“位填充”技术,这种情况下,在五个连续的“1”数据之后插入一个数据“0”,这仅用于发射器的同步。接收器将使用数据“0”来同步其时钟,并将其从接收的数据中消除。
如前所述,应对每个接口设置优先级,以防止数据冲突。为此,每个CAN接口都有标识符(11位)。标识符可用于确定每个接口传输数据的优先级,以防止数据冲突。
实际上,当数据“0”和数据“1”从不同的接口输出到数据线时,数据“0”在CAN中的传输类似于在I2C中的传输。在起始位之后和传输数据之前,发射器将传输其自己的标识符。当两个接口同时发送它们的标识符时,其中一个接口将取得优先级,输出“0”,另一个输出“1”。前一个接口可以占用数据线,在另一个接口之前完成发送。
6. USB 2.0(通用串行总线2.0)
USB 2.0是一种非常流行的串行接口,特别是对于个人电脑而言。众所周知,USB 2.0被广泛应用于各种应用,比如键盘、鼠标、打印机、闪存、硬盘、扬声器等接口。
USB 2.0有三种速度等级,分别是低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。
USB接口采用分层结构。在USB中,主器件称为“主机”,从器件称为“设备”。USB 2.0是一个星型网络,其中一个“主机”控制着许多“设备”。例如,PC是主机,设备可以是通过USB电缆连接到PC的任何设备,比如键盘、鼠标等。
USB的显著特点是即插即用。连接或卸下USB设备时,不必关闭电脑。这就是USB变得如此流行的原因之一。
为了使USB设备能够很容易地连接到网络或从网络中移除,USB主机必须做一些工作。当USB设备连接到网络时,该设备会向主机发送请求。接收来自设备的请求后,主机开始获取设备的信息,选择最合适的驱动器,并为设备分配地址。主机的这个操作称为枚举。枚举成功后,主机可以正确访问设备。
主机可控制的设备和集线器的最大数量为127。如果集线器插入网络,则串联连接的集线器数量必须小于或等于5。
USB 2.0电缆有4根导线:VDD、GND、信号D+和信号D-。对于一个传输数据,信号D+和D-彼此取互补值。如果D+为高电平,D-为低电平,则数据被称为“差分1”。如果D+为低电平,D-为高电平,则数据被称为“差分0”。
但在USB 2.0网络的实际数据传输中,“差分1”和“差分0”并不一定分别意味着数据“1”和数据“0”。USB的数据格式为NRZI(反向不归零)。当一个时钟间隔内没有变化时,此格式将定义数据“1”,当发生从高到低或从低到高的变化时,则定义数据“0”。
USB 2.0没有任何时钟线,所以它是异步接口。所以主机和驱动器必须像在CAN中一样进行相互同步。传输8位SYNC码,使接收器与发射器以USB全速同步。
数据传输时,在USB 2.0中连续传输6次数据“1”后,完成数据“0”的位填充,因为只有数据“1s”连续传输时,NRZI格式中无信号边缘出现。
7. EtherMAC(以太网媒体访问控制)
EtherMAC是以太网接口的一部分。由于以太网的接口结构非常复杂,所以不容易闸释完全的以太网功能。我们只对以太网进行简要说明,提供到目前为止所述的与其它串行接口的差异概述。
以太网的“以太”来自一种叫做“以太”的介质,它是一种物理学定义,曾经被认为可以填满所有的空间。“以太”的存在最终被否定了,但由于“以太”被认为是无处不在的,所以它成为了网络命名的起源。
以太网主要分为四层,即物理层、数据链路层、网络层和上层。EtherMAC处理最低的两层:物理层和数据链路层。
以太网电缆由四根信号线组成。两条绞合线用于输出数据,另两条绞合线用于输入数据。这种电缆即使没有电屏蔽层也有很好的抗噪性(非屏蔽双绞线:UTP)。由于没有时钟线,因此以太网是一个异步接口。
为了理解以太网的概念,我们先介绍一下10Base-T,尽管100Base-TX是当今最流行的版本,但10Base-T是基本的,且比100Base-TX简单得多。
10Base-T是一个使用双绞线的接口,具有10Mbps传输速率和基带格式。
信号传输采用曼彻斯特代码格式。在曼彻斯特代码中,数据“1”和“0”分别定义为上升转换和下降转换。
以太网没有任何时钟线。接收器和发射器必须彼此同步,与CAN和USB2.0接口中一样。但即使相同的数据连续重复,也不需要位填充,因为数据“1”和数据“0”中都有信号转换。发射器发送数据前的56位连续脉冲,仅用于使接收器与发射器同步。
以太网没有USB 2.0中所必不可少的主机和设备关系等层次结构。当接口的一个单元想要输出数据时,该线路必须是空闲的。如果另一个单元占用线路,该单元必须等待。即使该单元已确保线路可用并开始发送数据,但如果另一个单元也开始同时发送数据,则会发生冲突。一旦发生冲突,所有单元将停止发送数据,并等待线路空闲。当一个单元尝试开始发送时,可能会再次发生另一个冲突,因为其它单元也尝试开始发送。为了防止这种永久性的冲突,以太网有一个防止冲突的对策。当发生冲突时,发射器的等待时间由随机数决定。这对发生冲突的单元有效。但是当先前的一个单元开始再次发送数据时,新单元可能会发生冲突。一个单元最多可以发送16次相同的数据。
对于无主从器件关系的系统分担通信责任而言,这是最佳的仲裁方式之一。
来源:硬件工程师技术号
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !