<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

  第一個(gè)區別當然是名字:

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

本文引用地址:http://dyxdggzs.com/article/201710/365356.htm

  I2C(INTER IC BUS)

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

  第二,區別在電氣信號線(xiàn)上:

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

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

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

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

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

  顯然,如果用通用IO口模擬UART總線(xiàn),則需一個(gè)輸入口,一個(gè)輸出口。

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

  第四,看看牛人們的意見(jiàn)吧!

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

  quickmouse:I2C的速度比SPI慢一點(diǎn),協(xié)議比SPI復雜一點(diǎn),但是連線(xiàn)也比標準的SPI要少。

  SPI接口介紹(轉)

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

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

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

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

 ?。?)MOSI – 主器件數據輸出,從器件數據輸入

 ?。?)MISO – 主器件數據輸入,從器件數據輸出

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

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

  

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

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

  

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

  

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

  

  最后,SPI接口的一個(gè)缺點(diǎn):沒(méi)有指定的流控制,沒(méi)有應答機制確認是否接收到數據。

  詳細剖析SPI串口總線(xiàn)連接方法:

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

  1、SPI協(xié)議簡(jiǎn)介

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

  2、應用及現狀

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

  3、解剖SPI總線(xiàn)

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

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

  4、解剖SPI flash

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

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

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

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

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



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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>