第十四章 嵌入式系统总线和通信接口
串行接口基本原理与结构
- 串行通信:数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度
- 优点:
- 传输线少、成本低
- 特别适合远距离传送
- 缺点:
- 速度慢
串行数据传送3种基本的通信模式
单工通信:数据仅能从设备A到设备B进行单一方向的传输。如遥控、遥测等
半双工通信:数据可以从设备A到设备B进行传输,也可以从设备B到设备A进行传输,但不能在同一时刻进行双向传输。如对讲机
全双工通信:数据可以在同一时刻从设备A传输到设备B,或从设备B传输到设备A,即可以同时双向传输。如电话
串行通信在信息格式上划分
异步通信方式
是指通信的发送和接收设备使用各自的时钟,控制数据的发送和接收过程
为使双方的收发协调,要求发送和接收设备的时钟尽可能一致
数据是一帧一帧传送的,每帧数据包含有起始位(“0”)、数据位、奇偶校验位和停止位(“1”),每帧数据的传送靠起始位来同步
一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的
在异步通信的数据传送中,传输线上允许空字符
异步通信对字符格式、波特率、校验位有确定的要求
字符格式
- 每个字符传送时,必须前面加一起始位,后面加上1、1.5或2位停止位
- 例如ASCII码传送时,一帧数据的组成是:前面一个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位
波特率
- 传送数据位的速率称为波特率,用位/秒(bit/s)来表示,称之为波特
- 例如,数据传送的速率为120字符帧/秒,每帧包括10个数据位,则传送波特率为:10X120=1200b/s=1200波特
- 异步通信的波特率的数值通常为:150、300、600、1200、2400、4800、9600、14400、28800等,数值成倍数变化
校验位
- 偶校验就是要使字符加上校验位有偶数个“1”
- 奇校验就是要使字符加上校验位有奇数个“1”
- 例如数据“00010011”,共有奇数个“1”,偶校验时,则校验位就置为“1”,奇校验时,则校验位就置为“0”
异步通信的特点
- 不要求收发双方时钟的严格一致,实现容易,设备开销小
- 但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。实际使用率只有约80%
同步通信方式
- 是一种比特同步通信技术,要求收发双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使收发双方建立同步,此后便在同步时钟的控制下逐位发送/接收
- 同步传输采用字符块的方式,减少每一个字符的控制和错误检测数据位,因而可以具有较高的传输速率
- 即将许多字符聚集成一字符后,在每块信息之前要加上1~2个同步字符,字符块之后再加入适当的错误检测数据才传送出去
- 特点
- 数据传输速率较高
- 但要求发送方时钟和接受方时钟保持严格同步
RS-232串行接口
RS-232C是美国电子工业协会(EIA)制定的一种串行通信接口标准
RS-232C接口规格
EIA所制定的传送电气规格
状态 L(LOW) H(Hight) 电压范围 -25V~3V +3V~+25V 负逻辑 1 0 RS-232C通常以±12V的电压来驱动信号线,TTL标准与RS-232C标准之间的电平转换电路通常采用集成电路芯片实现,如M2AX23等
RS-232C接口信号
EIA制定的RS-232C接口与外界的相连采用25芯(DB-25)和9芯(DB-9)D型插接件,实际应用中,并不是每只引脚信号都必须用到。
各引脚功能如下
引脚号 符号名称 名称 说明 1 CD 载波检测 主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音 2 RXD 接收数据线 用于接收外部设备送来的数据 3 TXD 发送数据线 用于将计算机的数据发送给外部设备 4 DTR 数据终端就绪 当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好 5 SG 信号地 6 DSR 数据设备就绪 此引脚为高电平时,通知计算机Modem已经准备好,可以进行数据通信 7 RTS 请求发送 此引脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中 8 CTS 允许发送 此引脚由Modem控制,用以通知计算机将要传送的数据送至Modem 9 RI 振铃提示 Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定
RS-232C的基本连接方式
- 计算机利用RS-232C接口进行串口通信,有简单连接和完全连接两种连接方式
- 简单连接又称三线连接,即只连接发送数据线、接受数据线和信号地、实现全双工通信
- 如果应用中还需要使用RS-232C的控制信号,则采用完全连接方式
RS-422串行接口
- RS-422标准是RS-232的改进型,是一种单机发送、多机接收的单向、平衡传输规范,传输速率可达10Mb/s。采用差分传输方式,也称做平衡传输
- 允许在相同传输线上连接多个接收节点,最多可接10个节点,即一个主设备(Master),其余10个为从设备(Salve),从设备之间不能通信
- 支持一点对多点的双向通信。RS-422四线接口由于采用单独的发送和接受通道,因此不必控制数据方向,各装置之间任何必需的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现
- RS-422的最大传输距离为4000英尺(约1219m),最大传输速率为10Mb/s
- 传输速率与平衡双绞线的长度有关,只有在很短的距离下才能获得最高传输速率
- 在最大传输距离时,传输速率为100Kb/s
- 一般100m长的双绞线上所能获得的最大传输速率仅为1Mb/s
- RS-422需要再传输电缆的最远端连接一个电阻,要求电阻阻值约等于传输电缆的特性阻抗
- 在短距离(300m以下)传输时可以不连接电阻
RS-485串行接口
在RS-422的基础上,为扩展应用范围,EIA制定了RS-485标准,增加了多点、双向通信能力
- 在通信距离为几十米至上千米时,通常采用RS-485收发器
- RS-485收发器采用平衡发送和差分发送
- 即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接受端,接收器将差分信号变成TTL电平,因此具有抑制共模干扰能力
- 接受器能够检测低达200mV的电压,具有高的灵敏度,故数据传输距离可达千米以上
RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信
- 采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主设备,其余为从设备
- RS-485可以连接多达32个设备
RS-485的共模输出电压在-7~+12V之间,接收器最小输入阻抗为12kΩ
RS-485满足所有RS-422的规范,所以RS-485的驱动器可以在RS-422网络中应用
RS-485的最大传输速率为10Mb/s。在最大传输距离时,传输速率为100Kb/s
RS-485需要两个终端电阻,接在传输总线的两端,要求电阻阻值约等于传输电缆的特性阻抗
- 在短距离传输(300m以下)时可不需要终端电阻
并行接口基本原理与结构
并行通信通常是将数据字节的各位用多条数据线同时进行传送
- 一般用来连接打印机、扫描仪等,所以又称打印口
特点:
- 控制简单、传输速度快
- 由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难
并行接口可以分为
- SPP(标准并口)
- EPP(增强型并口)
- ECP(扩展型并口)
并行总线分为:
- 标准并行总线
- 非标准并行总线
常用的并行标准总线:IEEE488总线和SCSI总线。
MXI总线是一种高性能非标准的通用多用户并行总线
IEEE488总线
- 又称GPIB总线(General Purpose Interface Bus,通用接口总线)
- 位并行、字节串行双向异步方式传输信号
- 总线方式连接,仪器设备直接并联于总线上,总线上最多可连接15台设备
- 最大传输距离为20m,信号传输速度一般为500Kb/s,最大传输速度为1Mb/s
- 广泛应用在仪器、仪表、测控领域
SCSI(Small Computer System Interface,小型计算机系统接口)总线:
- 速度可达5Mb/s,传输距离6m
- 传输速率很高
- 普遍用作计算机的高速外设总线,如连接高速硬盘驱动器
MXI(Multi-system extension Interface bus,多系统扩展接口总线)
- 是一种高性能非标准的通用多用户并行总线
- 32位高速并行总线
- 最高速度可达23Mb/s,传输距离20m
- 用作计算机与测控机箱的互连
PCI接口基本原理与结构
PCI(Peripheral Component Interconnect,外围设备互连)总线是由Intel公司推出的一种局部总线,是当前用于系统扩展最流行的总线之一
PCI总线是地址、数据多路复用的高性能32位和64位总线,是微处理器与外围控制部件、外围附加板之间的互连机构
PCI定义了32位数据总线,并且可扩展为64位。总线速度有33MHz和66MHz两种
- 改良的PCI系统PCI-X,数据传输速度最高可以达到64位@133MHz
- PCI总线主板插槽的体积比ISA总线插槽小,支持突发读写操作(突发数据传输),可同时支持多组外围设备
与ISA总线不同,PCI总线的地址总线与数据总线是分时复用的,支持即插即用(PNP:PLug-and-Play)、中断共享等功能
PCI总线在数据传输时,由一个PCI设备做发起者(称为Master、Initiator),而另一个PCI设备做目标(称为Slave、Target)
- 总线上所有时序的产生和控制都由Master发起
- PCI总线在同一时刻只能供一对设备完成传输,要求有一个仲裁机构来决定谁有权拿到总线的控制权
USB接口基本原理与结构
USB(Universal Serial Bus,通用串行总线)是由Compaq、HP、Intel、Lucent、Microsoft、NEC和Philips公司制定的连接计算机与外围设备的机外串行总线
- 最多可连接127个设备
- 用于多种嵌入式系统设备的数据通信。如移动硬盘、PDA
热插拔。USB提供机箱外的热插拔功能,连接外设不必再打开机箱,也不必关闭主机电源,USB可智能地识别USB链上外围设备的动态插入和拆除,具有自动配置和重新配置外设的能力,连接设备方便,使用简单
可连接多个外部设备
- 每个USB系统中有一个主机,USB总线采用“级联”方式可连接多个外部设备
- 每个USB设备用一个USB插头连接到上一个USB设备插座上,而其本身又提供一或多个USB插座供下一个或多个USB设备连接使用
- 这种多重连接是通过集线器(Hub)来实现的,整个USB网络中最多可连接127个设备,支持多个设备同时操作
低成本的电缆和连接器
- USB采用统一的4引脚插头和一根四芯的电缆传送信号和电源
- 电缆长度可长达5m
总线供电
- USB总线可为连接在其上的设备提供5V电压/100mA电流的供电,最大可提供500mA的电流
- USB设备也可采用自供电方式。可以通过电池或其他的电力设备
- 支持节约能源的挂机和唤醒模式
USB总线的电缆有一对标准尺寸的双绞信号线和一对标准尺寸的电源线,共4根导线
连接序号 信号名称 典型连接线 1 VBUS(USB电源) 红 2 D+(正差分信号) 白 3 D-(负差分信号) 绿 4 GND(USB地) 黑 外层 屏蔽层
SPI接口基本原理与结构
SPI(Serial Peripheral Interface,串行外围设备接口)是由Motorola公司开发的一个低成本、易使用的接口,主要用在微控制器(MCU)和外围设备芯片之间进行连接。SPI接口可以用来连接存储器、A/D转换器、D/A转换器、实时时钟日历、LCD驱动器、传感器、音频芯片,其他处理器等。
SPI是一个4线接口,主要使用4个信号
- 主机输出/从机输入(MOSI)
- 主机输入/从机输出(MISO)
- 串行SCLK或SCK
- 外设片选(/CS)
- 有些处理器有SPI接口专用的芯片选择,称为从机选择(/SS)
MOSI信号由主机产生,从机接收。在有些芯片上,MOSI只被简单地标为串行输入(SI),或串行数据输入(SDI)
MISO信号由从机产生,不过还是在主机的控制下产生的。在一些芯片上,MISO有时被称为串行输出(SO)或串行数据输出(SDO)
外设片选信号:通常只是由主机的备用I/O引脚产生的
与标准的串行接口不同,SPI是一个同步协议接口,所有的传输都参考一个共同的时钟,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟来对串行比特流的接收进行同步化。可以将多个具有SPI接口的芯片连到主机的同一个SPI接口上,主机通过控制从设备的片选输入引脚来选择接收数据的从设备。
如图所示,微处理器通过SPI接口与外设进行连接
- 主机和外设都包含一个串行移位寄存器,主机写入一个字节到它的SPI串行寄存器,SPI寄存器通过MOSI信号线将字节传送给外设
- 外设也可以将自己移位寄存器中的内容通过MISO信号线传送给主机。主机和外设的两个移位寄存器中的内容被相互交换
- 外设的写操作和读操作是同步完成的,因此SPI成为一个很有效的协议
如果只是进行写操作,主机只需忽略收到的字节
如果主机要读取外设的一个字节,就必须发送一个空字节来触发从机的数据传输
当主机发送一个连续的数据流时,有些外设能进行多字节传输
- 如多数具有SPI接口的存储器芯片都以这种方式工作。在这种传输方式下,SPI外设的芯片选择端必须在整个传输过程中保持低电平
- 如,存储器芯片会希望在一个“写”命令之后紧接着收到的是4个地址字节(起始地址),这样后面接收到的数据就可以存储到该地址
其他外设只需要一个单字节(比如一个发给A/D转换器的命令),有些设置还支持菊花链连接,如图所示
- 主机处理器从其SPI接口发送3个字节的数据
- 第1个字节发送给外设A,当第2个字节发送给外设A的时候,第1个字节已移出了A,而传送给了B
- 同样,主机想要从外设A读取一个结果,它必须再发送一个3字节(空字节)的序列,这样就可以把A中的数据移到B中,然后再移到C中,最后送回到主机。在这个过程中,主机还依次从B和C接收到字节
- 注意,菊花链连接不一定适用于所有的SPI设备,特别是要求多字节传输的(比如存储器芯片)设备。有的外设芯片不支持菊花链连接
根据时钟极性和时钟相位的不同,SPI有4种工作模式
- 时钟极性有高电平、低电平两种
- 时钟相位有两个:时钟相位0和时钟相位1
时钟极性(CPOL:Clock Polarity):
- 时钟极性为低电平时:空闲时时钟(SCK)处于低电平,传输时跳到高电平
- 时钟极性为高电平时:空闲时时钟(SCK)处于高电平,传输时跳到低电平
时钟相位(CPHA:Clock Phase):
- 当CPHA为0时,时钟周期的前一边缘采集数据
- 当CPHA为1时,时钟周期的后一边缘采集数据
I2C接口基本原理与结构
I2C BUS(Inter Integrated Circuit BUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备
- I2C总线是具有总线仲裁和高低速设备同步等功能的高性能多主机总线
- 直接用导线连接设备,通信时无需片选信号
- I2C总线的协议层包含物理层和数据链路层。物理层有两根信号线,在链路层每个连接到I2C总线上的设备都有唯一的地址
在I2C总线上,物理层只需要两条线——串行数据SDA线、串行时钟SCL线,它们用于总线上器件之间的信息传递
- SDA和SCL都是双向的
- 每个器件都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)
I2C总线有4种操作模式
- 主发送模式
- 主接受模式
- 从发送模式
- 从接受模式
I2C的启动信号
- 当I2C接口处于从模式时,想要数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生
- 在SCL信号为高时,SDA产生一个由高变低的电平变化,即产生一个启动信号
- 当I2C总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,变成“忙”状态
I2C的停止信号
- 在SCL信号为高时,SDA产生一个由低变高的电平变化,产生停止信号
- 停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输
- 当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“闲”状态
主器件产生一个启动信号后,会立即送出一个从地址,用来通知将与它进行数据通信的从器件
- 1个字节的地址包括7位的地址信息和1位的传输方向指示位(R/W’)
- 如果第7位为“0”,表示主机发送数据(W’),即进行一个写操作
- 如果为“1”,表示主机接收数据(R),即进行一个读操作
数据传输格式
- SDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的
- 在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(ACK)位(即一帧共有9位)
- 传输中串行数据的MSB(字节的高位)首先发送
应答信号
- 为了完成1个字节的传输操作,接收器应该在接收完1个字节之后发送ACK位到发送器,告诉发送器,已经收到了这个字节
- ACK脉冲信号在SCL线上第9个时钟处发出(前面8个时钟完成1个字节的数据传输,SCL上的时钟都是由主器件产生的)
- 当发送器要接收ACK脉冲时,应该释放SDA信号线,即将SDA置高
- 接受器在接受完前面8位数据后,将SDA拉低
- 发送器探测到SDA为低,就认为接收器成果接收了前面的8位数据
总线竞争的仲裁
- I2C总线上可以挂接有多个器件,有时会发生两个或多个主器件同时向占用总线的情况
- I2C总线具有多主控能力,可对发生在SDA线上的总线竞争进行仲裁
- 仲裁原则:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级
总线竞争的仲裁在两个层次上进行的
- 首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性
- 由于是利用I2C总线上的信息进行仲裁,不会造成信息的丢失
I2C总线的数据传输过程:
- 开始:主设备产生启动信号,表明数据传输开始
- 地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表示数据流的方向)
- 数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,MSB先传;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程中可以被中止和重新开始
- 停止:主设备产生停止信号,结束数据传输
网络接口
以太网接口基本原理与结构
以太网(Ethernet)是目前应用最广泛的局域网通讯方式,同时也是一种协议
以太网协议定义了一系列软件和硬件标准,从而将不同的设备连接在一起
嵌入式系统通常使用的以太网协议是IEEE802.3标准,以太网接口电路主要由媒质接入控制MAC控制器和物理层接口(Physical Layer,PHY)两大部分构成
在802.3版本的标准中,没有采用直接的二进制编码(即用0V表示“0”,用5V表示“1”),而是采用
- 曼彻斯特编码(Manchester Encoding)
- 差分曼彻斯特编码(Differential Manchester Encoding)
曼彻斯特编码的规律:每位中间有一个电平跳变,从高到低的跳变表示“0”,从低到高的跳变表示“1”
差分曼彻斯特编码的规律:每位的中间有一个电平跳变,但不用这个跳变来表示数据,而是利用每个码元开始时有无跳变来表示“0”或“1”,有跳变表示“0”,无跳变表示“1”(保持性)
曼彻斯特编码和差分曼彻斯特编码相比,前者编码简单,后者能提供更好的噪声抑制性能
802.3 Mac层的以太网的物理传输帧如表所示
PR SD DA SA TYPE DATA PAD FCS 56位 8位 48位 48位 16位 不超过1500字节 可选 32位 PR:同步位,用于收发双方的时钟同步,同时也指明了传输的速率,是56位的二进制数101010101010…,最后两位是10
SD:分隔符,表示下面跟着的是真正的数据而不是同步时钟,为8位的10101011
DA:目的地符,以太网的地址为48位二进制地址,表明该帧传输给哪个网卡。如果为FFFFFFFFFFFF,是广播地址。广播地址的数据可以被任何网卡接收到
SA:源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,是6个字节
TYPE:类型手段,表明该帧的数据是什么类型的数据,不同协议的类型字段不同。如:0800H表示数据为IP包,0806H表示数据为ARP包,814CH是SNMP包,8137H为IPX/SPX包
DATA:数据段,该段数据不能超过1500B。以太网规定整个传输包的最大长度不能超过1514B(14B为DA,SA,TYPE)
PAD:填充位。以太网帧传输的数据包最小不能小于60B(除去DA、SA、TYPE的14B),还必须传输64B的数据,当数据段的数据不足46B时,后面通常是补0(也可以补其他值)
FCS:32位数据校验位。32位的CRC校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入。不需要软件还礼
通常PR、SD、PAD、FCS数据段是网卡(包括物理层和Mac层的处理)自动产生的,剩下的DA、SA、TYPE、DATA4个段的内容由上层软件控制
以太网数据传输的特点
- 所有数据位的传输由低位开始,传输的位流用曼彻斯特编码
- 以太网是基于冲突检测的总线复用方法,冲突退避算法是由硬件自动执行
- 以太网传输的数据段的长度,DA+SA+TYPE+DATA+PAD最小为60B,最大为1514B
- 通常的以太网卡可以接受3种地址的数据:广播地址、多播地址(或者叫组播地址,在嵌入式系统中很少用到)、自己的地址。但有时,用于网络分析和监控,网卡也可以设置为接受任何数据包
- 任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡地址由专门机构分配。不同厂家使用不同地址段,同一厂家的任何两个网卡的地址也是唯一的。根据网卡的地址段(网卡地址的前3个字节)可以知道网卡的生产厂家
嵌入式以太网接口实现的方法
嵌入式处理器+网卡芯片
- 把以太网芯片连接到嵌入式处理器的总线上
- 通用性强,对嵌入式处理器没有特殊要求,不受处理器的限制,但是,嵌入式处理器和网络数据交换通过外部总线(通常是并行总线)交换数据,速度慢,可靠性不高,电路板走线复杂
- 目前常见的以太网接口芯片,如CS8900,RTL8019/8029/8039、DM9008及DWL650无线网卡等
带有以太网接口的嵌入式处理器
- 带有以太网接口的嵌入式处理器通常是面向网络应用而设计的,要求嵌入式处理器有通用的网络接口(比如:MII接口)
- 处理器和网络数据交换通过内部总线,速度快
网络编程接口
BSD套接字(BSD Sockets)是使用的最广泛的网络程序编程方法
- 主要用于应用程序的编写,用于网络上主机与主机之间的相互通信
- 很多操作系统都支持BSD套接字编程。例如,UNIX、Linux、VxWorks、Windows的Winsock基本上是来自BSD Sockets
套接字(Sockets)分为Stream Sockets和Data Sockets
- Stream Sockets是可靠性的双向数据传输,对应使用TCP协议传输数据
- Data Sockets是不可靠连接,对应使用UDP协议传输数据
CAN总线接口基本原理与结构
Can(Controller Area Network,控制器局域网)是德国Bosch公司与1983年为汽车应用而开发的,它是一种现场总线(FieldBus),能有效支持分布式控制和实时控制的串行通信网络。1993年11月,ISO正式颁布了控制器局域网CAN国际标准(ISO11898)
CAN总线是一种多主方式的串行通信总线
- 理想的由CAN总线构成的单一网络中,是可以挂接任意多个节点,实际应用中节点数目受网络硬件的电气特性所限制。例如:当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。
- CAN总线具有很高的实时性能,已经在汽车工业、航空工业、工业控制、安全防护等领域得到了广泛应用。
CAN总线的通信介质可采用双绞线、同轴电缆和光导纤维,最常用的是双绞线
- 通信距离与波特率有关,最大通信距离可达10km,最大通信波特率可达1Mbps
- CAN总线仲裁采用11位标识和非破坏性位仲裁总线结构机制,可以确定数据块的优先级,保证在网络节点冲突时最高优先级结点不需要冲突等待
- CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点
- CAN总线上任意结点可在任意时刻主动向网络上其他节点发送信息而不分主次,因此可在各节点之间实现自由通信
CAN总线信号使用差分电传送
- 两条信号线被称为CAN_H和CAN_L,静态时均是2.5V左右,此时状态表示为逻辑1,也可以叫作“隐性”
- 采用CAN_H比CAN_L高表示逻辑0,称为“显性”,通常电压值为CAN_H=3.5V和CAN_L=1.5V
- 当“显性”位和“隐性”位同时发送的时候,最后总线数值将为“显性”
- 这种特性为CAN总线的仲裁奠定了基础
一些面向工业控制的嵌入式处理器集成了一个或者多个CAN总线控制器
- 例如:Phillips公司的LPC2194和LPC2294(ARM7TDMI内核)带有4个CAN总线控制器
- CAN总线控制器主要是完成时序逻辑转换等工作,要在电气特性上满足CAN总线标准,还需要一个CAN总线的物理层芯片,用它来实现TTL电平到CAN总线电平特性的转换,即CAN收发器
实际上,多数嵌入式处理器都不带CAN总线控制器
- 通常的解决方案是在嵌入式处理器的外部总线上扩展CAN总线接口芯片
- 例如:Phillips公司的SJA1000 CAN总线接口芯片,Microchip公司的MCP251x系列(MCP2510和MCP2515)CAN总线接口芯片,这两种芯片都支持CAN2.0B标准
SJA 1000的总线采用的是地址线和数据线复用的方式,多数嵌入式处理器采用SJA 1000扩展CAN总线较为复杂
MCP2510是由Microchip公司产生的CAN协议控制器,完全支持CAN总线V2.0A/B技术规范
- 0~8字节的有效数据长度,支持远程帧
- 最大1Mb/s的可编程波特率
- 两个支持过滤器(Filter,Mask)的接收缓冲区,三个发送缓冲区
- 支持回环(Loop Back)模式,便于测试
- SPI高速串行总线,最大5MHz
- 3V到5.5V供电
大多数嵌入式处理器都有SPI总线控制器,MCP2510可以3V到5.5V供电,能够直接和3.3V I/O口的嵌入式处理器连接,电路原理图如图所示
MCP2510使用3.3V电压供电,可以直接和三星S3C44B0X处理器通过SPI总线连接。相关的资源如下:
- 使用一个扩展的I/O口(EXIO2)作为片选信号,低电平有效
- 用S3C2410A的外部中断6(EXINT6)作为中断管脚,低电平有效
- 16MHz晶体作为输入时钟,MCP2510内部有振荡电路,用晶体可以直接起振使用TJA1050作为CAN总线收发器
CAN总线收发器TJA1050必须使用5V供电。MCP2510和TJA1050连接的两个信号都是单向的信号。需单向满足I/O口的电气特性
- 从MCP2510输出的TXCAN信号是否满足TJA1050的输入电平。TJA1050为5V供电时,输入高电平Vih的范围是2~5.3V。而3.3V供电的MCP2510输出TXCAN信号高电平Voh最小值为2.6V,可以满足要求
- 从TJA1050输出的RXD信号是否满足MCP2510的输入电平。3.3V供电的MCP2510输入信号RXCAN高电平范围Vih:2~4.3V,无法满足5V逻辑的TJA1050输出电平——电阻分压实现单向电平转换
分压电阻值的选择,需要考虑两个问题
- TJA1050输出信号的驱动能力(输出电流<=15mA)
- MCP2510的RXCAN管脚的输入阻抗(输入电流<=5μA)
无线以太网基本原理与结构
- WLAN(Wireless Local Area Network,无线局域网)是利用无线通信技术在一定的局部范围内建立的,是计算机网络与无线通信技术相结合的产物,以无线多址通道作为传输媒介,提供有线局域网的功能
- 传输介质
- 红外线IR
- 射频RF波段
- WLAN的标准:主要是针对物理层和媒质访问控制层(MAC层)。涉及到所有使用的无线频率范围、控制接口通信协议等技术规范和技术标准
- 802.11原始标准(2Mbps,2.4GHz)办公室、校园局域网
- 802.11b物理层补充(11Mbps,2.4GHz)办公室、家庭、宾馆、车站、机场等场合
- 802.11a物理层补充(54Mbps,5.2GHz)话音、数据和图像
- 802.11g物理层补充(54Mbps,2.4GHz)传输速率和安全性
- 802.11h无线覆盖半径的调整(室内和室外信道,5.2GHz)
1394接口基本原理与结构
IEEE 1394是Apple公司率先提出的一种高品质、高传输速率的串行总线技术,1995年被IEEE认定为串行工业总线标准
- 1394作为一种标准总线,可以在不同的工业设备之间架起一座沟通的桥梁
- 在一条总线上可以接入63个设备
- 实时多媒体领域。大容量存储以及打印机、扫描仪上等等
- IEEE1394规范仅支持64位固定解址模式
支持多种总线速度,适应不同应用要求
- IEEE 1394a:100Mb/s、200Mb/s、400Mb/s
- IEEE 1394b:800Mb/s、1600Mb/s、3200Mb/s
支持热插拔
- 设备的资源均由总线控制器自动分配
- 总线控制器会自动重新配置好设备
接口有两种类型
- 6针的六角形接口和4针的小型四角形接口
- 6针的六角形接口可向所连接的设备供电,而4针的四角形接口则不能
支持同步和异步两种传输方式
- 设备可以根据需要动态地选择传输方式,总线自动完成带宽分配
- 要求实时传输并对数据的完整性要求不严格的场合,可采用同步传输方式
- 对数据完整性要求较高的场合,采用异步传输的方式更好
支持点到点通信模式,IEEE 1394是多主总线,每个设备均可以获取总线的控制权,与其他设备进行通信
两种传输方式:Backplane模式和Cable模式
- Backplane模式最小的速率也比USB1.1最高速率高,分别为12.5Mbps/s、25Mbps/s、50Mbps/s,可以用于多数的高带宽应用
- Cable模式是速度非常快的模式,分为100Mbps/s、200Mbps/s和400Mbps/s几种,在200Mbps/s下可以传输不经压缩的高质量数据电影
遵循ANSIIEEE 1212控制及状态寄存器(CSR)标准,定义了64位的地址空间。可寻址1024条总线的63个节点,每个节点可包含256TB的内存空间
支持较远距离的传输
- 普通线缆:2个设备之间的最大距离可达4.5m(高级线缆可达15m)
- 玻璃光缆或5类双绞线:设备间距离可达100m以上
支持公平仲裁原则,为每一种传输方式保证足够的传输带宽,支持错误检测和处理
六线电缆具有电源线,可传输8~40V的直流电压
- 2对双绞线:信号传递
- 1对双绞线:供应电源
IEEE1394的协议栈由3层组成:物理层、链路层和事物层,另外还有一个管理层
- 物理层和链路层由硬件构成,通常集成在同一块芯片上
- 事务层主要由软件实现
物理层提供IEEE1394的电气和机械接口,功能是重组字节流并将它们发送到目的节点上去
- 物理层为链路层提供服务
- 解析字节流并发送数据包给链路层
链路层提供了给事务层确认的数据服务,包括:寻址、数据组帧和数据校验
- 提供直接面向应用的服务
- 支持同步和异步传输模式
- 链路层的底层提供了仲裁机制
事务层为应用提供服务
- 只支持异步传输
- 定义了3种基于请求响应的服务:read、write、lock
- 即是将发送者的数据送往接受者;读即是将有关数据返回到发送者;锁定即是写、读指令功能的组合
管理层定义了一个管理节点所使用的所有协议、服务以及进程
- 电缆环境下,IEEE 1394定义了2类管理:总线管理(BM)和同步资源管理(IRM)
- 总线管理(BM):总线的电源管理信息、拓扑结构信息、不同节点的速度极限信息,一遍协调不同速度设备之间的通信
- 同步资源管理(IRM):管理同步资源,如:可用频道信息、带宽的分配
总线分类
内部总线
- 说明:内部总线是微机内各外围芯片与处理器之间的总线,用于芯片一级的互连
- 常用总线:I2总线、SPI总线、SCI总线等
系统总线
- 说明:系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连
- 常用总线:ISA总线、EISA总线、VESA总线、PCI总线
外部总线
- 说明:外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连
- 常用总线:RS232、RS485、USB总线、IEEE1394总线等