常见总线类型

谈总线之前,首先应该明白总线是什么?度娘的完整定义是:总线是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类。


其实,小编觉得,总线就是是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道。工程师为了简化硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线。另外就是采用总线结构便于部件和设备的扩充,尤其制定了统一的总线标准则容易使不同设备间实现互连。


总线分类:

1、总线按功能和规范可分为五大类型:数据总线、地址总线、控制总线、扩展总线及局部总线。


数据总线、地址总线和控制总线也统称为系统总线,即通常意义上所说的总线。常见的数据总线为ISA、EISA、VESA、PCI等。


地址总线:是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同,地址总线的位数决定了CPU可直接寻址的内存空间大小。


控制总线:用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和I/O接口电路的;也有是其它部件反馈给CPU的,比如:中断申请信号、复位信号、总线请求信号、设备就绪信号等。


2、按照传输数据的方式划分,可以分为串行总线和并行总线。串行总线中,二进制数据逐位通过一根数据线发送到目的器件;并行总线的数据线通常超过2根。常见的串行总线有SPI、I2C、USB及RS232等。


3、按照时钟信号是否独立,可以分为同步总线和异步总线。同步总线的时钟信号独立于数据,而异步总线的时钟信号是从数据中提取出来的。SPI、I2C是同步串行总线,RS232采用异步串行总线。


4、微机中总线一般有内部总线、系统总线和外部总线。内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连;而系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连;外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连。


那么多分类,小编也只能选择一种介绍了,就选择内部总线、系统总线和外部总线咯。


内部总线


I2C总线:I2C(Inter-IC)总线10多年前由Philips公司推出,是近年来在微电子通信控制领域广泛采用的一种新型总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。


SCI总线:串行通信接口SCI也是由Motorola公司推出的。它是一种通用异步通信接口UART,与MCS-51的异步通信功能基本相同。


IIS:I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。I2S有3个主要信号:1.串行时钟SCLK,也叫位时钟,即对应数字音频的每一位数据,SCLK有1个脉冲。2.帧时钟LRCK,用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。3.串行数据SDATA,就是用二进制补码表示的音频数据。有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock)。


SPI:SPI(Serial Peripheral Interface:串行外设接口);SPI是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:(1)MOSI – 主器件数据输出,从器件数据输入 (2)MISO – 主器件数据输入,从器件数据输出 (3)SCLK – 时钟信号,由主器件产生(4)/SS – 从器件使能信号,由主器件控制。


UART:UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)。将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区。常用TXD,RXD,/RTS,/CTS。


JTAG:JTAG (Joint Test Action Group 联合测试行动小组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。测试复位信号(TRST,一般以低电平有效)一般作为可选的第五个端口信号。一个含有JTAGDebug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。


CAN:CAN全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之 间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。


SDIO:SDIO是SD型的扩展接口,除了可以接SD卡外,还可以接支持SDIO接口的设备,插口的用途不止是插存储卡。支持 SDIO接口的PDA,笔记本电脑等都可以连接象GPS接收器,Wi-Fi或蓝牙适配器,调制解调器,局域网适配器,条型码读取器,FM无线电,电视接收 器,射频身份认证读取器,或者数码相机等等采用SD标准接口的设备。


GPIO:GPIO (General Purpose Input Output 通用输入/输出)或总线扩展器利用工业标准I²C、SMBus™或SPI™接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统 需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。


系统总线


ISA总线:ISA(industrialstandardarchitecture)总线标准是IBM公司1984年为推出PC/AT机而建立的系统总线标准,所以也叫AT总线。它是对XT总线的扩展,以适应8/16位数据总线要求。它在80286至80486时代应用非常广泛,以至于现在奔腾机中还保留有ISA总线插槽。ISA总线有98只引脚。


EISA总线:EISA总线是1988年由Compaq等9家公司联合推出的总线标准。它是在ISA总线的基础上使用双层插座,在原来ISA总线的98条信号线上又增加了98条信号线,也就是在两条ISA信号线之间添加一条EISA信号线。在实用中,EISA总线完全兼容ISA总线信号。


VESA总线:VESA(videoelectronicsstandardassociation)总线是1992年由60家附件卡制造商联合推出的一种局部总线,简称为VL(VESAlocalbus)总线。它的推出为微机系统总线体系结构的革新奠定了基础。该总线系统考虑到CPU与主存和Cache的直接相连,通常把这部分总线称为CPU总线或主总线,其他设备通过VL总线与CPU总线相连,所以VL总线被称为局部总线。它定义了32位数据线,且可通过扩展槽扩展到64位,使用33MHz时钟频率,最大传输率达132MB/s,可与CPU同步工作。是一种高速、高效的局部总线,可支持386SX、386DX、486SX、486DX及奔腾微处理器。


PCI总线:PCI(peripheralcomponentinterconnect)总线是当前最流行的总线之一,它是由Intel公司推出的一种局部总线。它定义了32位数据总线,且可扩展为64位。PCI总线主板插槽的体积比原ISA总线插槽还小,其功能比VESA、ISA有极大的改善,支持突发读写操作,最大传输速率可达132MB/s,可同时支持多组外围设备。PCI局部总线不能兼容现有的ISA、EISA、MCA(microchannelarchitecture)总线,但它不受制于处理器,是基于奔腾等新一代微处理器而发展的总线。


外部总线


RS-232-C总线:RS-232-C是美国电子工业协会EIA制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS-232-C总线标准设有25条信号线,包括一个主通道和一个辅助通道,在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。RS-232-C标准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。RS-232-C标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。


RS-485总线:在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS-485可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。


IEEE-488总线:IEEE-488总线用来连接系统,如微计算机、数字电压表、数码显示器等设备及其他仪器仪表均可用IEEE-488总线装配起来。它按照位并行、字节串行双向异步方式传输信号,连接方式为总线方式,仪器设备直接并联于总线上而不需中介单元,但总线上最多可连接15台设备。最大传输距离为20米,信号传输速度一般为500KB/s,最大传输速度为1MB/s。


USB总线:通用串行总线USB是由Intel、Compaq、Digital、IBM、Microsoft、NEC、NorthernTelecom等7家世界著名的计算机和通信公司共同推出的一种新型接口标准。它基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。它可以为外设提供电源,而不像普通的使用串、并口的设备需要单独的供电系统。


另外,汽车电子最近这么火,小编想谈一下汽车网络中的LIN与CAN总线:


早在1983年,博世公司开始开发控制器局域网(CAN)总线,并且在1986年正式发布相关协议。目前有多种不同汽车总线标准,但是CAN仍然是最流行的标准。在CAN网络中,所有节点(源于不同的ECU)都担当主节点(即,不存在主从拓扑结构),而且并不分配具体地址。而是由消息携带标识符。


在给定时间,多个节点可以同时向CAN总线发送数据。然后由消息标识符帮助确定消息的优先级。最高优先级的消息会使CAN总线进入显性状态,而所有其他节点会停止发送。这些节点实际上是收发器,除发送消息之外,其可以根据特定功能从总线查找特定消息。因此,CAN总线所连接的不同节点之间会出现信息流。


由于CAN会进行填充错误、误码、校验和错误、误帧以及应答错误等多项错误检查, 因此具有高可靠性。CAN支持高达1Mbps的数据传输速率,从而成为连接汽车关键功能ECU(如:变速箱、温度传感器等)的默认选择。


但汽车为什么选择LIN?


汽车电子的作用并非仅仅局限于这些关键单元。车身电子市场多年来一直在增长。典型车身控制应用包括座椅、车窗、智能雨刷以及汽车空调传感器等。对车身电子的关键要求是确保汽车更舒适、更安全。尽管这些系统可能不要求像关键ECU那样的高安全性,但是它们仍然需要一定的汽车网络通信标准。


LIN与CAN对比:


实现CAN比实现LIN的成本高。导致CAN成本更高的因素包括:

- CAN网络中的每个节点都需要时钟发生器或晶体;

- CAN的芯片级实现起来更复杂;

- 采用双线传输。


最重要的是,整个昂贵的架构对于不需要高可靠性和高数据速率的应用来说过于奢侈。

<think>好的,我现在要回答用户的问题:“是总线类型Guid吗?”首先,我需要理解用户的问题。用户之前询问了关于“没有设备类GUID”的问题,现在可能是在进一步探讨GUID的分类,特别是总线类型GUID和设备类GUID的区别。 首先,我应该明确总线类型GUID和设备类GUID的不同。总线类型GUID用于标识设备所连接的总线类型,比如PCI、USB等,而设备类GUID则是用来分类设备的功能类型,如网络适配器、磁盘驱动器等。用户可能混淆了这两个概念,或者想确认两者是否相关。 接下来,我需要查阅相关文档或资料,确保自己对这两个GUID的理解正确。例如,在Windows驱动开发中,设备安装时会使用到不同的GUID来标识总线和设备类别总线类型GUID通常由系统定义,而设备类GUID则可能在INF文件中指定。 然后,我应该组织回答的结构。首先明确回答用户的问题:总线类型GUID和设备类GUID是不同的概念。接着分别解释两者的定义、作用和常见示例,帮助用户区分。此外,用户可能需要知道如何查看或处理这些GUID,所以需要提供一些实际的命令或代码示例,比如使用PowerShell或注册表查看的方法。 同时,我需要考虑用户可能的实际需求。用户可能遇到驱动安装或设备识别的问题,想通过理解不同类型的GUID来解决问题。因此,在解释概念的同时,提供一些诊断或解决问题的步骤会更有帮助。 还要注意使用中文,保持口语化,避免技术术语堆砌,但又要准确。需要检查之前的回复是否已经涉及相关知识点,避免重复,同时补充新信息。例如,之前提到设备类GUID缺失的问题,现在需要扩展总线类型GUID的内容。 最后,确保回答符合格式要求:使用Markdown,分点说明,代码块和示例正确,以及使用适当的颜色和图表。需要验证所有命令和注册表路径是否正确,避免误导用户。例如,检查Get-PnpDevice命令的参数是否正确,注册表路径是否存在。 总结思考步骤:确认问题意图,区分两个GUID,收集资料验证,组织回答结构,提供实用示例,考虑用户实际需求,确保准确性和可读性,遵循格式规范。</think>$\textcolor{red}{【总线类型GUID深度解析】}$ 总线类型GUID与设备类GUID是Windows设备管理中的两个核心标识符,二者有本质区别: $\textcolor{blue}{▌ 核心对比}$ ```mermaid graph LR A[总线类型GUID] -->|标识物理连接| B["PCI: {C8EBDFB0-B510-11D0-80E5-00A0C92542E3}"] C[设备类GUID] -->|标识功能类型| D["磁盘驱动器: {4d36e967-e325-11ce-bfc1-08002be10318}"] ``` $\textcolor{blue}{▌ 总线类型GUID特性}$ 1. **物理拓扑标识** - 由ACPI/总线驱动生成 - 决定设备在设备树中的位置 - 示例: ```c // WDK定义的典型总线GUID GUID_BUS_TYPE_PCI // PCI总线 GUID_BUS_TYPE_USB // USB总线 GUID_BUS_TYPE_ISAPNP // ISA即插即用总线 ``` 2. **系统预定义值** - 存储在`%SystemRoot%\inf\machine.inf` - 不可被第三方驱动修改 3. **设备树构建依据** ```powershell # 查看设备总线类型 Get-PnpDeviceProperty -InstanceID "ACPI\VEN_XXX&DEV_XXXX" -KeyName DEVPKEY_Device_BusTypeGuid ``` $\textcolor{orange}{⚠️ 混淆风险}$ 当同时出现总线GUID和设备类GUID问题时: ```diff - 错误处理:尝试修改总线GUID来修复驱动问题 + 正确做法: 1. 检查设备物理连接状态 2. 验证总线驱动是否正常 (devmgmt.msc中总线控制器) 3. 使用总线查看工具: USBView.exe (Windows SDK工具) ``` $\textcolor{green}{✔ 开发注意事项}$ ```inf ; 在INF文件中正确关联总线类型 [DDInstall.HW] AddReg = BusSpecific_AddReg [BusSpecific_AddReg] HKR,,"BusTypeGuid",0x00000000,"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" ``` $\textcolor{blue}{▌ 诊断流程图}$ ```mermaid graph TD A[设备异常] --> B{是否存在总线GUID} B -->|是| C[检查设备类GUID] B -->|否| D[物理层检测] D --> E{总线供电} E -->|正常| F[重建ACPI命名空间] E -->|异常| G[更换物理接口] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值