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

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

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

淺談SPI總線通信接口及其協(xié)議

CHANBAEK ? 來源:落木青云 ? 作者:落木青云 ? 2023-03-22 16:11 ? 次閱讀

上篇內(nèi)容我們介紹了IIC總線通信接口及其協(xié)議,這一篇文章我們介紹另一種項目開發(fā)中非常常見的通信接口——SPI總線。

SPI(Serial Peripheral Interface,串行外設(shè)接口)總線是摩托羅拉公司設(shè)計的一種同步串行通信接口。 和IIC總線一樣,它也分主機和從機,一個主機也可以接多個從機,但從機沒有地址之分,它們是通過主機的硬件選擇來確定哪個設(shè)備與主機通信,每個設(shè)備有兩個數(shù)據(jù)端口,即輸入、輸出端口,通常情況下它包含4根通信引腳,在某些特殊情形下也可以是3線甚至2線,即可以忽略片選信號或某根數(shù)據(jù)信號,當(dāng)然具體情況根據(jù)電路應(yīng)用而定!

SS/CS——片選信號端口

SCLK——時鐘信號端口

MOSI——主出從入信號端口

MISO——主入從出信號端口

硬件接線圖:

wKgZomQat-eAIAnKAAAtFEdxSh8591.jpg

硬件連接圖

部分資料芯片手冊中會使用SDO,SDI來定義兩數(shù)據(jù)端口MOSI和MISO,兩種說法本質(zhì)都是一樣的

wKgaomQat-aATIJcAAASOoN2MpQ291.jpg

SDO,SDI連線示意

相比于IIC總線,SPI總線協(xié)議更為簡單,不需要驗證地址,也沒有校驗信號,又因為擁有獨立的輸入輸出端口,所以在信號傳遞方面它擁有更高的速率。

wKgZomQat-aARSQMAAJ8YELUXZA044.jpg

多機通信電路

通信協(xié)議

SPI總線中由于涉及到時鐘信號極性(Cpol: Clock Polarity)和相位(Cpha: Clock Phase)的影響使得協(xié)議分為4種模式。

CPOL:即時鐘的極性,通信的整個過程包含空閑狀態(tài)和工作狀態(tài),如果SCLK在空閑狀態(tài)是高電平,那么CPOL=1,如果是低電平,那么就是CPOL=0。

CPHA:即時鐘的相位,在這里就是SCLK的跳變邊沿,如果在SCLK信號的第一個跳變沿就開始數(shù)據(jù)傳輸則CPHA=0,否則若是在第二個邊沿才開始數(shù)據(jù)傳輸則CPHA=1。

讀起來還是有點拗口,看時序圖會更直觀一點:

wKgaomQat-eAauqdAAMdTOSvwPM371.jpg

時序圖

當(dāng)然這些不用記憶,你使用的時候根據(jù)具體的芯片手冊的時序說明進行配置就好了,不要把簡單的事情復(fù)雜化。心里有個概念就好,假如你是應(yīng)屆畢業(yè)生參加面試那保證自己能區(qū)分開來這幾種模式就可以,很多畢業(yè)生連IIC和SPI是什么東西都不知道呢,因為教材里面不一定會介紹這些通信協(xié)議,51單片機教材里印象中好像除了串口通信外沒有介紹其他的通信方式,即使有類似應(yīng)用也沒使用這些專業(yè)名稱來說明,其他的很多都得是自己買塊板子回來折騰才碰得到的。如果你是在校學(xué)生看看教材或者不妨問問你身邊的同學(xué)試試。

一般情況下作為主機的單片機如果硬件接口具備SPI總線端口編程時直接根據(jù)對應(yīng)寄存器配置為從機可以接受的模式使能該總線功能即可,若是普通不帶SPI總線的單片機,那我們也簡單,和上一篇中的模擬IIC通信一樣,根據(jù)需要在程序中模擬出時序就好了。這里再次說明了讀芯片數(shù)據(jù)手冊的重要性,有的人或許芯片手冊都不看,從網(wǎng)上找一個別人跑得通的代碼就copy過去,或許可能剛好能用,也可能搞半天自己的芯片啥數(shù)據(jù)都讀不出來,這是初學(xué)者大忌,所以學(xué)技術(shù)切莫急功近利,每一次的僥幸可能造成日后的大雷。

通信程序

SPI通信協(xié)議的程序使用起來比較靈活,它的應(yīng)用的場合也比較多,具體的示例程序在后面的實際例子中再做介紹了。結(jié)合上一篇IIC的示例程序,今天的SPI協(xié)議程序應(yīng)該腦海里應(yīng)該也有思路了吧。

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

    關(guān)注

    33

    文章

    8447

    瀏覽量

    150720
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    5949

    瀏覽量

    135782
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    948

    瀏覽量

    31984
  • SPI總線
    +關(guān)注

    關(guān)注

    4

    文章

    103

    瀏覽量

    27562
  • IIC總線
    +關(guān)注

    關(guān)注

    1

    文章

    66

    瀏覽量

    20273
收藏 人收藏

    評論

    相關(guān)推薦

    3分鐘理解通信協(xié)議SPI總線 #通信協(xié)議

    通信協(xié)議SPISPI總線總線/接口技術(shù)
    硬聲課堂
    發(fā)布于 :2021年10月18日 10:18:55

    SPI總線協(xié)議通信原理及應(yīng)用舉例

    ?! ≡邳c對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。在多個從設(shè)備的系統(tǒng)中,每個從設(shè)備需要獨立的使能信號,硬件上比I2C系統(tǒng)要稍微復(fù)雜一些?! ∽詈?,
    發(fā)表于 11-08 15:31

    怎么使用FPGA實現(xiàn)SPI總線通信接口?

    隨著現(xiàn)代技術(shù)的發(fā)展,SPI接口總線已經(jīng)成為了一種標(biāo)準(zhǔn)的接口,由于協(xié)議實現(xiàn)簡單,并且I/O資源占用少,為此
    發(fā)表于 08-09 08:14

    SPI總線協(xié)議介紹及硬件設(shè)計資料分享

    typora-copy-images-to: typora_picture基于FPGA與MCU通信SPI協(xié)議設(shè)計1. SPI總線
    發(fā)表于 11-10 07:06

    SPI總線協(xié)議簡介

    的。SPI接口主要應(yīng)用在 EEPROM,F(xiàn)LASH,實時時鐘,AD轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。SPI是一種高速的,全雙工,同步的通信
    發(fā)表于 12-13 07:37

    基于PC/104 總線與CPLD 的SPI 接口設(shè)計

    本文根據(jù)SPI 同步串行接口通信協(xié)議,介紹了在CPLD 中利用VHDL 語言實現(xiàn)PC/104 總線擴展SPI
    發(fā)表于 05-30 09:28 ?41次下載

    SPI總線實現(xiàn)DSP和MCU之間的高速通信

    簡述了SPI總線協(xié)議工作時序和配置要求,通過一個成功的實例詳細介紹了使用SPI總線實現(xiàn)DSP與MCU之間的高速
    發(fā)表于 11-27 15:10 ?58次下載

    CAN總線通信協(xié)議的分析和實現(xiàn) CAN總線通信協(xié)議及其實現(xiàn)方法

    CAN總線通信協(xié)議的分析和實現(xiàn) CAN總線通信協(xié)議及其實現(xiàn)方法
    發(fā)表于 09-04 08:45 ?40次下載
    CAN<b class='flag-5'>總線</b><b class='flag-5'>通信協(xié)議</b>的分析和實現(xiàn) CAN<b class='flag-5'>總線</b><b class='flag-5'>通信協(xié)議</b>以<b class='flag-5'>及其</b>實現(xiàn)方法

    串行外設(shè)接口SPI通信協(xié)議的應(yīng)用

    SPI是串行外設(shè)接口(SerialPeripheral Interface)的縮寫。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片
    發(fā)表于 01-09 14:58 ?1828次閱讀
    串行外設(shè)<b class='flag-5'>接口</b><b class='flag-5'>SPI</b><b class='flag-5'>通信協(xié)議</b>的應(yīng)用

    嵌入式硬件通信接口協(xié)議中的串行通信接口-SPI

    本節(jié)繼續(xù)講嵌入式硬件通信接口協(xié)議中的另外一個串行通信接口-SPI。相比于UART串口
    發(fā)表于 02-05 11:35 ?1621次閱讀
    嵌入式硬件<b class='flag-5'>通信</b><b class='flag-5'>接口</b><b class='flag-5'>協(xié)議</b>中的串行<b class='flag-5'>通信</b><b class='flag-5'>接口</b>-<b class='flag-5'>SPI</b>

    基于FPGA與MCU通信SPI協(xié)議設(shè)計

    typora-copy-images-to: typora_picture基于FPGA與MCU通信SPI協(xié)議設(shè)計1. SPI總線
    發(fā)表于 11-05 15:35 ?14次下載
    基于FPGA與MCU<b class='flag-5'>通信</b>的<b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>設(shè)計

    SPI協(xié)議

    目錄SPI協(xié)議簡介SPI物理層SPI協(xié)議SPI協(xié)議
    發(fā)表于 12-22 19:17 ?33次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>協(xié)議</b>

    通信協(xié)議SPI

    STM32模擬SPI通信協(xié)議SPI的簡介:SPI是串行外設(shè)接口的縮寫,是一種高速的,全雙工、同步的串行
    發(fā)表于 12-22 19:20 ?22次下載
    <b class='flag-5'>通信協(xié)議</b>:<b class='flag-5'>SPI</b>

    通信協(xié)議SPI

    一、SPI簡介SPI(Serial Peripheral Interface)是串行外設(shè)接口的縮寫,SPI是高速的,**全雙工**、**同步**的串行
    發(fā)表于 12-22 19:33 ?6次下載
    <b class='flag-5'>通信協(xié)議</b>(<b class='flag-5'>SPI</b>)

    嵌入式硬件通信接口協(xié)議-SPI(一)協(xié)議基礎(chǔ)

    /hDUK43s8naybJLvoE2UsoA?本節(jié)繼續(xù)講嵌入式硬件通信接口協(xié)議中的另外一個串行通信接口-
    發(fā)表于 01-12 17:48 ?10次下載
    嵌入式硬件<b class='flag-5'>通信</b><b class='flag-5'>接口</b><b class='flag-5'>協(xié)議</b>-<b class='flag-5'>SPI</b>(一)<b class='flag-5'>協(xié)議</b>基礎(chǔ)