




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SPI IIC USART 区别2009-03-26 11:05第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;第四,看看牛人们的意见吧! wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。 quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。SPI总线 -串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口。Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI总线是一种三线同步总线,因其硬件功能很强,所以,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。 IIC总线是荷兰飞利浦PHILIPS开发的一种高效,实用,可靠的双向二线制(也有3线制,家电很少用)串行数据传输结构总线,该总线使各电路分割成各种功能的模块,并进行软件化设计,各个功能模块电路内都有集成一个IIC总线接口电路,因此都可以挂接在总线上,很好的解决了众多功能IC与CPU之间的输入输出接口,使其连接方式变得十分简单。 IIC总线上的器件分为主控器和被控器两大类它们之间只要在正常工作,总有一个IIC在总线上发送信息数据(一般是在开机后cpu首先像各个功能模块电路发出自检信号,得到各个功能模块电路正常反馈的数据信号后机器才进入正常工作状态)。IIC,SMBus的区别確實,在一般運用下,I2C Bus與SMBus沒有太大的差別,從實體接線上看也幾乎無差異,甚至兩者直接相連多半也能相安無誤地正確互通並運作。不過若真要仔細探究,其實還是有諸多不同,如果電子設計工程師不能明辨兩者的真實差異,那麼在日後的開發設計的驗證除錯階段時必然會產生困擾,為此本文將從各層面來說明I2C Bus與SMBus的細微區別,期望能為各位帶來些許助益。附註:關於I2C Bus的基礎,可參考筆者之前的I2C介面之線路實務,網址為:.tw/n/article.asp?id=304799064272FED148256FDC00481D68或參考Philips半導體網站的I2C官方規格:/acrobat/literature/9398/39340011.pdf運用背景、版本演進之別首先從規格的制訂背景開始,I2C是在設計電視應用時所發創的介面,首版於1992年發表;而SMBus(System Management Bus)則是Intel與Duracell(金頂電池)共同制訂筆記型電腦所用的智慧型電池(Smart Battery)時所發創的介面,首版於1995年發表,不過SMBus文件中也提及,SMBus確實是參考自I2C,並以I2C為基礎所衍生成。I2C起源於電視設計,但之後朝通用路線發展,各種電子設計都有機會用到I2C;而SMBus則在之後為PC所制訂的先進組態與電源管理介面(Advanced Configuration & Power Interface;ACPI)規範中成為基礎的管理訊息傳遞介面、控制傳遞介面。雖然I2C與SMBus先後制訂時間不同,但都在2000年左右進入成熟化改版,I2C的過程改版以加速為主要訴求,而SMBus以更切合Smart Battery及ACPI的需求為多。I2C三次主要改版:1992年v1.01998年v2.02000年v2.1SMBus三次主要改版:1995年v1.01998年v1.12000年v2.0 圖說:MAXIM公司的MAX6641晶片,具有溫度監督及風扇控制功能(用PWM脈寬調變方式控制風扇轉速),圖中腳位7、8即是SMBus(圈處),其他裝置可透過SMBus與此晶片溝通,取得溫度及相關資訊,或進行命令操控。(圖MAXIM-IC.com)電氣特性差異:邏輯位準定義、限流、相關限制I2C的Hi/Lo邏輯準位有兩種認定法:相對認定與絕對認定,相對認定是依據Vdd的電壓來決定,Hi為0.7 Vdd,Lo為0.3 Vdd,絕對認定則與TTL準位認定相同,直接指定Hi/Li電壓,Hi為3.0V,Lo為1.5V。相對的SMBus只有絕對認定,且準位與I2C有異,Hi為2.1V,Lo為0.8V,與I2C不全然吻合但也算部分交集。不過,SMBus後來也增訂一套更低電壓的準位認定,Hi為1.4V,Lo為0.6V,這是為了讓運用SMBus的裝置能更省成本而有的作法。瞭解電壓後再來是電流,由於SMBus一起頭就是運用在筆記型電腦內,所以低用電的表現優於I2C,只需100uA就能維持工作,I2C卻要到3mA,同樣的低用電特性也反應在漏電流(Leakage Current)的要求上,I2C最大的漏電流為10uA,SMBus為1uA,但是1uA似乎過度嚴苛,使運用SMBus的裝置在驗證測試時耗費過多的成本與心力,因此之後的SMBus 1.1版放寬了漏電流上限,最高可至5uA。再者是相關限制,I2C有線路電容的限制,SMBus卻沒有,但也有相類似的配套規範,即是準位下拉時的電流限制,當SMBus的開集極接腳導通其閘極而使線路接地時,流經接地的電流不得高於350uA,另外拉升電流(即相同的開集極接腳開路時)也一樣有規範,最小不低於100uA,最高也是不破350uA。既然對電流有限制,那麼也可容易地推斷對提升電阻的阻值之範圍要求,I2C在5V Vdd時當大於1.6k ohm,在3V Vdd時當大於1k ohm,類似的SMBus於5V Vdd時當大於14k ohm,3V Vdd時當大於8.5k ohm,不過這個定義並非牢不可破,就一般實務而言,在SMBus上也可用2.4k3.9k ohm範疇的阻值。附註:I2C的時脈線稱SCK或SCL,資料線稱SDA。SMBus的時脈線稱SMBCLK,資料線稱SMBDAT。 圖說:I2C與SMBus在邏輯位準的電壓定義不盡相同,基本上I2C的定義較為寬裕、彈性,而SMBus則更專注在省電方面的要求。(圖MAXIM-IC.com)時序差別與考驗實體層面的空間要求完後,再來就是實體層面的時間,即是時序(Timing)方面的差別。先以運作頻率來說,I2C此方面相當寬裕,最低頻可至0Hz(直流狀態,等於時間暫停),高可至100kHz(Standard Mode)、400kHz(Fast Mode)、乃至3.4MHz(High Speed Mode),相對的SMBus就很拘限,最慢不慢於10kHz,最快不快於100kHz。很明顯的,I2C與SMBus的交集運作頻率即是10kHz100kHz間。用於筆記型電腦的電池管理或PC組態管理、用電管理的SMBus,很容易體會不需要更高運作頻率的理由,只要傳遞小資料量的監督訊息、控制指令本就不用過於高速,而朝向廣遍運用的I2C自然希望用更高的傳輸以因應各種可能的需求。然而大家可能會疑惑,為何SMBus有最低速的要求?何不放寬到與I2C相同的毫無最低速限呢?SMBus一定要維持10kHz以上的運作時脈,主要也是為了管理監控,另一個用意是只要在保持一定傳速運作的情況下加入參數,就可輕鬆獲知匯流排目前是否處於閒置(Idle)中,省去逐一偵測傳輸過程中的停斷(STOP)信號,或持續保有停斷偵測並輔以額外參數偵測,如此對匯流排閒置後的再取用會更有效快速。傳速要求之後還有資料持留時間(Data Hold Time)的要求,SMBus規定SMBCLK線路的準位下降後,SMBDAT上的資料必須持續保留300nS,但I2C卻沒有對此有相同的強制要求。類似的,SMBus對介面被重置(Reset)後的恢復時間(Timeout)也有要求,一般而言是35mS,I2C這方面亦無約束,可以任意延長時間。相同的SMBus也要求無論是在主控端(Master)或受控端(Slave),其時脈處於Lo準位時的最長持續時間不得超越限制,以免因為長時間處在Lo準位,而致收發兩端時序脫軌(失去同步,造成後續誤動作)。還有,I2C與SMBus在準位的上升時間、下降時間等也有不同的細部要求,此點必要時也必須進行確認,或在驗證過程中稍加留意。 圖說:Smart Battery或ACPI的實現、監督、與操控,最底層都需要SMBus(圈處)作為後援,圖為簡易的多組式智慧型電池系統,圖中有Smart Battery A、B兩組電池。(圖SBS-F)已妥與未妥機制的強制性差別不單是電氣、時序有別,更高層次的協定機制也有不同。在I2C中,主控端要與受控端通訊前,會在匯流排上廣播受控端的位址資訊,每個受控端都會接收到位址資訊,但只有與該位址資訊相切合的受控端會在位址資訊發佈完後發出已妥的回應(Acknowledge;ACK),讓主控端知道對應的受控端確實已經備妥,可以進行通訊。但是,I2C並沒有強制規定受控端非要作出回應不可,也可以默不作聲,即便默不作聲,主控端還是會接續工作,開始進行資料傳遞及下達讀寫指令,如此的機制在一般運用中還是可行,但若是在一些即時(Real Time)性的應用上,任何的動作與機制都有一定的時限要求,這種可有可無式的回應法就會產生問題,可能會導致受控端無法接收資訊。相同的情形,在SMBus上是不允許受控端在接收位址資訊後卻不發出回應,每次都要回應,為何要強制回應?其實與SMBus的應用息息相關,SMBus上所連接的受控裝置有時是動態加入、動態移除的,例如換裝一顆新電池,或筆記型電腦接上船塢埠等,如果接入的裝置已經改變卻不回應,則主控端的程式所掌握的並非是整體系統的最新組態,就會造成誤動作。類似的情形也適用於ACPI,PC機內機外經常有一些裝置可動態增入、移除,如機內風扇、外接印表機等,這些也一樣該強制對主控端廣發的位址資訊作出完整回應。位址動作方面有異,資料傳輸方面也有異。在I2C方面,Slave雖然對Master所發出的位址作出回應,但在後續的資料傳遞中,可能因某些事務必須先行處理、因應而無法持續原有的傳輸,這時候Slave就要對Master發出未妥的回應(Not Acknowledge;NACK),向Master表示Slave正為他務忙碌中。而SMBus方面,與I2C相同的,會以NACK的回訊向Master表達Slave尚未收妥傳遞的資訊,但是SMBus的Slave會在後續的每個Byte傳輸中都發出NACK回訊,這樣設計的原因是因為SMBus沒有其他可向Master要求重發(Resend)的表示法。更直接說就是:NACK機制是SMBus標準中的強制必備,任何的訊息傳遞都很重要,不允許有漏失。 圖說:I2C在完成一段位址或資料資訊的傳輸後,受接端可發出訊息收妥(ACK)、未妥(NACK)的回應,SMBus也具相同的機制,但由於應用之故有更強制的回應要求。(圖Semiconductors.P)傳輸協定的子集、超集互動知會機制上有強制與否的差別,協定方面也是。SMBus的通訊協定與協定中所用的訊息格式,其實只是取自I2C規範中,對於資料傳輸格式定義中的子集合(Subset)而已。所以,如果將I2C與SMBus交混連接,則I2C裝置在存取SMBus裝置時,只能使用SMBus範疇的協定與格式,若使用I2C的標準存取方式反而無法正確存取。另外,I2C規範中有一種稱為General Call的廣呼方式,當發出0000000的位址資訊後,所有I2C上的Slave裝置統統要對此作出反應,此機制適合用在Master要對所有的Slave進行廣播性訊息更新與溝通上,是一種總體、批次的運作方式。SMBus一樣有General Call機制,但在此之外SMBus還多了一種特用的ALERT(警訊)機制,不過這必須於時脈線與資料線外再追加一條線(稱為:SMBSUS)才能實現,ALERT雖名為警訊但其實是中斷(Interrupt)的用意,Slave可以將SMBSUS線路的電位拉低(ALERT#,#表示低準位有效),這時就等於向Master發出一個中斷警訊,要求Master儘速為某一Slave提供傳輸服務。Master要回應這個服務要求,是透過I2C/SMBus的時脈線與資料線來通訊,但要如何知道此次的通訊只是Master對Slave的一般性通訊?還是特別針對Slave的中斷需求而有的服務回應?這主要是透過Master發出的位址資訊來區別,若為回應中斷的服務,位址資訊必然是0001100,當Slave接收到0001100的位址資訊,就知道這是Master特為中斷而提供的服務通訊。因此,韌體工程師須留心,規劃時必須讓所有的Slave都不能佔用0001100這個位址,以供AL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际贸易大客户货物进出口代理合同
- 交通运输机械伤害事故调查报告及责任认定合同
- 2025公务员社区面试题及答案
- 校验码标准化研究-洞察及研究
- 音乐专业加试题库及答案
- 戏曲专业考博试题及答案
- 文书专业面试题目及答案
- 胆囊结石患者的护理
- 春的教学课件
- 员工团队精神培训
- 电梯安全总监培训记录课件
- 2025四川省水电投资经营集团有限公司所属电力公司员工招聘6人备考模拟试题及答案解析
- 房地产中介居间服务合同5篇
- 童话中的英雄勇敢的小矮人作文10篇范文
- 人员外出安全培训内容课件
- 小学美术剪纸社团教学活动计划
- 2025年法官入额遴选政治理论真题及答案
- 护理系毕业论文2000
- 空调科安全培训课件
- 2025征兵考试题库与答案
- 2025-2026学年浙教版小学劳动技术一年级上册教学计划及进度表
评论
0/150
提交评论