SPI接口詳細介紹

1. 概述

SPI = Serial Peripheral Interface,是串行外圍設備接口,是一種高速,全雙工,同步的通信總線。常規只占用四根線,節約了芯片管腳,PCB的布局省空間。現在越來越多的芯片集成了這種通信協議,常見的有EEPROM、FLASH、AD轉換器等。

  • 優點:

支持全雙工,push-pull的驅動性能相比open-drain信號完整性更好

支持高速(100MHz以上);

協議支持字長不限于8bits,可根據應用特點靈活選擇消息字長;

硬件連接簡單;

  • 缺點:

相比IIC多兩根線;

沒有尋址機制,只能靠片選選擇不同設備;

沒有從設備接受ACK,主設備對于發送成功與否不得而知;

典型應用只支持單主控;

相比RS232 RS485和CAN總線,SPI傳輸距離短;

2. 硬件結構

SPI總線定義兩個及以上設備間的數據通信,提供時鐘的設備為主設備Master,接收時鐘的設備為從設備Slave;

  • 信號定義如下:

SCK : Serial Clock 串行時鐘

MOSI : Master Output, Slave Input 主發從收信號

MISO : Master Input, Slave Output 主收從發信號

SS/CS : Slave Select 片選信號

  • 電路連接如下:

單個主設備和單個從設備:

單個主設備和多個從設備,通過多個片選信號或者菊花鏈方式實現:

3. 寄存器類型

Motorola定義的SPI寄存器包括:

SPI Control Register 1 (SPICR1)??? 控制寄存器1

SPI Control Register 2 (SPICR2)??? 控制寄存器2

SPI Baud Rate Register (SPIBR)??? 波特率寄存器

SPI Status Register (SPISR)??????????? 狀態寄存器 ?(只讀?? 其余均可讀可寫)

SPI Data Register (SPIDR)???????????? ?數據寄存器

通過往寄存器中寫入不同的值,設置SPI模塊的不同屬性。

4. SPI傳輸模式

通過設置控制寄存器SPICR1中的CPOLCPHA位,將SPI可以分成四種傳輸模式。

CPOL,即Clock Polarity,決定時鐘空閑時的電平為高或低。對于SPI數據傳輸格式沒有顯著影響。

1 = 時鐘低電平時有效,空閑時為高

0 = 時鐘高電平時有效,空閑時為低

CPHA,即Clock Phase,定義SPI數據傳輸的兩種基本模式。

1 = 數據采樣發生在時鐘(SCK)偶數(2,4,6,...,16)邊沿(包括上下邊沿)

0 = 數據采樣發生在時鐘(SCK)奇數(1,3,5,...,15)邊沿(包括上下邊沿)

四種模式如下圖所示:

先看第一列兩張圖(CPHA = 0),采樣發生在第一個時鐘跳變沿,即數據采樣發生在SCK奇數邊沿;再看第二列(CPHA =1),采樣發生在第二個時鐘跳變沿,即數據采樣發生在SCK偶數邊沿

第一行兩張圖,第二行兩張圖(CPOL = 1),SCK空閑狀態為高電平。

主從設備進行SPI通訊時,要確保它們的傳輸模式設置相同。

其中mode0mode3最為常見,SPI接口的flash中均會有標注。

5. 讀寫操作

  • 標準SPI讀寫為例

片選---讀指令---地址---數據讀出

片選---寫指令---地址---數據寫入

  • Dual I/O Fast Read Sequence Diagram? 雙路IO

  • Quad I/O Fast Read Sequence Diagram? 四路IO

與IIC一樣,是一種最常見的板內芯片間的串行接口。

歡迎加入硬件QQ群:1018083751,一起討論硬件問題,分享調試心得,共同成長。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253340.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253340.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

駐扎博客園

今天把之前hexo里的一些文章全部轉移到博客園了,之后就在博客園寫點東西,記錄一些生活的瑣事。為什么要移至博客園呢?其實很簡單,這邊可以和一些同意從事前端的小伙伴一起互動。技術還是需要多討論的,希望之后能多更新…

H.264 Profile、Level、Encoder三張簡圖

H.264有四種畫質級別,分別是BP、EP、MP、HP: 1、BP-Baseline Profile:基本畫質。支持I/P 幀,只支持無交錯(Progressive)和CAVLC;   2、EP-Extended profile:進階畫質。支持I/P/B/SP/SI 幀&…

require.js學習記錄

1、簡介 官方對requirejs的描述:RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will impro…

iOS-AFNetworking參數和多文件同時上傳【多文件上傳】

1. 前言 在項目開發中,我們經常需要上傳文件,例如:上傳圖片,上傳各種文件,而有時也需要將參數和多個文件一起上傳,不知道大家的項目中遇到了沒有,我在最近的項目中,就需要這樣的一個…

智能音箱 之 平臺方案簡介

智能音箱,被認為是物聯網時代的入口,在去年成為了各大廠商爭相投入的風口。在當今互聯網時代,它不僅僅是一臺單純的音樂播放器,在其背后支撐的 AI 技術才是整個產品的核心,也是各大公司覬覦物聯網入口的最根本原因。經…

Linux Kconfig及Makefile學習

內核源碼樹的目錄下都有兩個文檔 Kconfig (2.4版本是Config.in)和Makefile。分布到各目錄的Kconfig構成了一個分布式的內核配置數據庫,每個Kconfig分別描述了 所屬目錄源文檔相關的內核配置菜單。在內核配置make menuconfig時,從K…

Linux編程 23 shell編程(結構化條件判斷 命令if -then , if-then ... elif-then ...else,if test)...

一.概述 在上一篇里講到了shell腳本,shell按照命令在腳本中出現的順序依次進行處理,對于順序操作已經足夠了,但許多程序要求對shell腳本中的命令加入一些邏輯流程控制,這樣的命令通常叫做 結構化命令。 1.1 使用if - then語句 --最…

Scala-Spark digamma stackoverflow問題

這兩天在用spark做點擊率的貝葉斯平滑,參考雅虎的論文進行了一番嘗試。 先上代碼: 1 # click_count, show_count # this method takes time2 def do_smooth(data_list):3 import scipy.special as sp4 a, b, i 1.0, 1.0, 05 da, db a, b6 …

IIS接口詳細介紹

1. 概述 I2S Inter-IC Sound Integrated Interchip Sound IIS,是飛利浦在1986年定義(1996年修訂)的數字音頻傳輸標準,用于數字音頻數據在系統內器件之間傳輸,例如編解碼器CODEC、DSP、數字輸入/輸出接口、ADC、DAC…

UVA - 10934 Dropping water balloons(裝滿水的氣球)(dp)

題意:有k個氣球,n層樓,求出至少需要多少次實驗能確定氣球的硬度。氣球不會被實驗所“磨損”。 分析: 1、dp[i][j]表示第i個氣球,測試j次所能確定的最高樓層。 2、假設第i-1個氣球測試j-1次所確定的最高樓層是a, 若第i個…

繼承進階

先講一個例子&#xff1a; #老師有生日&#xff0c;怎么組合哪&#xff1f; class Birthday: # 生日def __init__(self,year,month,day):self.year yearself.month monthself.day dayclass Teacher: # 老師<br>def __init__(self,name,birth):self.name nameself.b…

PCM接口詳細介紹--TDM方式

1. 概述 PCM = Pulse Code Modulation 是通過等時間隔(即采樣率時鐘周期)采樣將模擬信號數字化的方法。圖為4 bit 采樣深度的PCM數據量化示意圖: PCM數字音頻接口,說明接口傳輸的音頻數據是通過PCM方式采樣得到的,區別于PDM形式;IIS傳輸的也是PCM類型數據,屬于其一個特…

網站同源策略

所謂"同源"指的是"三個相同"&#xff1a;協議&#xff0c;域名&#xff0c;端口。 舉例來說&#xff0c;http://www.example.com/dir/page.html這個網址&#xff0c;協議是http://&#xff0c;域名是www.example.com&#xff0c;端口是80&#xff08;默認端…

Kconfig文件結構(圖文)簡介

1 Kconfig和Makefile 毫不夸張地說&#xff0c;Kconfig和Makefile是我們瀏覽內核代碼時最為依仗的兩個文件。基本上&#xff0c;Linux 內核中每一個目錄下邊都會有一個Kconfig文件和一個Makefile文件。Kconfig和Makefile就好似一個城市的地圖&#xff0c;地圖引導我們去 認識一…

PDM接口介紹

1. 概述 PDM Pulse Density Modulation是一種用數字信號表示模擬信號的調制方法。 PDM則使用遠高于PCM采樣率的時鐘采樣調制模擬分量&#xff0c;只有1位輸出&#xff0c;要么為0&#xff0c;要么為1。因此通過PDM方式表示的數字音頻也被稱為Oversampled 1-bit Audio。相比P…

js正則學習分享

http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.htmlhttp://www.cnblogs.com/tylerdonet/p/4262251.html //正整數 /^[0-9]*[1-9][0-9]*$/; //負整數 /^-[0-9]*[1-9][0-9]*$/; //正浮點數 /^(([0-9]\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9])|([0-9]*[1…

Linux系統下UDP發送和接收廣播消息小例子

分類&#xff1a; 網絡通信 2013-01-07 10:54 1336人閱讀 評論(6) 收藏 舉報 [cpp] view plaincopyprint?// 發送端 #include <iostream> #include <stdio.h> #include <sys/socket.h> #include <unistd.h> #include <sys/types.h>…

Kaggle 泰坦尼克

入門kaggle&#xff0c;開始機器學習應用之旅。 參看一些入門的博客&#xff0c;感覺pandas&#xff0c;sklearn需要熟練掌握&#xff0c;同時也學到了一些很有用的tricks&#xff0c;包括數據分析和機器學習的知識點。下面記錄一些有趣的數據分析方法和一個自己擼的小程序。 1…

語音交互設備 前端信號處理技術和語音交互過程介紹

一、前端信號處理 1. 語音檢測&#xff08;VAD&#xff09; 語音檢測&#xff08;英文一般稱為 Voice Activity Detection&#xff0c;VAD&#xff09;的目標是&#xff0c;準確的檢測出音頻信號的語音段起始位置&#xff0c;從而分離出語音段和非語音段&#xff08;靜音或噪…

css中偽類與偽元素的區別

一&#xff1a;偽類&#xff1a;1:定義&#xff1a;css偽類用于向某些選擇器添加特殊效果。 偽類其實與普通的css類相類似&#xff0c;可以為已有的元素添加樣式&#xff0c;但是他只有處于dom無法描述的狀態下才能為文檔樹中的元素添加樣式&#xff0c;所以將其稱為偽類。 2:偽…