• <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>

    24小時(shí)聯(lián)系電話(huà):18217114652、13661815404

    中文

    您當前的位置:
    首頁(yè)>
    電子資訊>
    行業(yè)資訊>
    SPI與I2C:如何為您的...

    行業(yè)資訊

    SPI與I2C:如何為您的存儲芯片選擇最佳協(xié)議


    SPII2C:如何為您的存儲芯片選擇最佳協(xié)議

    SPII2C可能是最常用的數字協(xié)議,用于連接各種產(chǎn)品中的集成電路。SPII2C都是易于使用、難以破解的串行數字協(xié)議,從信號完整性的角度來(lái)看,它們很容易路由。與阻抗控制的高速差分串行協(xié)議不同,這兩種協(xié)議沒(méi)有阻抗規范,通常被認為是電氣短路的。這意味著(zhù),在PCB上,設計要求相對簡(jiǎn)單,并且在標準中仍有一些自由度可以根據需要調整性能。

    PCB布局中SPII2C的常見(jiàn)實(shí)現之一是作為用于讀取和寫(xiě)入外部閃存的協(xié)議。閃存芯片是嵌入式系統中非常常見(jiàn)的組件,可以提供高達Gb值的高容量非易失性存儲器。選擇內存芯片時(shí),您需要將應用程序要求和功能與內存芯片中讀寫(xiě)操作所需的總線(xiàn)速度相匹配。還有您需要訪(fǎng)問(wèn)的閃存類(lèi)型的問(wèn)題(NORNAND)。

    SPII2C比較

    串行外設接口(SPI)和內部集成電路(I2C)協(xié)議都是以低速到中速運行的簡(jiǎn)單串行數字協(xié)議。這兩個(gè)接口有一些共同的特點(diǎn):

    他們使用不止一根線(xiàn)來(lái)發(fā)送/接收數據

    時(shí)鐘是源同步的,這意味著(zhù)只有一條走線(xiàn)承載時(shí)鐘線(xiàn)

    總線(xiàn)上的其他芯片是可尋址或可切換的

    大多數微控制器將集成其中一個(gè)或兩個(gè)接口

    信號電平可以通過(guò)給芯片的核心電壓來(lái)設置

    這些接口都沒(méi)有阻抗要求

    顯然,這些接口非常相似。它們確實(shí)有一些重要的區別,如下表所示。

     

    I2C

    SPI

    網(wǎng)名

    - 串行數據(SDA)

    - 串行時(shí)鐘(SCL)

    - 主輸入,從輸出(MISO

    - 主輸出,從輸入(MOSI

    - 串行時(shí)鐘(SCKSCLK

    - 片選(CS,可選)

    拓撲

    - 廣播總線(xiàn)拓撲

    - 共享味噌/MOSI/SCK

    - CS引腳的星號

    數據速率

    - 標準模式:高達100 kbps

    - 快速模式:高達400 kbps

    - 快速模式加:高達1 Mbps

    - 高速模式:高達3.4 Mpbs

    - 由時(shí)鐘窗口時(shí)間固定,最高可達60Mbps

    上升/下降時(shí)間

    - 取決于總線(xiàn)電容和上拉電阻值(使用RC時(shí)間常數)

    - 指定給定負載阻抗

    尋址

    - 固定在每個(gè)組件上的地址引腳

    - 主控制器中用于切換芯片的CS引腳(可通過(guò)GPIO或專(zhuān)用CS引腳切換)

    方向性

    - 半雙工

    - 全雙工

    信號驅動(dòng)

    - 開(kāi)漏

    - 推挽式(帶CMOS緩沖器)

     

    I2C相比,SPI標準提供更高的數據速率并且可以以更快的邊沿速率運行。由于在I2C上使用上拉電阻、通常較高的總線(xiàn)電容以及驅動(dòng)方法是開(kāi)漏極的事實(shí),I2C總線(xiàn)的上升時(shí)間可以達到100納秒。對于驅動(dòng)低負載電容的高級組件,SPI總線(xiàn)的上升時(shí)間可以低至1 ns ,這意味著(zhù)它們在切換期間可能會(huì )出現瞬態(tài)振鈴。SPI線(xiàn)路也更容易產(chǎn)生串擾,因為它們的開(kāi)關(guān)速度非???。要了解有關(guān)SPI總線(xiàn)中這兩種協(xié)議和信號完整性的更多信息,請閱讀以下資源。

    為存儲芯片選擇SPII2C時(shí)的重要考慮因素

    訪(fǎng)問(wèn)NANDNOR閃存

    在本節中,我不想深入討論NANDNOR閃存的細節,而是想關(guān)注如何使用串行協(xié)議訪(fǎng)問(wèn)它們。如果您可以采購正確的內存組件,則可以使用SPII2C總線(xiàn)訪(fǎng)問(wèn)這兩種類(lèi)型的閃存芯片:

    NOR閃存 -絕大多數使用SPI訪(fǎng)問(wèn),即使在更小和更慢的閃存芯片上也是如此??梢允褂?span>I2C訪(fǎng)問(wèn)速度較慢的芯片。

    NAND閃存 -絕大多數使用并行總線(xiàn)訪(fǎng)問(wèn),但具有I2CSPI總線(xiàn)的芯片數量大致相等。

    如果您查看Octopart并使用過(guò)濾器功能,您將能夠找到一些使用任一接口的高容量存儲器。

    用于存儲器的I2CSPI接口橋接

    如果需要在I2CSPI接口之間進(jìn)行轉換,可以使用接口橋接器。這些組件在這些接口之間轉換數據格式,因此可能只有SPI總線(xiàn)的組件可以訪(fǎng)問(wèn)只有I2C總線(xiàn)的外圍組件。這包括內存芯片,但如果控制器僅使用I2C并且內存使用SPI,則速度可能會(huì )受到限制,并且接收組件可能由于上升時(shí)間長(cháng)而無(wú)法工作。

    要克服I2C的這一限制,最好使用帶SPI的控制器,然后使用接口橋訪(fǎng)問(wèn)只有I2C的外設。請注意,SPI端的時(shí)鐘必須更低,以確保它可以在I2C速度下使用。這將在以下拓撲中完成:

    需要SPII2C接口橋接器的首選配置。

    電平轉換

    開(kāi)漏和推挽串行協(xié)議(其中信號電平由內核電壓設置)中的另一個(gè)常見(jiàn)要求是電平轉換。構建PCB的最簡(jiǎn)單方法是使用調節到所需核心電壓的單個(gè)電源,例如使用LDO。實(shí)際上,您可能有一些外圍設備在較高電壓下運行(例如3.3 V),而主控制器在較低電壓下運行多個(gè)軌(2.5 V、1.8 V等)。如果您的MCU3V3運行,但您的內存以 1V8運行(這是一種常見(jiàn)情況),那么您將需要通過(guò)電平轉換器路由SPII2C信號。請注意,一些接口橋將包括一個(gè)電平轉換器,連接到兩個(gè)電源軌;拓撲如下圖所示。

    用于電平轉換的拓撲。

    一旦您為您的設計找到了組件,您如何在SPII2C接口之間做出選擇?以下幾點(diǎn)將推動(dòng)您做出決定:

    速度:當您批量傳輸數據或有一個(gè)狹窄的窗口來(lái)驗證用戶(hù)輸入與存儲在內存芯片中的數據時(shí),每一微秒都很重要。如果系統的其余部分需要實(shí)時(shí)重復讀寫(xiě)功能,請使用SPI。如果控制器只需要偶爾從內存讀取或寫(xiě)入,則使用I2C。

    控制器:如果您使用的是非常小的MCU或外圍設備,并且可用的引腳很少,那么您應該使用I2C。事實(shí)上,對于某些微控制器,您可能別無(wú)選擇。例如,經(jīng)典的ATTiny MCU 只有I2C,因此如果它們需要來(lái)自外部存儲器的數據,則必須找到支持I2C的存儲芯片。

    電源:如果您正在設計需要重復訪(fǎng)問(wèn)數據的電池供電設備,您可能會(huì )選擇SPI,因為該接口的平均功耗低于I2C接口。

    請輸入搜索關(guān)鍵字

    確定
    色鲁99热99re超碰精品_91精品一区二区三区无码吞精_亚洲国产欧洲综合997久久_一级a性色生活片久久无
  • <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>