首页/文章/ 详情

嵌入式学习(二十)— SPI协议分析

4月前浏览673

        在嵌入式系统的通信协议中,SPI协议凭借其高速、简单的特性,成为连接微控制器与外设的“常客”。无论是传感器、显示屏还是存储芯片,很多都依赖SPI协议实现数据交互。今天,我们就来深入拆解SPI协议的工作原理、通信过程及实际应用,帮你搞懂这个嵌入式开发中的“高频考点”。

 

一、SPI协议是什么?

 

SPI(Serial Peripheral Interface,串行外设接口)是一种同步串行通信协议,由摩托罗拉公司提出,主要用于短距离、高速率的芯片间通信。它采用“主从架构”,即一个主设备(通常是MCU,如STM32、Arduino)可以连接多个从设备(如OLED屏、ADC芯片、Flash等),主设备通过时钟信号同步控制数据传输,无需额外的地址线,硬件结构相对简单。

 

二、SPI的硬件连接:4根线搞定通信

 

SPI协议的通信依靠4根信号线实现,记住它们的功能,就能理解数据是如何“跑”起来的:

 

1. SCLK(Serial Clock):时钟线

由主设备产生,用于同步主从设备的数据传输节奏。时钟频率决定了通信速度,不同外设支持的最高时钟频率不同(如有的传感器支持1MHz,有的Flash可达50MHz),需根据外设手册配置。

2. MOSI(Master Out Slave In):主发从收线

主设备通过这条线向从设备发送数据。

3. MISO(Master In Slave Out):主收从发线

从设备通过这条线向主设备返回数据。

4. SS(Slave Select):从设备选择线

也称CS(Chip Select),由主设备控制,低电平(通常)表示选中该从设备。多个从设备时,需为每个从设备分配独立的SS线,或通过硬件/软件方式共享。

 

三、通信时序:数据是如何“交换”的?

 

SPI的核心是“同步传输”,主设备通过SCLK时钟信号控制数据在MOSI和MISO线上的传输,每次时钟脉冲对应1位数据的发送和接收,且主从设备同时收发数据(全双工)。

 

关键时序参数需注意:

 

- CPOL(Clock Polarity):时钟极性

定义SCLK在空闲状态(无数据传输)时的电平。CPOL=0时,空闲状态为低电平;CPOL=1时,空闲状态为高电平。

- CPHA(Clock Phase):时钟相位

定义数据采样的时刻。CPHA=0时,在SCLK的第一个跳变沿(上升沿或下降沿,由CPOL决定)采样数据;CPHA=1时,在第二个跳变沿采样。

 

根据CPOL和CPHA的组合,SPI有4种工作模式(Mode 0~3),实际应用中需根据外设手册选择匹配的模式,否则会出现数据错误。

 

举个最常用的Mode 0(CPOL=0,CPHA=0)为例:

 

- 空闲时SCLK为低电平;

- 数据在SCLK的上升沿被从设备采样(主设备在下降沿发送数据),下降沿时主设备采样从设备返回的数据。

 


四、多从设备通信:如何避免“抢话”?

 

当主设备连接多个从设备时,通过SS线的高低电平来选择目标从设备:

 

- 主设备想与某个从设备通信时,将该设备的SS线拉低,其他从设备的SS线保持高电平(不工作);

- 通信过程中,只有被选中的从设备会响应主设备的指令,避免数据冲突。

 

硬件连接上,多个从设备的MOSI、MISO、SCLK线可并联,仅SS线独立连接到主设备的不同GPIO口,简化电路设计。

 


五、SPI的优缺点:适合哪些场景?

 

优点:

 

1. 高速率:相比I2C,SPI时钟频率更高(可达几十MHz甚至上百MHz),适合大数据量传输(如显示屏刷新);

2. 全双工:主从设备可同时收发数据,效率高;

3. 硬件简单:无需地址线,仅需4根线(多从设备时增加SS线);

4. 协议灵活:支持多种工作模式,适配不同外设。

 

缺点:

 

1. 主从架构固定:从设备无法主动发起通信,只能被动响应主设备;

2. 信号线较多:相比I2C(仅需2根线),多从设备时SS线会占用更多GPIO;

3. 无内置纠错机制:需软件实现数据校验(如CRC),确保传输可靠性。

 

因此,SPI适合短距离、高速、全双工的场景,如连接Flash、摄像头、触摸屏等外设;而对布线空间敏感、速率要求不高的场景(如传感器组网),I2C可能更合适。

 

六、实际应用:代码层面如何实现?

 

以STM32为例,使用HAL库配置SPI通信的大致步骤:

 

1. 初始化GPIO:配置SCLK、MOSI、MISO为复用功能,SS线为推挽输出;

2. 初始化SPI外设:设置工作模式(CPOL、CPHA)、时钟频率、数据位数(通常8位)、MSB/LSB优先(高位在前或低位在前);

3. 发送数据:通过 HAL_SPI_Trans mit() 发送指令或数据;

4. 接收数据:通过 HAL_SPI_Receive() 接收从设备返回的数据;

5. 全双工通信:使用 HAL_SPI_Trans mitReceive() 同时收发数据。

 

示例伪代码(简化版):

 

// 初始化SPI

HAL_SPI_Init(&hspi1);


// 选中从设备(拉低SS线)

HAL_GPIO_WritePin(SS_GPIO_Port, SS_Pin, GPIO_PIN_RESET);


// 发送数据(如向传感器写入指令)

uint8_t cmd = 0x01;

HAL_SPI_Trans mit(&hspi1, &cmd, 1, 100);


// 接收数据(读取传感器返回值)

uint8_t data;

HAL_SPI_Receive(&hspi1, &data, 1, 100);


// 取消选中(拉高SS线)

HAL_GPIO_WritePin(SS_GPIO_Port, SS_Pin, GPIO_PIN_SET);

 

 

七、总结

 

SPI协议以其高速、灵活的特点,在嵌入式系统中应用广泛。掌握其硬件连接、时序模式和多从设备通信逻辑,是实现外设驱动的基础。实际开发中,需结合外设手册配置正确的参数,必要时通过逻辑分析仪抓取时序波形,排查通信问题。

 

希望这篇分析能帮你理清SPI的核心知识点,下次调试SPI设备时,不妨从时序模式和SS线控制入手,或许能快速定位问题。


来源:不懂幽默的秦二
电路芯片通信控制SCL
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-03-31
最近编辑:4月前
点墨设计
本科 | 高级硬件工程... 十年饮冰,难凉热血!
获赞 1粉丝 9文章 52课程 0
点赞
收藏
作者推荐

电平转换芯片和协议标准电平

文章概述:一、电平转换芯片二、标准协议电平三、Q&A----------------------------------------------------------------------一、电平转换芯片1.1 TTL转LVDS芯片ON :MC100EPT21TI :PDSLVDS1001DBVT ----------------------------------------------------------------------------------------- 1.2 LVDS转TTL芯片 TI :PDSLVDS1002DBVT DSLVDS1002ON :NBA3N011SSNT1G,NB3N201S ,FIN1002 ,NBA3N012CDIODE : PI90LV02MAX : MAX91301.3 USB转TTL芯片WCH(南京沁恒) :CH340PROLIFIC(旺玖):PL-2303HXFIDI(飞特蒂亚):FT232RLSILICON LABS(芯科):CP2102-GMR------------------------------------------------------------------------------二、标准协议电平现在常用的电平标准有TTL、CMOS、LVTTL、LVCMOS、ECL、PECL、LVPECL、RS232、RS485等,还有一些速度比较高的LVDS、GTL、PGTL、CML、HSTL、SSTL等。下面简单介绍一下各自的供电电源、电平标准以及使用注意事项。------------------------------------------------------------------------------2.1 TTL:Transistor-TransistorLogic三极管结构Vcc:5V;VOH>=2.4V;VOL<=0.4V;VIH>=2V;VIL<=0.8V。 因为2.4V与5V之间还有很大空闲,对改善噪声容限并没什么好处,又会白白增大系统功耗,还会影响速度。为了改善这个缺点,又衍生出LVTTL电平标准。 2.2 LVTTL又分3.3V、2.5V以及更低电压的LVTTL(LowVoltageTTL)3.3V LVTTL:Vcc:3.3V;VOH>=2.4V;VOL<=0.4V;VIH>=2V;VIL<=0.8V。 2.5V LVTTLVcc:2.5V;VOH>=2.0V;VOL<=0.2V;VIH>=1.7V;VIL<=0.7V。 TTL使用注意:TTL电平一般过冲都会比较严重,可能在始端串22欧或33欧电阻;TTL电平输入脚悬空时是内部认为是高电平。要下拉的话应用1k以下电阻下拉。注意:TTL输出不能驱动CMOS输入。 ------------------------------------------------------------------------------TTL是Transistor-Transistor Logic的缩写,主要由BJT(Bipolar Junction Transistor 即双极结型晶体管),晶体三极管和电阻构成,具有速度快的特点。TTL电路是电流控制器件,TTL电路的速度快,传输延迟时间短(5-10纳秒),但是功耗大。------------------------------------------------------------------------------2.3 CMOS:Complementary Metal Oxide Semiconductor PMOS+NMOS。 Vcc:5V;VOH>=4.45V;VOL<=0.5V;VIH>=3.5V;VIL<=1.5V。 相对TTL有了更大的噪声容限,输入阻抗远大于TTL输入阻抗。对应3.3V LVTTL,出现了LVCMOS,可以与3.3V的LVTTL直接相互驱动。 3.3V LVCMOS:Vcc:3.3V;VOH>=3.2V;VOL<=0.1V;VIH>=2.0V;VIL<=0.7V。 2.5V LVCMOS:Vcc:2.5V;VOH>=2V;VOL<=0.1V;VIH>=1.7V;VIL<=0.7V。 CMOS使用注意:CMOS结构内部寄生有可控硅结构,当输入或输入管脚高于VCC一定值(比如一些芯片是0.7V)时,电流足够大的话,可能引起闩锁效应,导致芯片的烧毁。------------------------------------------------------------------------------2.4 ECL:Emitter Coupled Logic 发射极耦合逻辑电路(差分结构) Vcc=0V;Vee: -5.2V;VOH=-0.88V;VOL=-1.72V;VIH=-1.24V;VIL=-1.36V。 特点:速度快,驱动能力强,噪声小,很容易达到几百M的应用。但是功耗大,需要负电源。为简化电源,出现了PECL(ECL结构,改用正电压供电)和LVPECL。 PECL:Pseudo/Positive ECL Vcc=5V;VOH=4.12V;VOL=3.28V;VIH=3.78V;VIL=3.64VLVPELC:Low Voltage PECL Vcc=3.3V;VOH=2.42V;VOL=1.58V;VIH=2.06V;VIL=1.94VECL、PECL、LVPECL使用注意:不同电平不能直接驱动。中间可用交流耦合、电阻网络或专用芯片进行转换。以上三种均为射随输出结构,必须有电阻拉到一个直流偏置电压。(如多用于时钟的LVPECL:直流匹配时用130欧上拉,同时用82欧下拉;交流匹配时用82欧上拉,同时用130欧下拉。但两种方式工作后直流电平都在1.95V左右。) ------------------------------------------------------------------------------前面的电平标准摆幅都比较大,为降低电磁辐射,同时提高开关速度又推出LVDS电平标准。 2.5 LVDS:Low Voltage Differential Signaling 差分对输入输出LVDS是一种低功耗、低误码率、低串扰和低辐射的差分信号技术,这种传输技术可以达到155Mbps以上,LVDS技术的核心是采用极低的电压摆幅高速差动传输数据,可以实现点对点或一点对多点的连接,其传输介质可以是铜质的PCB连线,也可以是平衡电缆 。LVDS 内部有一个恒流源3.5-4mA驱动一对差分信号线,在差分线上改变方向来表示0和1。通过外部的100欧匹配电阻(并在差分线上靠近接收端)转换为±350mV的差分电平。接收端的接收器本身为高直流输入阻抗,所以几乎全部的驱动电流都流经100Ω的终端匹配电阻,并在接收器输入端产生约350mv的电压。LVDS使用注意:可以达到600M以上,PCB要求较高,差分线要求严格等长,差最好不超过10mil(0.25mm)。100欧电阻离接收端距离不能超过500mil,最好控制在300mil以内。LVDS之所以成为目前高速I/O接口的首选信号形式来解决高速数据传输的限制,就是因为它在传输速度、功耗、抗噪声、EMI等方面具有优势。①高速传输能力。在ANS/EIA/EIA-64定义中的LVDS标准,理论极限速率为1.923Gbps,恒流源模式、低摆幅输出的工作模式决定着IVDS具有高速驱动能力。②低功耗特性。LVDS器件是用CMOS工艺实现的,而CMOS能够提供较低的静态功耗;当恒流源的驱动电流为3.5mA,负载(100Ω终端匹配)的功耗仅为1.225mW;LVDS的功耗是恒定的,不像CMOS收发器的动态功耗那样相对频率而上升。恒流源模式的驱动设计降低了系统功耗,并极大地降低了频率成分对功耗的影响。虽然当速率较低时,CMOS的功耗比LVDS小,但是随着频率的提高,CMOS的功耗将逐渐增加,最终需要消耗比LVDS更多的功率。通常,当频率等于200MSps时,LVDS和CMOS的功耗大致相同。③供电电压低。随着集成电路的发展和对更高数据速率的要求,低压供电成为急需。降低供电电压不仅减少了高密度集成电路的功率消耗,而且减少了芯片内部的散热压力,有助于提高集成度。LVDS的驱动器和接收器不依赖于特定的供电电压特性,这决定了它在这方面占据上峰。④较强的抗噪声能力。差分信号固有的优点就是噪声以共模的方式在一对差分线上耦合出现,并在接收器中相减,从而可消除噪声,所以LVDS具有较强的抗共模噪声能力。⑤有效地抑制电磁干扰。由于差分信号的极性相反,它们对外辐射的电磁场可以相互抵消,耦合得越紧密,泄放到外界的电磁能量就越少,即降低了EMI。⑥时序定位精确。由于差分信号的开关变化是位于两个信号的交点。而不像普通单端信号依靠高低两个阀值电压判断,因而受工艺,温度的影响小,能降低时序上的误差,有利于高速数字信号的有效传输。⑦适应地平面电压变化范围大。LVDS接收器可以承受至少士1V的驱动器与接收器之间的地的电压变化。由于IVDS驱动器典型的偏置电压为+1.2V,地的电压变化、驱动器的偏置电压以及轻度耦合到的噪声之和,在接收器的输入端,相对于驱动器的地是共模电压。当摆幅不超过400mV时,这个共模范围是+0.2V~+2.2V,进而,一般情况下,接收器的输入电压范围可在0V~+2.4V内变化。--------------------------------------------------------------------------2.6 CML(current Mode Logic)指电流模式逻辑CML:是内部做好匹配的一种电路,不需再进行匹配。三极管结构,也是差分线,速度能达到3G以上。只能点对点传输。 1.1、CML输出结构CML接口的输出电路形式是一个差分对,如图1所示。该差分对的集电极电阻为50Ω,输出信号的高低电平切换是通过共发射极差分对的开关控制的,差分对的发射极到地的恒流源典型值为16mA。当CML负载为50Ω上拉电阻时,并且差分对的输入端也为差分信号,所以差分对中的三极管同时只能导通一个,由于恒流源为16mA,所以在集电极电阻上的压降为0.4V,即单端CML输出信号的摆幅为Vcc~(Vcc-0.4V),其输出波形如图2(a)所示;在这种情况下,差分输出信号摆幅为800mV。当CML输出采用交流耦合至50Ω负载,即表现为在差分对中间连接一个100Ω电阻,同样,差分对中的三极管只能导通一个,所以导通时在集电极电阻上的压降为0.6V,不导通时在集电极上的压降为0.2V,最终波形如图2(b)所示;在这种情况下,差分输出信号摆幅同样为800mV。CML输入结构CML接口的输入电路就是一对射极跟随器后跟一个差分放大器,射极跟随器起到隔离,增加驱动能力的作用,上拉的50Ω电阻是为了保证与前级输出电路形成阻抗匹配。电路优点a)高速(>Gbit/s)CML电路输出晶体管工作在放大区域,这样导致CML信号比采用饱和状态操作的CMOS、LVDS信号拥有更快的开关速度;并且CML输出电路中的恒流源由于具有较小的开关噪声,信号的上升时间和下降时间小,因此CML理论极限速度可达10Gbit/s;图4为LVPECL/LVDS/CML三种逻辑电路功耗及速度比较示意图。图4 LVPECL/LVDS/CML功耗及速度比较示意图b)低功耗(差分输出信号摆幅约为800mV)。c)电路简单,几乎不需要外围器件。常应用于:XAUI(10Gbps以太网连接单元接口)、10G XFI接口(10Gbps以太网串行接口)。输出结构:CML的电源VCC一般取1.2V,输出端由一对三极管组成差动放大电路、两个三极管的发射极与GND之间串一个16mA的电流源,三极管的集电极与VCC之间串接50Ω电阻。CML的输出信号OUT+ 或OUT-其共模电平为VCC-0.2V,摆幅为400mV,因此差分对OUT+与OUT-的摆幅为800mVCML电平输入输出电平,国际标准组织尚无定论不同厂商的器件参数可能不一致;CML支持的数据速率高达10Gbps,极高速信号往往采用匹配方式简单的CML电平;------------------------------------------------------------------------------2.7 GTL(Gunning Transceiver Logic)GTL电平标准即冈宁收发器逻辑电平标准,是Xerox发明的一种高速总线电平标准,该标准需要差分放大输入buffer和漏极开路(高阻)输出buffer。GTL输入电路是一个电压比较器,输入电压同一个外部连接的参考电压进行比较,输入门限设计为精确的窗口电压,可以提高最大的抗噪性能。输出电路是一个漏极开路N通道器件,当电路关闭时输出电压被上拉到末端匹配电压VTT,当输出电路打开时,器件可以吸收40mA的电流,可以产生最大的输出电压0.4V。输出电阻为25欧姆,输入输出被设计为与VCC的电压独立,器件可以工作在5V、3.3V,甚至是2.5V的VCC电压。GTL和GTL+信号的参考电平Vref为信号上拉电平的2/3,这是同GTL电平的特点相关的,GTL信号的低电平一般为上拉电平的1/3左右,当GTL信号的参考电平设置为上拉电平的2/3时信号的高低电平有最大的抗噪冗余量,可以得到最佳的传输效果。现在很多厂家提供的GTL芯片的Vref都是可以通过外部进行调整,提供最佳的信号传输要求。同时因为GTL的输入阈值电平都很小,可以提供大的噪声容限,而小的输出电平提供的信号变化也很小。这些对信号的完整性有利。GTL+的信号的电平更高,有更大的驱动能力,一般对于重负载情况下使用GTL+的效果会更好一些。不连接VCCO的电路连接方式如下图所示。GTL:类似CMOS的一种结构,输入为比较器结构,比较器一端接参考电平,另一端接输入信号。1.2V电源供电。Vcc=1.2V;VOH>=1.1V;VOL<=0.4V;VIH>=0.85V;VIL<=0.75VPGTL/GTL+:Vcc=1.5V;VOH>=1.4V;VOL<=0.46V;VIH>=1.2V;VIL<=0.8V------------------------------------------------------------------------------2.8 PCI(Peripheral Componet Interconnect)PCI电平标准即外设器件互联电平标准,该标准支持33MHz和66MHz的总线应用,包括PCI-X、PCI-33、PCI-66等各类电平标准,该标准的输入输出供电电压(VCCO)为3.3V,不需要参考电压(VREF)和终端电压(VTT)。2.9 HSTL(High Speed Transceiver Logic)HSTL电平标准即高速收发器逻辑电平标准,是一种通用目的的高速总线电平标准,由IBM首先提出,包括HSTL_I、HSTL_II、HSTL_III、HSTL_IV、DIFF_HSTL_I、DIFF_HSTL_II、DIFF_HSTL_III、DIFF_HSTL_IV等诸多版本。其1.5V和1.8V的标准有四个等级,Xilinx V5系列支持所有等级的1.5V和1.8V的标准,并支持差分版本的等级I和等级II。HSTL Class I电平标准电路连接方式如下图所示。电气参数符号最小值典型值最大值VCCO(输入输出供电)1.4V1.5V1.6VVTT(终端电压)--0.5*VCCO--VREF(参考电压)0.68V0.75V0.90VHSTL是主要用于QDR存储器的一种电平标准:一般有VCCIO=1.8V和VCCIO=1.5V。和上面的GTL相似,输入为输入为比较器结构,比较器一端接参考电平(VCCIO/2),另一端接输入信号。对参考电平要求比较高(1%精度)。HSTL最主要用于高速存储器读写,传统的慢速存储器阻碍了高速处理器的运算操作。在中频区域(100~180MHz),可供选择的单端信号IO结构有:HSTL、GTL/GTL+、SSTL、LVTTL;在180MHz以上,HSTL是唯一可用的单端IO接口。QDR使用的就是HSTL电平标准JEDEC定义了四种驱动模式:Class I~IV,其区别仅在于输出电流的不同: • Class I:IOH≥8mA,IOL≥-8mA;并行终端负载 • Class II:IOH≥16mA,IOL≥-16mA;串行终端负载 • Class III:IOH≥8mA,IOL≥-24mA;并行终端负载 • Class IV:IOH≥8mA,IOL≥-48mA;并行终端负载 ------------------------------------------------------------------------------2.10 SSTL(Stub Series Termination Logic)SSTL分为SSTL_3(3.3V)、SSTL_2(2.5V)、SSTL_18(1.8V)、SSTL_15(1.5V)(对应的VREF=VTT分别为1.5V、1.25V、0.9V、0.75V),对应不同的供电电压,SSTL是传输线终端匹配的,因此SSTL具有输出阻抗和匹配方法的要求,这使其在高速信号传输时降低了EMI,改善了建立时间。SSTL的输入是一个差分比较电路,一端为输入,另一端为参考电压VREF。DDR使用的就是SSTL电平标准。STL与LVTTL驱动器没有太多的不同,但是输入缓冲却非常不同。SSTL输入是差分对,因此输入级提供较好的电压增益以及较稳定的阈值电压,这使得对小的输入电压摆幅具有比较高的可靠性。STL对于不同类型的驱动器有不同的参数。SSTL_3和SSTL_2定义了2类驱动器,以区别不同的终端匹配方案。SSTL_18没有明确的类型定义,但是,取决于终端环境,驱动器必须能够在输入缓冲处产生相应的电压摆幅。AC参数指的是一个阈值电压,当信号跨越这个阈值电压时,接收器状态一定会发生改变。只要输入保持在定义的DC阈值之上,接收器将维持逻辑状态不变。这有利于系统设计者对整个系统性能进行优化。SSTL主要用于DDR存储器。和HSTL基本相同。V¬¬CCIO=2.5V,输入为输入为比较器结构,比较器一端接参考电平1.25V,另一端接输入信号。对参考电平要求比较高(1%精度)。 HSTL和SSTL大多用在300M以下。 ------------------------------------------------------------------------------ RS232和RS485基本和大家比较熟了,只简单提一下: 2.11 RS232RS232 采用±12-15V供电,我们电脑后面的串口即为RS232标准。+12V表示0,-12V表示1。可以用MAX3232等专用芯片转换,也可以用两个三极管加一些外围电路进行反相和电压匹配。 ------------------------------------------------------------------------------2.12 RS485RS4是一种差分结构,相对RS232有更高的抗干扰能力。传输距离可以达到上千米。485接口电平:发送发送器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~-6V,是另一个逻辑状态。另外有一个信号地C,在RS485器件中,一般还有一个“使能”控制信号,“使能”信号用于控制“发送发送器”与传输线的切断和连接,当使能端起作用时,发送发送器处于高阻状态,称作“第三态”,它是有别于逻辑“1”和“0”的第三种状态。------------------------------------------------------------------------------2.13 TTL电平TTL电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑“1”,0V等价于逻辑“0”,这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。TTL电平信号对于计算机处理器控制的设备内部的数据传输是很理想的,首先计算机处理器控制的设备内部的数据传输对于电源的要求不高以及热损耗也较低,另外TTL电平信号直接与集成电路连接而不需要价格昂贵的线路驱动器以及接收器电路;再者,计算机处理器控制的设备内部的数据传输是在高速下进行的,而TTL接口的操作恰能满足这个要求。TTL型通信大多数情况下,是采用并行数据传输方式,而并行数据传输对于超过10英尺的距离就不适合了。这是由于可靠性和成本两面的原因。因为在并行接口中存在着偏相和不对称的问题,这些问题对可靠性均有影响。 TTL电路不使用的输入端悬空为高电平。输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。------------------------------------------------------------------------------2.`4 CMOS电平:1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪声容限。 CMOS电路输出高电平约为0.9Vcc,而输出低电平约为 0.1Vcc。CMOS电路不使用的输入端不能悬空,会造成逻辑混乱。另外,CMOS集成电路电源电压可以在较大范围内变化,因而对电源的要求不像TTL集成电路那样严格。TTL和CMOS电平转换电路因为TTL和COMS的高低电平的值不一样(ttl 5v<==>cmos 3.3v),所以互相连接时需要电平的转换:就是用两个电阻对电平分压,没有什么高深的东西。------------------------------------------------------------------------------2.15 OC门,又称集电极开路与非门门电路,Open Collector(Open Drain)实际使用中,有时需要两个或两个以上与非门的输出端连接在同一条导线上,将这些与非门上的数据(状态电平)用同一条导线输送出去。因此,需要一种新的与非门电路--OC门来实现“线与逻辑”。OC门主要用于3个方面:(a)实现与或非逻辑,用做电平转换,用做驱动器。由于OC门电路的输出管的集电极悬空,使用时需外接一个上拉电阻Rp到电源VCC。OC门使用上拉电阻以输出高电平,此外为了加大输出引脚的驱动能力,上拉电阻阻值的选择原则,从降低功耗及芯片的灌电流能力考虑应当足够大;从确保足够的驱动电流考虑应当足够小。(b)线与逻辑,即两个输出端(包括两个以上)直接互连就可以实现“AND”的逻辑功能。在总线传输等实际应用中需要多个门的输出端并联连接使用,而一般TTL门输出端并不能直接并接使用,否则这些门的输出管之间由于低阻抗形成很大的短路电流(灌电流),而烧坏器件。在硬件上,可用OC门或三态门(ST门)来实现。用OC门实现线与,应同时在输出端口应加一个上拉电阻。(c)三态门(ST门)主要用在应用于多个门输出共享数据总线,为避免多个门输出同时占用数据总线,这些门的使能信号(EN)中只允许有一个为有效电平(如高电平),由于三态门的输出是推拉式的低阻输出,且不需接上拉(负载)电阻,所以开关速度比OC门快,常用三态门作为输出缓冲器。------------------------------------------------------------------------------2.16 OD门,即漏极开路门电路open-drain必须外界上拉电阻和电源才能将开关电平作为高低电平用。否则它一般只作为开关大电压和大电流负载,所以又叫做驱动门电路。开漏形式的电路有以下几个特点:(a)利用外部电路的驱动能力,减少IC内部的驱动。或驱动比芯片电源电压高的负载.(b)可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。如果作为图腾输出必须接上拉电阻。接容性负载时,下降延是芯片内的晶体管,是有源驱动,速度较快;上升是无源的外接电阻,速度慢。如果要求速度高电阻选择要小,功耗会大。所以负载电阻的选择要兼顾功耗和速度。(c)可以利用改变上拉电源的电压,改变传输电平。例如加上上拉电阻就可以提供TTL/CMOS电平输出等。(d)开漏Pin不连接外部的上拉电阻,则只能输出低电平。一般来说,开漏是用来连接不同电平的器件,匹配电平用的。(e)正常的CMOS输出级是上、下两个管子,把上面的管子去掉就是OPEN-DRAIN了。这种输出的主要目的有两个:电平转换和线与。(f)由于漏级开路,所以后级电路必须接一上拉电阻,上拉电阻的电源电压就可以决定输出电平。这样你就可以进行任意电平的转换了。(g)线与功能主要用于有多个电路对同一信号进行拉低操作的场合,如果本电路不想拉低,就输出高电平,因为OPEN-DRAIN上面的管子被拿掉,高电平是靠外接的上拉电阻实现的。(而正常的CMOS输出级,如果出现一个输出为高另外一个为低时,等于电源短路。)(h)OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。------------------------------------------------------------------------------TTL和COMS电路比较1)TTL电路是电流控制器件,而coms电路是电压控制器件。2)TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。COMS电路的速度慢,传输延迟时间长(25-50ns),但功耗低。COMS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热,这是正常现象。3)COMS电路的锁定效应:COMS电路由于输入太大的电流,内部的电流急剧增大,除非切断电源,电流一直在增大。这种效应就是锁定效应。当产生锁定效应时,COMS的内部电流能达到40mA以上,很容易烧毁芯片。TTL和CMOS的驱动能力:TTL一般提供25mA的驱动能力,而CMOS一般提供10mA左右;TTL电路临界值:VOHmin = 2.4V VOLmax = 0.4VVIHmin = 2.0V VILmax = 0.8VCMOS电路临界值(电源电压为+5V)VOHmin = 4.99V VOLmax = 0.01VVIHmin = 3.5V VILmax = 1.5VTTL和CMOS的逻辑电平转换CMOS电平能驱动TTL电平TTL电平不能驱动CMOS电平,需加上拉电阻。防御措施: 1)在输入端和输出端加钳位电路,使输入和输出不超过不超过规定电压。2)芯片的电源输入端加去耦电路,防止VDD端出现瞬间的高压。3)在VDD和外电源之间加限流电阻,即使有大的电流也不让它进去。4)当系统由几个电源分别供电时,开关要按下列顺序:开启时,先开启COMS电路的电源,再开启输入信号和负载的电源;关闭时,先关闭输入信号和负载的电源,再关闭COMS电路的电源。COMS电路的使用注意事项1)COMS电路时电压控制器件,它的输入总抗很大,对干扰信号的捕捉能力很强。所以,不用的管脚不要悬空,要接上拉电阻或者下拉电阻,给它一个恒定的电平。2)输入端接低内阻的信号源时,要在输入端和信号源之间要串联限流电阻,使输入的电流限制在1mA之内。3)当接长信号传输线时,在COMS电路端接匹配电阻。4)当输入端接大电容时,应该在输入端和电容间接保护电阻。电阻值为R=V0/1mA.V0是外界电容上的电压。5)COMS的输入电流超过1mA,就有可能烧坏COMS。TTL门电路中输入端负载特性(输入端带电阻特殊情况的处理)1)悬空时相当于输入端接高电平。因为这时可以看作是输入端接一个无穷大的电阻。2)在门电路输入端串联10K电阻后再输入低电平,输入端出呈现的是高电平而不是低电平。因为由TTL门电路的输入端负载特性可知,只有在输入端接的串联电阻小于910欧时,它输入来的低电平信号才能被门电路识别出来,串联电阻再大的话输入端就一直呈现高电平。这个一定要注意。COMS门电路就不用考虑这些了。TTL电路有集电极开路OC门,MOS管也有和集电极对应的漏极开路的OD门,它的输出就叫做开漏输出。OC门在截止时有漏电流输出,那就是漏电流,为什么有漏电流呢?那是因为当三极管截止的时候,它的基极电流约等于0,但是并不是真正的为0,经过三极管的集电极的电流也就不是真正的 0,而是约0。而这个就是漏电流。开漏输出:OC门的输出就是开漏输出;OD门的输出也是开漏输出。它可以吸收很大的电流,但是不能向外输出的电流。所以,为了能输入和输出电流,它使用的时候要跟电源和上拉电阻一齐用。OD门一般作为输出缓冲/驱动器、电平转换器以及满足吸收大负载电流的需要。------------------------------------------------------------------------------三 、Q&A3.1. USB信号线是用的什么电平?USB信号线是用的什么电平,能否直接兼容TTL或者CMOS电平?USB电源线是否能直接与5V单片机电源引脚相连信号线对于USB2.0,D+比D-大200mV时为1.D-比D+大200mV时为0,与TTL电平不兼容,与单片机通讯时需要电平转换。--------------------------------------------------------------------------来源:不懂幽默的秦二

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈