<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 物聯(lián)網(wǎng)與傳感器 > 設(shè)計應(yīng)用 > SPI、I2C、UART三種串行總線協(xié)議的區(qū)別和SPI接口介紹,以及SPI接口詳解

          SPI、I2C、UART三種串行總線協(xié)議的區(qū)別和SPI接口介紹,以及SPI接口詳解

          作者: 時間:2017-10-11 來源:網(wǎng)絡(luò) 收藏

            SPI、I2C、UART三種串行協(xié)議的區(qū)別

            第一個區(qū)別當(dāng)然是名字:

            SPI(Serial Peripheral Interface:串行外設(shè)接口);

          本文引用地址:http://www.ex-cimer.com/article/201710/365356.htm

            I2C(INTER IC BUS)

            UART(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)器)

            第二,區(qū)別在電氣信號線上:

            SPI由三條信號線組成:串行時鐘(SCLK)、串行數(shù)據(jù)輸出(SDO)、串行數(shù)據(jù)輸入(SDI)。SPI可以實現(xiàn) 多個SPI設(shè)備互相連接。提供SPI串行時鐘的SPI設(shè)備為SPI主機或主設(shè)備(Master),其他設(shè)備為SPI從機或從設(shè)備(Slave)。主從設(shè)備間可以實現(xiàn)全雙工通信,當(dāng)有多個從設(shè)備時,還可以增加一條從設(shè)備選擇線。

            如果用通用IO口模擬SPI總線,必須要有一個輸出口(SDO),一個輸入口(SDI),另一個口則視實現(xiàn)的設(shè)備類型而定,如果要實現(xiàn)主從設(shè)備,則需輸入輸出口,若只實現(xiàn)主設(shè)備,則需輸出口即可,若只實現(xiàn)從設(shè)備,則只需輸入口即可。

            I2C總線是雙向、兩線(SCL、SDA)、串行、多主控(mulTI-master)接口標(biāo)準(zhǔn),具有總線仲裁機制,非常適合在器件之間進行近距離、非經(jīng)常性的數(shù)據(jù)通信。在它的協(xié)議體系中,傳輸數(shù)據(jù)時都會帶上目的設(shè)備的設(shè)備地址,因此可以實現(xiàn)設(shè)備組網(wǎng)。

            如果用通用IO口模擬I2C總線,并實現(xiàn)雙向傳輸,則需一個輸入輸出口(SDA),另外還需一個輸出口(SCL)。(注:I2C資料了解得比較少,這里的描述可能很不完備)

            UART總線是異步串口,因此一般比前兩種同步串口的結(jié)構(gòu)要復(fù)雜很多,一般由波特率產(chǎn)生器(產(chǎn)生的波特率等于傳輸波特率的16倍)、UART接收器、UART發(fā)送器組成,硬件上由兩根線,一根用于發(fā)送,一根用于接收。

            顯然,如果用通用IO口模擬UART總線,則需一個輸入口,一個輸出口。

            第三,從第二點明顯可以看出,SPI和UART可以實現(xiàn)全雙工,但I2C不行;

            第四,看看牛人們的意見吧!

            wudanyu:I2C線更少,我覺得比UART、SPI更為強大,但是技術(shù)上也更加麻煩些,因為I2C需要有雙向IO的支持,而且使用上拉電阻,我覺得抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠距離通信。SPI實現(xiàn)要簡單一些,UART需要固定的波特率,就是說兩位數(shù)據(jù)的間隔要相等,而SPI則無所謂,因為它是有時鐘的協(xié)議。

            quickmouse:I2C的速度比SPI慢一點,協(xié)議比SPI復(fù)雜一點,但是連線也比標(biāo)準(zhǔn)的SPI要少。

            SPI接口介紹(轉(zhuǎn))

            這幾天碰到了使用SPI接口的flash,才知道flash還可以是串行的,看來以前真是井底之蛙啊,找了一些SPI接口的資料都不全,后來找到一點英文資料,翻譯了一下,加上我的個人理解,湊成一篇了,希望對初學(xué)者有點幫助。

            SPI接口的全稱是“Serial Peripheral Interface”,意為串行外圍接口,是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應(yīng)用在EEPROM,F(xiàn)LASH,實時時鐘,AD轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。

            SPI接口是在CPU和外圍低速器件之間進行同步串行數(shù)據(jù)傳輸,在主器件的移位脈沖下,數(shù)據(jù)按位傳輸,高位在前,地位在后,為全雙工通信,數(shù)據(jù)傳輸速度總體來說比I2C總線要快,速度可達到幾Mbps。

            SPI接口是以主從方式工作的,這種模式通常有一個主器件和一個或多個從器件,其接口包括以下四種信號:

            (1)MOSI – 主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入

           ?。?)MISO – 主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出

           ?。?)SCLK – 時鐘信號,由主器件產(chǎn)生

           ?。?)/SS – 從器件使能信號,由主器件控制

            

            在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。

            在多個從器件的系統(tǒng)中,每個從器件需要獨立的使能信號,硬件上比I2C系統(tǒng)要稍微復(fù)雜一些。

            

            SPI接口在內(nèi)部硬件實際上是兩個簡單的移位寄存器,傳輸?shù)臄?shù)據(jù)為8位,在主器件產(chǎn)生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后。如下圖所示,在SCLK的下降沿上數(shù)據(jù)改變,同時一位數(shù)據(jù)被存入移位寄存器。

            

            SPI接口內(nèi)部硬件圖示:(見下文)

            

            最后,SPI接口的一個缺點:沒有指定的流控制,沒有應(yīng)答機制確認(rèn)是否接收到數(shù)據(jù)。

            詳細剖析SPI串口總線連接方法:

            SPI總線系統(tǒng)是一種同步串行外設(shè)接口,它可以使MCU與各種外圍設(shè)備以串行方式進行通信以交換信息。正是由于有了通信方式,我們才能夠通過芯片控制各種各樣的外圍器件,實現(xiàn)很多“不可思議”的現(xiàn)代科技。這里將以SPI為題,從編程角度來介紹SPI總線。

            1、SPI協(xié)議簡介

            SPI 是英語 Serial Peripheral interface 的縮寫,顧名思義就是串行外圍設(shè)備接口。是 Motorola首先在其 MC68HCXX 系列處理器上定義的。SPI是一種高速的,全雙工,同步的通信總線,由于其簡單易用的特性,現(xiàn)在很多的nor flash和nandflash芯片集成了這種通信協(xié)議,也就是我們說的SPI flash。

            2、應(yīng)用及現(xiàn)狀

            SPI flash 芯片應(yīng)用十分廣泛,在很多電子產(chǎn)品上面或多或少都有它的蹤影,如手機、數(shù)碼、液晶顯示器、機頂盒、電腦主板等。最近,有消息透露,蘋果新手機iPhone 8將導(dǎo)入采用編碼型快閃存儲(NOR Flash),讓已經(jīng)處于缺貨狀態(tài)的NOR芯片更為惱火,另外據(jù)存儲業(yè)者透露,今年NOR芯片供給缺口將可能擴大至20%。

            3、解剖SPI總線

            SPI 接口一般使用 4 條線通信,MISO 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出。MOSI 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入。SCLK 時鐘信號,由主設(shè)備產(chǎn)生。CS 從設(shè)備片選信號,由主設(shè)備控制。

            SPI接口在Master控制下產(chǎn)生的從器件使能信號和時鐘信號,兩個雙向移位寄存器按位傳輸進行數(shù)據(jù)交換,傳輸數(shù)據(jù)高位在前,低位在后(MSB)。在SCK的下降沿上數(shù)據(jù)改變,上升沿一位數(shù)據(jù)被存入移位寄存器。

            4、解剖SPI flash

            搞懂了SPI協(xié)議之后,下面就讓小編來帶你輕松操作SPI flash芯片。對flash芯片的操作,一般包括對flash芯片的擦除,編程和讀取,各大廠商的SPI flash芯片都大同小異,操作命令基本是沒什么變化的,當(dāng)我們拿到一款芯片,要特別注意芯片的容量,操作分區(qū),下面以旺宏的芯片為例為大家講解。

            其實,無論是對芯片的擦除,編程還是讀取操作,我們大致可以按照以下的套路來:寫命令---寫地址---寫(讀)數(shù)據(jù)。正如以下的時序圖一樣清晰明了,我們先把片選信號拉低,再發(fā)個0x02頁編程命令,再發(fā)個地址,就可以輕松寫數(shù)據(jù)了。

            依樣畫葫蘆,擦除操作也是一樣,甚至更簡單,但是我們要注意循環(huán)判斷狀態(tài)寄存器的WIP位直至為0為擦除完成,具體循環(huán)時間視芯片而定。

            另外,我們要特別注意SPI flash的 OTP區(qū),即(ONE TIME PROGRAMMABLE),也就是說這個區(qū)域只能編程一次,編程之后不能再修改及擦除,因此我們操作的時候要特別注意。對OTP區(qū)域的讀寫之前,我們首先要發(fā)送進入OTP區(qū)域的命令,其他的操作和以上普通flash區(qū)域的操作是一樣的。

            掌握以上方法,我們就可以輕松操作SPI flash芯片了,當(dāng)然,對時序這種底層的操作,還需要不斷學(xué)習(xí)和積累



          關(guān)鍵詞: spi 總線 uart

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();