0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

串行外圍設備接口如何使用

454398 ? 來源:wv ? 2019-09-27 09:41 ? 次閱讀

步驟1:總而言之,SPI是什么?

SPI是一種通信協(xié)議,最初是由Motorola開發(fā)的,在兩個電子設備之間傳輸信息。這是一種全雙工協(xié)議,這意味著兩個設備能夠同時彼此“交談”。

這兩個設備被指定為“主”設備和“從”設備。主設備是始終啟動每個對話并控制對話進行速度的芯片。從設備僅在主設備請求時才同時發(fā)送和接收信息。

步驟2:如何進行SPI通信?

要使兩個設備之間的通信正常進行,有四個使用的導線:通常標記為CS或SS(用于從機選擇)的片選導線,主輸出從輸入數(shù)據(jù)線(MOSI),主輸入從輸出數(shù)據(jù)線(MISO)和串行時鐘線( SCK)。

主設備將CS線拉低,以與另一側(cè)的從設備指示它希望與其通信。因為這是一條單獨的電線,被賦予了“低”電壓信號,所以這意味著主機可以通過將其特定電線驅(qū)動為低電平來實際控制多個“從”設備。

MOSI和MISO數(shù)據(jù)行可以完成您可能已經(jīng)猜到的事情;這兩條線允許SPI為全雙工。數(shù)據(jù)位以高電壓或低電壓信號的形式在兩個設備之間沿一個方向或另一個方向傳輸,具體取決于我們正在查看的數(shù)據(jù)線。

SCK線控制速度傳輸MOSI和MISO線上的數(shù)據(jù)位。像CS線一樣,SCK線也由主機控制,并以高和低周期驅(qū)動以創(chuàng)建“時鐘脈沖”,以控制何時在這些線上傳輸數(shù)據(jù)??梢詫PI配置為在時鐘變高或變低時傳輸數(shù)據(jù)。

第3步:您一直說數(shù)據(jù)的“位”

實際上是。 SPI被設計(并且是真正成為SPI所必需的)以字節(jié)大小的通信塊工作,八位到一個字節(jié)。因此,對于每個數(shù)據(jù)傳輸,時鐘和兩條數(shù)據(jù)線上都會有8個時鐘脈沖和8個數(shù)據(jù)傳輸。

但是,有些器件,例如ADI公司AD5628芯片在Digilent的PmodDA4上,它使用串行外設接口,但表示它們傳輸12位數(shù)據(jù)而不是8位數(shù)據(jù)。雖然這似乎是不可能的,因為您不能使用SPI協(xié)議來傳輸8位數(shù)據(jù),然后僅傳輸4位數(shù)據(jù),但是當我們深入研究該芯片的數(shù)據(jù)手冊時,便找到了解決方案。滾動一點后,我們可以看到DAC的移位寄存器實際上是32位長(第22頁)。可以很好地將其分為四個單獨的8位傳輸。

步驟4:我們?nèi)绾蝹鬏敶藬?shù)據(jù)?

與其他通信協(xié)議不同,SPI是它能夠以多種方式傳輸數(shù)據(jù),因此功能相當廣泛。根據(jù)每個芯片想要接收數(shù)據(jù)的方式,可以先發(fā)送最高有效位(MSB)或先發(fā)送最低有效位(LSB)來發(fā)送信息。

但是真正的多功能性來自四種不同的SPI時鐘模式,可供選擇。這些模式可以調(diào)整時鐘信號是從高電壓值開始還是從低電壓值開始,以及數(shù)據(jù)的位是隨著時鐘信號轉(zhuǎn)變?yōu)楦唠娖綘顟B(tài)而傳輸還是隨著時鐘轉(zhuǎn)變?yōu)榈蛻B(tài)狀態(tài)而傳輸。上表概述了每種時鐘模式的配置。同樣,根據(jù)設備期望接收信息的方式來選擇每種模式。

因此,如果我們希望兩個設備通過SPI互相發(fā)送210值,則最高位首先,在時鐘下降沿傳輸數(shù)據(jù),首先讓主機將芯片選擇線拉低,然后使時鐘信號拉高,讓每個設備將適當?shù)奈弧凹虞d”到數(shù)據(jù)線上,然后讓主機將時鐘信號拉低,以便兩個設備“收集”在線上的數(shù)據(jù)位。重復該過程,直到所有位均已傳輸,然后主機最終再次將芯片選擇線拉高以結(jié)束通信。

步驟5:接收數(shù)據(jù)如何?

要正確接收數(shù)據(jù)所需執(zhí)行的操作取決于接收數(shù)據(jù)的組件類型。如果您擁有主設備(通常是某種形式的微控制器),則將信息發(fā)送到另一設備,該設備不是微控制器,而只是一個只做一件事并且永遠不會回應您的小芯片(例如在這種情況下產(chǎn)生模擬電壓信號) (Analog Devices AD5628),那么作為用戶創(chuàng)建電路的用戶通常不需要執(zhí)行任何操作。只需確保您以設備想要接收的格式將信息發(fā)送到設備即可。

如果您希望從設備接收反饋(或者正在將信息發(fā)送到所需的其他微控制器)進行編程以正確接收和解釋傳入的信息),您可能需要做兩件事。如果您使用的SPI庫支持全部接收(并返回)8位數(shù)據(jù),例如chipKIT/Arduino的SPI庫,那么您可以簡單地將所有信息接收并存儲到一個變量中

如果不使用SPI庫,則必須收集各個信息位,然后將它們“網(wǎng)狀”在一起。 (可能)最容易通過接收數(shù)組中的信息位來完成。

步驟6:需要考慮的其他事項

盡管看起來SPI是通過某種方式完成的并且可以始終如一地工作,但情況并非總是如此。嘗試使用主設備與其從芯片進行通信時,線路的另一端可能沒有從設備。作為主設備的電子芯片無法物理地知道它是否通過電線連接到其他芯片。

此外,SPI中可能使用的許多代碼僅用于SPI庫。一些配置(例如,是否應首先發(fā)送最高或最低有效位或何時應在時鐘周期發(fā)送)僅由庫處理。但是,也可以“手動”執(zhí)行SPI協(xié)議。畢竟,SPI使用的所有信號就是這樣。高低壓信號。因此,只要將主機用于發(fā)送電壓信號的引腳連接到“從”設備上的正確引腳,就可以通過“ SPI”完成通信,而無需實際使用指定的SPI引腳。

自然地,使用SPI庫可能會更快(無論是鍵入速度還是實際速度),但是很高興知道所有通信(無論是SPI還是其他方式)實際上都是電壓信號。/p》

第7步:運行SPI:沒有庫

雖然理論很不錯,但我個人也看到了有關(guān)某物的實際示例時,它會更有用看起來像在代碼中。這將不需要使用預定義的SPI庫,因為我認為查看SPI協(xié)議的各個部分何時發(fā)生會更有幫助。代碼本身(在下面的文本文件中提供)基于Digilent的uC32,這是一個功能強大的Arduino兼容微控制器。

步驟8:運行SPI:使用庫

您還可以將SPI與適當?shù)膸煲黄鹗褂?。這種方法(毫不奇怪)大大減少了您作為用戶需要鍵入的代碼量,但同時從本質(zhì)上來說還是抽象的。除非您已經(jīng)知道每個命令在內(nèi)部執(zhí)行的操作,否則沒有簡單的方法只能通過查看它們來弄清楚發(fā)生了什么。

步驟9:一些最終想法

正如我之前提到的,SPI是電子領域中使用最廣泛的通信協(xié)議之一,但并沒有給人以為使用 協(xié)議的印象。 ; I2C,UARTUSB等許多其他協(xié)議,甚至簡單的通用輸入/輸出(GPIO)引腳在通訊方面都有其優(yōu)點和缺點。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1721

    瀏覽量

    92017
收藏 人收藏

    評論

    相關(guān)推薦

    SH32F9001的SPI介紹與應用

    SPI(Serial peripheral interface)即串行外圍設備接口,是由Motorola首先在其MC68HCxx系列單片機上定義的,基于高速全雙工總線的通訊協(xié)議。被廣泛應用于LCD
    的頭像 發(fā)表于 12-31 17:04 ?1035次閱讀
    SH32F9001的SPI介紹與應用

    KeyStone架構(gòu)串行外設接口(SPI)手冊

    SPI(Serial Peripheral Interface)是一種高速、全雙工、同步的串行通信協(xié)議,它允許微控制器與一個或多個外圍設備進行通信。SPI通信通常使用四根線:SCK(時鐘線
    發(fā)表于 12-16 10:33 ?0次下載

    單片機語音芯片中的SPI Flash探秘及其分類詳解

    在單片機語音芯片的領域中,SPIflash,即串行外圍設備接口閃存,扮演著舉足輕重的角色。它是一種時鐘同步的串行通訊接口,如單片機語音芯片與
    的頭像 發(fā)表于 12-03 01:01 ?271次閱讀
    單片機語音芯片中的SPI Flash探秘及其分類詳解

    通信協(xié)議之SPI總線硬件篇

    SPI:Serial Peripheral Interface,串行外圍設備接口。 是由摩托羅拉在20世紀80年代中期開發(fā)的同步串行總線接口
    的頭像 發(fā)表于 11-25 17:56 ?1100次閱讀
    通信協(xié)議之SPI總線硬件篇

    SPI接口靜電放電防護方案

    SPI(Serial Peripheral Interface,串行外圍設備接口),是Motorola公司提出的一種同步串行接口技術(shù),是一種
    的頭像 發(fā)表于 09-20 15:31 ?439次閱讀
    SPI<b class='flag-5'>接口</b>靜電放電防護方案

    SPI通信協(xié)議的基本概念和工作模式

    SPI(Serial Peripheral Interface)通信協(xié)議,即串行外圍設備接口,是一種高速、全雙工、同步通信總線,由摩托羅拉公司提出并廣泛應用。SPI以其高效的數(shù)據(jù)傳輸能力和簡單的硬件
    的頭像 發(fā)表于 09-09 17:04 ?1973次閱讀

    SPI總線的定義和特點

    SPI總線(Serial Peripheral Interface),全稱為串行外圍設備接口,是由Motorola公司提出并定義的一種同步、串行、高速的通信總線。SPI總線以其獨特的優(yōu)
    的頭像 發(fā)表于 09-03 14:05 ?1187次閱讀

    串行接口與并行接口的區(qū)別

    串行接口(Serial Interface)與并行接口(Parallel Interface)是計算機與外部設備之間進行數(shù)據(jù)傳輸?shù)膬煞N基本方式,它們在多個方面存在顯著差異。以下將從數(shù)據(jù)
    的頭像 發(fā)表于 08-25 17:08 ?4480次閱讀

    串行接口的工作原理和結(jié)構(gòu)

    串行接口(Serial Interface)的工作原理和結(jié)構(gòu)是理解其在計算機與外部設備之間數(shù)據(jù)傳輸方式的重要基礎。以下將詳細闡述串行接口的工
    的頭像 發(fā)表于 08-25 17:01 ?1921次閱讀

    使用GMSL隧穿對遠程汽車外設進行身份驗證

    外圍設備是經(jīng)過授權(quán)的高質(zhì)量組件非常重要。千兆多媒體串行鏈路(GMSL)串行-反序列化器(SerDes)對與DS28C40的結(jié)合是一種解決方案,用于連接嵌入在外圍設備
    的頭像 發(fā)表于 03-05 08:23 ?1253次閱讀
    使用GMSL隧穿對遠程汽車外設進行身份驗證

    是否有可能使用CYSPP配置文件連接到外圍設備

    我們的現(xiàn)有系統(tǒng)使用中央和外圍設備,使用基于 Microchip RN4020 的中央和外圍設備。 由于供應限制的原因,我們希望將英飛凌 CYBT-483056 SoC 用于 BLE central。 我們想知道是否有可能使用CYSPP配置文件連接到
    發(fā)表于 03-01 06:54

    用PSOC6 BLE當外圍設備,兩者傳輸數(shù)據(jù)時,psoc6概率性出現(xiàn)藍牙掛死的原因?

    我們用PSOC6 BLE當外圍設備,手機當中心設備, 兩者傳輸數(shù)據(jù)時,psoc6概率性(1%的概率)出現(xiàn)藍牙掛死。具體現(xiàn)象是 斷開手機藍牙后,無法收到ble廣播,硬件上查到ble的晶振一直處于起振
    發(fā)表于 02-21 06:54

    什么是I2C接口?什么是I3C接口?I2C與I3C的區(qū)別

    I2C接口是一種串行通信協(xié)議,全稱為Inter-Integrated Circuit,即集成電路間總線。它是一種雙向、兩線制(SCL和SDA)的串行通信接口,主要用于連接微控制器和其他
    的頭像 發(fā)表于 02-17 14:39 ?6695次閱讀
    什么是I2C<b class='flag-5'>接口</b>?什么是I3C<b class='flag-5'>接口</b>?I2C與I3C的區(qū)別

    usb-c接口是什么意思 pd接口和usb接口哪個更好

    以通過USB-C接口提供更高的功率輸出,以滿足各種設備的充電需求。 USB接口是一種通用的串行總線標準,它早期版本主要用于連接計算機與外圍設備
    的頭像 發(fā)表于 01-31 17:01 ?8720次閱讀

    PSOC6如何通過I2C與外圍設備通信?

    PSOC6 如何通過 I2C 與外圍設備通信? 我不太明白這一系列芯片 CAN 如何向上或向下拉動?我根據(jù)例程編寫了一個與I2C通信的外圍設備,但它 CAN不起作用, ADXL345模塊
    發(fā)表于 01-31 06:08