日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SPI及其工作原理浅析

發布時間:2025/5/22 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SPI及其工作原理浅析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明.文章摘自:SPI協議及其工作原理淺析?http://bbs.chinaunix.net/thread-1916003-1-1.html

一、概述.


? ???SPI, Serial Perripheral Interface, 串行外圍設備接口, 是 Motorola 公司推出的一種同步串行接口技術. SPI 總線在物理上是通過接在外圍設備微控制器(PICmicro) 上面的微處理控制單元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模塊(Module)來實現的, 它允許 MCU 以全雙工的同步串行方式, 與各種外圍設備進行高速數據通信.

? ???SPI 主要應用在 EEPROM, Flash, 實時時鐘(RTC), 數模轉換器(ADC), 數字信號處理器(DSP) 以及數字信號解碼器之間. 它在芯片中只占用四根管腳 (Pin) 用來控制以及數據傳輸, 節約了芯片的 pin 數目, 同時為 PCB 在布局上節省了空間. 正是出于這種簡單易用的特性, 現在越來越多的芯片上都集成了 SPI技術.


二、 特點

? ???1. 采用主-從模式(Master-Slave) 的控制方式

? ?? ? SPI 規定了兩個 SPI 設備之間通信必須由主設備 (Master) 來控制次設備 (Slave). 一個 Master 設備可以通過提供 Clock 以及對 Slave 設備進行片選 (Slave Select) 來控制多個 Slave 設備, SPI 協議還規定 Slave 設備的 Clock 由 Master 設備通過 SCK 管腳提供給 Slave 設備, Slave 設備本身不能產生或控制 Clock, 沒有 Clock 則 Slave 設備不能正常工作.

? ???2. 采用同步方式(Synchronous)傳輸數據

? ?? ? Master 設備會根據將要交換的數據來產生相應的時鐘脈沖(Clock Pulse), 時鐘脈沖組成了時鐘信號(Clock Signal) , 時鐘信號通過時鐘極性 (CPOL) 和 時鐘相位 (CPHA) 控制著兩個 SPI 設備間何時數據交換以及何時對接收到的數據進行采樣, 來保證數據在兩個設備之間是同步傳輸的.

? ???3. 數據交換(Data Exchanges)

? ?? ? SPI 設備間的數據傳輸之所以又被稱為數據交換, 是因為 SPI 協議規定一個 SPI 設備不能在數據通信過程中僅僅只充當一個 "發送者(Transmitter)" 或者 "接收者(Receiver)". 在每個 Clock 周期內, SPI 設備都會發送并接收一個 bit 大小的數據, 相當于該設備有一個 bit 大小的數據被交換了.

? ?? ? 一個 Slave 設備要想能夠接收到 Master 發過來的控制信號, 必須在此之前能夠被 Master 設備進行訪問 (Access). 所以, Master 設備必須首先通過 SS/CS pin 對 Slave 設備進行片選, 把想要訪問的 Slave 設備選上.

? ?? ? 在數據傳輸的過程中,??每次接收到的數據必須在下一次數據傳輸之前被采樣. 如果之前接收到的數據沒有被讀取, 那么這些已經接收完成的數據將有可能會被丟棄,??導致 SPI 物理模塊最終失效. 因此, 在程序中一般都會在 SPI 傳輸完數據后, 去讀取 SPI 設備里的數據, 即使這些數據(Dummy Data)在我們的程序里是無用的.


三、 工作機制

? ???1. 概述

? ?? ???

? ?? ?上圖只是對 SPI 設備間通信的一個簡單的描述, 下面就來解釋一下圖中所示的幾個組件(Module):

? ?? ? SSPBUF, Synchronous Serial Port Buffer, 泛指 SPI 設備里面的內部緩沖區, 一般在物理上是以 FIFO 的形式, 保存傳輸過程中的臨時數據;

? ?? ? SSPSR, Synchronous Serial Port Register, 泛指 SPI 設備里面的移位寄存器(Shift Regitser), 它的作用是根據設置好的數據位寬(bit-width) 把數據移入或者移出 SSPBUF;

? ?? ? Controller, 泛指 SPI 設備里面的控制寄存器, 可以通過配置它們來設置 SPI 總線的傳輸模式.

? ?? ???通常情況下, 我們只需要對上圖所描述的四個管腳(pin) 進行編程即可控制整個 SPI 設備之間的數據通信:

? ?? ???SCK, Serial Clock, 主要的作用是 Master 設備往 Slave 設備傳輸時鐘信號, 控制數據交換的時機以及速率;

? ?? ???SS/CS, Slave Select/Chip Select, 用于 Master 設備片選 Slave 設備, 使被選中的 Slave 設備能夠被 Master 設備所訪問;

? ?? ???SDO/MOSI, Serial Data Output/Master Out Slave In, 在 Master 上面也被稱為 Tx-Channel, 作為數據的出口, 主要用于 SPI 設備發送數據;

? ?? ???SDI/MISO, Serial Data Input/Master In Slave Out, 在 Master 上面也被稱為 Rx-Channel, 作為數據的入口, 主要用于SPI 設備接收數據;

? ?? ???SPI 設備在進行通信的過程中, Master 設備和 Slave 設備之間會產生一個數據鏈路回環(Data Loop), 就像上圖所畫的那樣, 通過 SDO 和 SDI 管腳, SSPSR 控制數據移入移出 SSPBUF, Controller 確定 SPI 總線的通信模式, SCK 傳輸時鐘信號.


? ?? ?2. Timing.

? ?? ?????

? ?? ???上圖通過 Master 設備與 Slave 設備之間交換1 Byte 數據來說明 SPI 協議的工作機制.

? ?? ???首先,??在這里解釋一下兩個概念:
? ?? ???CPOL: 時鐘極性, 表示 SPI 在空閑時, 時鐘信號是高電平還是低電平. 若 CPOL 被設為 1, 那么該設備在空閑時 SCK 管腳下的時鐘信號為高電平. 當 CPOL 被設為 0 時則正好相反.

? ?? ???CPHA: 時鐘相位, 表示 SPI 設備是在 SCK 管腳上的時鐘信號變為上升沿時觸發數據采樣, 還是在時鐘信號變為下降沿時觸發數據采樣. 若 CPHA 被設置為 1, 則 SPI 設備在時鐘信號變為下降沿時觸發數據采樣, 在上升沿時發送數據. 當 CPHA 被設為 0 時也正好相反.
??

? ?? ???上圖里的 "Mode 1, 1" 說明了本例所使用的 SPI 數據傳輸模式被設置成 CPOL = 1, CPHA = 1. 這樣, 在一個 Clock 周期內, 每個單獨的 SPI 設備都能以全雙工(Full-Duplex) 的方式, 同時發送和接收 1 bit 數據, 即相當于交換了 1 bit 大小的數據. 如果 SPI 總線的 Channel-Width 被設置成 Byte, 表示 SPI 總線上每次數據傳輸的最小單位為 Byte, 那么掛載在該 SPI 總線的設備每次數據傳輸的過程至少需要 8 個 Clock 周期(忽略設備的物理延遲). 因此, SPI 總線的頻率越快, Clock 周期越短, 則 SPI 設備間數據交換的速率就越快.


? ???3. SSPSR.

? ?? ?????

? ?? ???SSPSR 是 SPI 設備內部的移位寄存器(Shift Register). 它的主要作用是根據 SPI 時鐘信號狀態, 往 SSPBUF 里移入或者移出數據, 每次移動的數據大小由 Bus-Width 以及 Channel-Width 所決定.

? ?? ???Bus-Width 的作用是指定地址總線到 Master 設備之間數據傳輸的單位.
? ?? ???例如, 我們想要往 Master 設備里面的 SSPBUF 寫入 16 Byte 大小的數據: 首先, 給 Master 設備的配置寄存器設置 Bus-Width 為 Byte; 然后往 Master 設備的 Tx-Data 移位寄存器在地址總線的入口寫入數據, 每次寫入 1 Byte 大小的數據(使用 writeb 函數); 寫完 1 Byte 數據之后, Master 設備里面的 Tx-Data 移位寄存器會自動把從地址總線傳來的1 Byte 數據移入 SSPBUF 里; 上述動作一共需要重復執行 16 次.

? ?? ???Channel-Width 的作用是指定 Master 設備與 Slave 設備之間數據傳輸的單位. 與 Bus-Width 相似,??Master 設備內部的移位寄存器會依據 Channel-Width 自動地把數據從 Master-SSPBUF 里通過 Master-SDO 管腳搬運到 Slave 設備里的 Slave-SDI 引腳, Slave-SSPSR 再把每次接收的數據移入 Slave-SSPBUF里.

? ?? ???通常情況下, Bus-Width 總是會大于或等于 Channel-Width, 這樣能保證不會出現因 Master 與 Slave 之間數據交換的頻率比地址總線與 Master 之間的數據交換頻率要快, 導致 SSPBUF 里面存放的數據為無效數據這樣的情況.


? ?? ???4. SSPBUF.

? ?? ?? ???

? ?? ?? ? 我們知道, 在每個時鐘周期內, Master 與 Slave 之間交換的數據其實都是 SPI 內部移位寄存器從 SSPBUF 里面拷貝的. 我們可以通過往 SSPBUF 對應的寄存器 (Tx-Data / Rx-Data register) 里讀寫數據, 間接地操控 SPI 設備內部的 SSPBUF.

? ?? ?? ? 例如, 在發送數據之前, 我們應該先往 Master 的 Tx-Data 寄存器寫入將要發送出去的數據, 這些數據會被 Master-SSPSR 移位寄存器根據 Bus-Width 自動移入 Master-SSPBUF 里, 然后這些數據又會被 Master-SSPSR 根據 Channel-Width 從 Master-SSPBUF 中移出, 通過 Master-SDO??管腳傳給 Slave-SDI 管腳,??Slave-SSPSR 則把從??Slave-SDI 接收到的數據移入 Slave-SSPBUF 里.??與此同時, Slave-SSPBUF 里面的數據根據每次接收數據的大小(Channel-Width), 通過 Slave-SDO 發往 Master-SDI, Master-SSPSR 再把從 Master-SDI 接收的數據移入 Master-SSPBUF.在單次數據傳輸完成之后, 用戶程序可以通過從 Master 設備的 Rx-Data 寄存器讀取 Master 設備數據交換得到的數據.


? ?? ?? ?5. Controller.

? ?? ?? ???

? ?? ?? ? Master 設備里面的 Controller 主要通過時鐘信號(Clock Signal)以及片選信號(Slave Select Signal)來控制 Slave 設備. Slave 設備會一直等待, 直到接收到 Master 設備發過來的片選信號, 然后根據時鐘信號來工作.

? ?? ?? ? Master 設備的片選操作必須由程序所實現. 例如: 由程序把 SS/CS 管腳的時鐘信號拉低電平, 完成 SPI 設備數據通信的前期工作; 當程序想讓 SPI 設備結束數據通信時, 再把 SS/CS 管腳上的時鐘信號拉高電平.

總結

以上是生活随笔為你收集整理的SPI及其工作原理浅析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美自拍偷拍 | 精品一区二区三区四区 | 久久久久国产精品熟女影院 | 国产美女自拍视频 | 欧美在线一级视频 | 成人在线观看免费 | 久久久线视频 10 | 国产一区不卡视频 | 在线观看高清视频 | 久久伊人网站 | 亚洲视屏一区 | julia一区二区三区中文字幕 | www.九九热.com| 播播开心激情网 | 国产乱国产乱 | 国产草逼视频 | 亚洲福利专区 | 一区二区黄色 | 国产乱人乱偷精品视频a人人澡 | 午夜专区 | 午夜男人影院 | 中文字幕 欧美激情 | 久久亚洲影院 | 少妇愉情理伦片bd | 久久中文字幕在线观看 | 国产干b| 成人免费播放视频 | 最好看的电影2019中文字幕 | 激情文学欧美 | 日本aⅴ在线观看 | 亚洲av无码乱码国产麻豆 | 亚洲少妇xxx | 91免费看. | 欧美精品动漫 | 欧美色图视频在线 | 男男play视频 | 国产成人无码专区 | 91你懂的| 韩国一区二区在线播放 | 黄色小毛片| 香蕉911| 嫩草伊人久久精品少妇av | 国产在线视频你懂得 | 成人中文视频 | 亚洲精品中文字幕 | 丰满岳乱妇在线观看中字无码 | 亚洲视频一区在线观看 | 日本韩国免费观看 | 日本中文字幕精品 | 国产亚洲无| 中日韩免费视频 | 人人搞人人插 | www.三区| 视频在线播 | 中文字幕首页 | 51精产品一区一区三区 | 麻豆一区产品精品蜜桃的特点 | 一级特黄录像免费看 | 开心激情综合网 | 亚洲一区 | 日产精品久久久久久久蜜臀 | 又黄又爽又色视频 | 亚洲乱码国产乱码精品精98午夜 | 91成人免费在线 | 国产一级精品毛片 | 麻豆91精品91久久久 | 饥渴的少妇和男按摩师 | 亚洲91av | 成人福利午夜 | 色综合av| 私密spa按摩按到高潮 | 91亚洲视频 | 欧美体内she精高潮 日韩一区免费 | 国产网站无遮挡 | 毛茸茸毛片 | 91中文字幕永久在线 | 国产精品三级在线观看无码 | 韩国一区二区三区在线观看 | 亚洲乱码一区二区三区在线观看 | 国产又黄又爽视频 | 国产手机av在线 | 91成人在线免费 | 中文无码av一区二区三区 | 欧美黄色一级生活片 | 青娱乐在线免费观看 | 中文字幕麻豆 | 成人在线免费高清视频 | 91精品国产综合久久久久 | 五十路六十路七十路熟婆 | 中文字幕av片 | 日韩av成人网 | 深夜福利av | 国产精品一区二区三区久久 | 综合第一页 | 99久久成人| 热播网 | 亚洲第5页| 亚洲深夜福利视频 | 亚洲精品日日夜夜 |