1. 程式人生 > >I2C介面與SPI和UART介面詳解

I2C介面與SPI和UART介面詳解

二、序列和並行、同步和非同步的區別:

序列通訊:利用一條資料線將資料一位一位的順序傳送,特點是通訊線路簡單,成本

低,適合於長距離傳送

並行通訊:利用多條資料線將資料的各位同時傳送,特點是傳輸速度快,適合於短距離

傳送

非同步:在一個字元的傳輸時間範圍內保持同步即可

同步:在資料傳輸過程中,需要一根時鐘線同步,IIC匯流排,SPI匯流排

三、I2C介面與序列介面的區別:

 
I2C   兩線式序列匯流排

UART 通用序列非同步收發器    串列埠

     UART是序列非同步通訊介面,它包括RS232、RS499、RS423、RS422和RS485等介面規範和

 標準規範,即UART序列非同步通訊口的總稱。

有很大方式的不同。譬如i2c是帶地址的通訊,支援多方通訊,串列埠就搞不定;兩者通訊的機制原理也不同;另

外速度上I2C相對會快一些,好像i2c是philips發明的,目的就是解決速度的瓶頸。網上有很多資料,自己搜一下吧!

1、I2C介面是"器件間"介面,是在一塊板子之內資料的,RS232序列介面是"裝置間"介面,更多的是用於兩臺裝置之間傳        輸資料。



2、從傳輸資料的距離來說,應該是RS232傳輸的距離較遠,但二者具體差別多少,我沒有做過專門的試驗。



3、串列埠是一根線傳送資料,一根線接收資料


      I2C是一根線是時鐘線,一根線是資料線,資料線是雙向的,可以接收,也可以傳送。


 
4、協議不同,波特率不同

     序列介面,像微控制器,時鐘由內部MCU提供,而I2C介面要由器件來決定,不能太快。


 
5、I2C是同步序列傳輸,RS232(或稱UART,通用非同步收發器)是非同步序列傳輸。



6、同步方式必須有一根時鐘線連線傳輸的兩端,i2c裡的scl就是這根時鐘線。因為同步方式不用花費額外的開銷對其       資料,所以其傳輸速率一般比非同步方式高。

四、匯流排介面 UART I2C SPI USB的異同點


  
1、UART 通用非同步序列口,速率不快,可全雙工,結構上一般由波特率產生器、UART傳送器、UART接收器組成,

硬體上兩線,一收一發。

2、SPI 高速同步序列口,高速,可全雙工,收發獨立,同步介面,可實現多個SPI裝置互聯,硬體4條線。

 
3、I2C 雙向、兩線、序列、多主控介面標準。速率不快,半雙工,同步介面,具有匯流排仲裁機制,非常適合器件間

近距離經常性資料通訊,可實現裝置組網。

 
4、USB 通用序列匯流排,高速,半雙工,由主機、hub、裝置組成。裝置可以與下級hub相連構成星型結構。

五、串列埠通訊:UART、SPI、I2C區別:



1、UART就是兩線,一根傳送一根接收,可以全雙工通訊,線數也比較少。資料是非同步傳輸的,對雙方的時序要求比

較嚴格,通訊速度也不是很快。在多機通訊上面用的最多。


2、SPI介面和上面UART相比,多了一條同步時鐘線,上面UART的缺點也就是它的優點了,對通訊雙方的時序要求不

嚴格不同裝置之間可以很容易結合,而且通訊速度非常快。一般用在產品內部元件之間的高速資料通訊上面,如大容

量儲存器等。


3、I2C介面也是兩線介面,它是兩根線之間通過複雜的邏輯關係傳輸資料的,通訊速度不高,程式寫起來也比較復

雜。一般微控制器系統裡主要用來和24C02等小容易儲存器連線。


SPI:高速同步序列口。3~4線介面,收發獨立、可同步進行


UART:通用非同步序列口。按照標準波特率完成雙向通訊,速度慢


SPI:一種序列傳輸方式,三線制,網上可找到其通訊協議和用法的3根線實現資料雙向傳輸序列外圍介面 

(Serial peripheral  Interface)




UART:通用非同步收發器

UART是用於控制計算機與序列裝置的晶片。有一點要注意的是,它提供了RS-232C資料終端裝置介面,這樣計

算機就可以和調變解調器或其它使用RS-232C介面的序列裝置通訊了。作為介面的一部分,UART還提供以下功能:

1、將由計算機內部傳送過來的並行資料轉換為輸出的序列資料流。

2、將計算機外部來的序列資料轉換為位元組,供計算機內部使用並行資料的器件使用。

3、在輸出的序列資料流中加入奇偶校驗位,並對從外部接收的資料流進行奇偶校驗。

4、在輸出資料流中加入啟停標記,並從接收資料流中刪除啟停標記。

5、處理由鍵盤或滑鼠發出的中斷訊號(鍵盤和鼠票也是序列裝置)。

6、處理由鍵盤或滑鼠發出的中斷訊號(鍵盤和鼠票也是序列裝置)。

7、可以處理計算機與外部序列裝置的同步管理問題。

8、有一些比較高檔的UART還提供輸入輸出資料的緩衝區,現在比較新的UART是16550,它可以在計算機需要處理

       資料前在其緩衝區記憶體儲16位元組資料,而通常的UART是8250。

9、現在如果您購買一個內建的調變解調器,此調變解調器內部通常就會有16550 UART。


I2C: 

能用於替代標準的並行匯流排,能連線的各種積體電路和功能模組。I2C是多主控匯流排,所以任何一個裝置都能像

主控器一樣工作,並控制匯流排。總線上每一個裝置都有一個獨一無二的地址,根據裝置它們自己的能力,它們可以作

為發射器或接收器工作。多路微控制器能在同一個I2C總線上共存。


I2C匯流排:
I2C匯流排最主要的優點是其簡單性和有效性。由於介面直接在元件之上,因此I2C匯流排佔用的空間非常小,減少了

電路板的空間和晶片管腳的數量,降低了互聯成本。匯流排的長度可高達25英尺,並且能夠以10Kbps的最大傳輸速率

支援40個元件。I2C匯流排的另一個優點是,它支援多主控(multimastering),其中任何能夠進行傳送和接收的裝置都

可以成為主匯流排。一個主控能夠控制訊號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。

UART:

單端,遠距離傳輸。大多數計算機包含兩個基於RS232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議;很

多GPIB相容的裝置也帶有RS-232口。同時,串列埠通訊協議也可以用於獲取遠端採集裝置的資料。串列埠通訊的概念非

常簡單,串列埠按位(bit)傳送和接收位元組。儘管比按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送

資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。比如IEEE488定義並行通行狀態時,規定裝置

線總常不得超過20米,並且任意兩個裝置間的長度不得超過2米;而對於串列埠而言,長度可達1200米。具體的適用範

圍就可多了,軍用,醫療...到處到能用。

第一個區別當然是名字:
     SPI(Serial Peripheral Interface:序列外設介面);
     I2C(INTER IC BUS:意為IC之間匯流排)
     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要少。

轉載自:https://blog.csdn.net/a746742897/article/details/52503298

相關推薦

I2C介面SPIUART介面

二、序列和並行、同步和非同步的區別:序列通訊:利用一條資料線將資料一位一位的順序傳送,特點是通訊線路簡單,成本低,適合於長距離傳送並行通訊:利用多條資料線將資料的各位同時傳送,特點是傳輸速度快,適合於短距離傳送非同步:在一個字元的傳輸時間範圍內保持同步即可同步:在資料傳輸過程中,需要一根時鐘線同步,IIC匯流

介面相關的設計模式(1):定製服務模式介面卡模式

在Java中我們通常把介面作為系統與外界互動的視窗,接下來我們來考慮以下問題: 如何設計介面? 當兩個系統之間介面不匹配時,如何處理? 但系統A無法便捷的引用系統B的介面的實現類例項時,如何處理? …… 為了解決以上問題,需要引入與介面相關的設計模式,接

Java8新特性,介面中的靜態方法預設方法

在此之前可以先看一下這個大佬寫的文章,裡面關於Java 8介面中的靜態方法和預設方法的新特性解釋的蠻好的 在這裡補充幾點其他需要注意的,也可能是你一直疑惑的(我之前就困惑了好久)~ 介面中的靜態方法

Java WebService介面生成呼叫 圖文

webservice簡介: Web Service技術, 能使得執行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換資料或整合。依據Web Service規範實施的應用之間, 無論它們所使用的語言、 平臺或內部協議是什麼, 都可以相

Spring中Bean的生命中期InitializingBeanDisposableBean介面

Spring提供了一些標誌介面,用來改變BeanFactory中的bean的行為。它們包括InitializingBean和DisposableBean。實現這些介面將會導致BeanFactory呼叫前一個介面的afterPropertiesSet()方法,呼叫後一個介面d

Spring Boot 2.x基礎教程:Swagger介面分類各元素排序問題

之前通過Spring Boot 2.x基礎教程:使用Swagger2構建強大的API文件一文,我們學習瞭如何使用Swagger為Spring Boot專案自動生成API文件,有不少使用者留言問了關於文件內容的組織以及排序問題。所以,就特別開一篇詳細說說Swagger中文件內容如何來組織以及其中各個元素如何控制

Dockerfile中的COPYADD指令比較

copy和add指令詳解與比較Dockerfile中的COPY指令和ADD指令都可以將主機上的資源復制或加入到容器鏡像中,都是在構建鏡像的過程中完成的。COPY指令和ADD指令的唯一區別在於是否支持從遠程URL獲取資源。COPY指令只能從執行docker build所在的主機上讀取資源並復制到鏡像中。而ADD

java 介面(interface)的應用

java 介面(interface)的應用詳解 1.java 介面(interface) 2.java 介面(interface)使用的知識點 3.介面使用總結 4.結果的應用和 實現介面的匿名類物件 1.

Linux系統中定時任務croncrontab命令配置規則說明

cron機制         cron可以讓系統在指定的時間,去執行某個指定的工作,我們可以使用crontab指令來管理cron機制 crontab引數         -u:這個引數可以讓我們去編輯其他人的crontab,如果沒有加上這個引數的話就會開啟自己的crontab

Mybatis之Mapper介面及Example例項函式使用

宣告:本文章部分內容源自於CSDN博主biandous的部落格文章,在其基礎上進行了部分修正和程式碼修改。 一、Mapper介面方法 方法 功能說明 int countByExample(UserExample example) throws SQLExce

azkaban web ui介面出現異常詭異“醜”介面的問題解決(圖文

歡迎您的加入! 微信公眾號平臺: 大資料躺過的坑 微信公眾號平臺: 人工智慧躺過的坑 大資料和人工智慧躺過的坑(總群): 161156071 更多QQ技術分群,詳情請見:http://www.cnblogs.com/zls

iOS 開發 Object-CJavaScript互動之OCJS互動在WKWebView中使用

1.OC與JS互動在UIWebView中使用 2. WKWebView的使用詳解 3.OC與JS互動在WKWebView中使用 // // ViewController.m // oc與js互動WKWebView // // Cr

Linux驅動設計硬體基礎(四)介面匯流排之乙太網介面

2.3.5 乙太網介面    乙太網介面由MAC(乙太網媒體接入控制器)和PHY(物理介面收發器)組成。乙太網MAC由IEEE802.3乙太網標準定義,實現了資料鏈路層。常用的MAC支援10Mbit/s或100Mbit/s兩種速率。千兆位乙太網是快速乙太網的下一代技術,將網速

SPIUART的區別

SPI和UART都是處理和傳輸資料的晶片單元,經由它們連線不同的模組,完成資料的傳輸或處理 SPI:高速同步序列口。3~4線介面,收發獨立、可同步進行  UART:通用非同步序列口。按照標準波特率完成雙向通訊,速度慢 I2C:一種序列傳輸方式,三線制,網上可找到其通訊協議和

android 開發 View _14 MotionEvent事件處理實踐自定義滑動條View

MotionEvent MotionEvent物件是與使用者觸控相關的時間序列,該序列從使用者首次觸控式螢幕幕開始,經歷手指在螢幕表面的任何移動,直到手指離開螢幕時結束。手指的初次觸控(ACTION_DOWN操作),滑動(ACTION_MOVE操作)和擡起(ACTION

df du 命令環境變數

指令 df 可以顯示目前所有檔案系統的最大可用空間及使用情形,請看下列這個例子: # df -h Filesystem       Size      Used     Avail Capacity    Mounted on /dev/ad0s1a      1.9G      389M      1.4G

Java中繼承、介面、多型的作用(純理論)

一、繼承、介面與多型的相關問題: 1、 繼承的作用?好處?壞處? 繼承:通過繼承實現程式碼複用。Java中所有的類都是通過直接或間接地繼程java.lang.Object類得到的。繼承而得到的類稱為子類,被繼承的類稱為父類。子類不能繼承父類中訪問許可權為private的成員變數和方法。子類可以重寫父類的方法

介面自動化測試之HTTP協議

協議 簡單理解,計算機與計算機之間的通訊語言就叫做協議,不同的計算機之間只有使用相同的協議才能通訊。所以網路協議就是為計算機網路中進行資料交換而建立的規則,標準或約定的集合。 OSI模型 1978年國際化標準組織提出了“開放系統網際網路參考模型”,即著名的OSI模型。它將計

Django學習筆記(14)——AJAXForm元件知識補充(區域性鉤子全域性鉤子

   我在之前做了一個關於AJAX和form元件的筆記,可以參考:Django學習筆記(8)——前後臺數據互動實戰(AJAX);Django學習筆記(6)——Form表單     我覺得自己在寫Django筆記(8)的時候,我只是對AJA

php冒泡排序快速排序實例

lag ++ function 開始 ret light 記錄 php冒泡排序 php $a=array(‘3‘,‘8‘,‘1‘,‘4‘,‘11‘,‘7‘); print_r($a); $len = count($a); //從小到大 for($i=1;$i<$le