久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8999|回復: 0
打印 上一主題 下一主題
收起左側

SPI數據發送與接收機制(共6頁pdf教程下載)

[復制鏈接]
跳轉到指定樓層
樓主
ID:408932 發表于 2018-10-13 11:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1SPI簡介

SPI 是一個環形總線結構,以主從方式工作,這種模式通常有一個主設備和一個或多個 從設備,需要至少 4 根線(單向傳輸時,3 根線也可以),由ss(cs)、sck、sdi、sdo 構成, 其時序其實很簡單,主要是在 sck 的控制下,兩個雙向移位寄存器進行數據交換,允許 MCU 以全雙工的同步串行方式。只規定了每一幀數據如何傳輸,并未對幀結構的組成做介紹。



2SPI特點


2.1采用主-從模式的控制方式

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


2.2采用同步方式傳輸數據

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


2.3數據交換(DataExchanges)

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

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

在數據傳輸的過程中,每次接收到的數據必須在下一次數據傳輸之前被采樣。如果之前


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


3SPI數據發送與接收機制


3.1概述


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 設備往從設備傳輸時鐘信號, 控制數據交換的時機以及速率;

SS/CS,Slave Select/Chip Select,用于 Master 設備片選從設備,使被選中的從設備能夠 被 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 設備和從設備之間會產生一個數據鏈路回環(Data

Loop),就像上圖所畫的那樣,通過 SDO 和 SDI 管腳,SSPSR 控制數據移入移出 SSPBUF,


Controller 確定 SPI 總線的通信模式,SCK 傳輸時鐘信號。


3.2Timing

CPOL:時鐘極性,表示 SPI 在空閑時,時鐘信號是高電平還是低電平。若 CPOL 被設 為 1,那么該設備在空閑時 SCK 管腳下的時鐘信號為高電平。當CPOL 被設為 0 時則正好 相反。

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

上圖使用的 SPI 數據傳輸模式被設置成 CPOL=1,CPHA=1。


3.3SSPSR


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



Bus-Width 的作用是指定地址總線到 Master 設備之間數據傳輸的單位。 例如,我們想要往 Master 設備里面的 SSPBUF 寫入 16Byte 大小的數據:首先,給Master

設備的配置寄存器設置 Bus-Width 為 Byte;然后往 Master 設備的 Tx-Data 移位寄存器在地 址總線的入口寫入數據,每次寫入 1Byte 大小的數據(使用 writeb 函數);寫完 1Byte 數據之 后,Master 設備里面的 Tx-Data 移位寄存器會自動把從地址總線傳來的 1Byte 數據移入 SSPBUF 里;上述動作一共需要重復執行 16次。

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

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


3.4SSPBUF

我們知道,在每個時鐘周期內,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 設備數據 交換得到的數據。


3.5Controller

Master 設備 里面的 Controller 主要通過時鐘信號(ClockSignal)以及片選信號(SlaveSelect Signal)來控制從


設備。從設備會一直等待,直到接收到 Master 設備發過來的片選信號,然后根據時鐘信號 來工作。

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


3.6綜合舉例

假設主機和從機初始化就緒:并且主機的 sbuff=0xaa,從機的 sbuff=0x55,下面將分步 對 SPI 的 8 個時鐘周期的數據情況演示一遍:假設上升沿發送數據,這樣就完成了兩個寄存 器 8 位的交換,上面的上表示上升沿、下表示下降沿,SDI、SDO 相對于主機而言的。




完整的pdf格式文檔51黑下載地址(共6頁):
SPI數據發送與接收機制.pdf (341.3 KB, 下載次數: 61)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产色爽| 国产亚洲一区二区三区 | 色黄网站 | 日韩欧美三区 | 一区二区在线免费观看 | 精品无码久久久久久国产 | 国产精品视频免费观看 | 黄视频免费在线 | 亚洲精品久久区二区三区蜜桃臀 | 又黄又色 | 欧美日韩高清一区 | 欧美日韩国产一区二区三区 | 精品免费国产视频 | 激情小说综合网 | 五月婷婷激情网 | 国产一区www | 久久新 | 黄色网址在线免费观看 | 久久精品成人 | 九色av| 狠狠干天天干 | 精品中文字幕在线 | 国产成人福利视频在线观看 | 国产中文在线观看 | 国产成人在线一区二区 | 亚洲一区久久 | 一区二区三区av | 亚洲国产成人在线视频 | 网络毛片 | 成人精品 | 欧美一区二区激情三区 | 色婷婷亚洲一区二区三区 | 精品久久久久久 | 国产成人在线播放 | 五月激情婷婷在线 | 久久激情视频 | 一区二区三区中文字幕 | 不卡视频在线 | 网址黄| 国产精品视频网站 | 欧产日产国产精品视频 |