SPI通訊協議

来源:http://www.cnblogs.com/linhaostudy/archive/2017/04/30/6789933.html
-Advertisement-
Play Games

一、SPI概述 SPI,是英語Serial Peripheral Interface的縮寫,顧名思義就是串列外圍設備介面。SPI,是一種高速的,全雙工,同步的通信匯流排,並且在晶元的管腳上只占用四根線,節約了晶元的管腳,同時為PCB的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的 ...


一、SPI概述

SPI,是英語Serial Peripheral Interface的縮寫,顧名思義就是串列外圍設備介面。SPI,是一種高速的,全雙工,同步的通信匯流排,並且在晶元的管腳上只占用四根線,節約了晶元的管腳,同時為PCB的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的晶元集成了這種通信協議。

SPI是一個環形匯流排結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數據交換

                       

 SPI匯流排的系統

(1)MOSI:主器件數據輸出,從器件數據輸入
2MISO:主器件數據輸入,從器件數據輸出
3SCLK:時鐘信號,由主器件產生
4/SS:從器件使能信號,由主器件控制

 

 

SPI匯流排有四種工作方式(SP0, SP1, SP2, SP3),其中使用的最為廣泛的是SPI0SPI3方式。

 

 二、傳輸過程

上升沿發送、下降沿接收、高位先發送。

 

 

SPI,是英語Serial Peripheral Interface的縮寫,顧名思義就是串列外圍設備介面。SPI,是一種高速的,全雙工,同步的通信匯流排,並且在晶元的管腳上只占用四根線,節約了晶元的管腳,同時為PCB的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的晶元集成了這種通信協議。

 

 

上升沿到來的時候,sdo上的電平將被髮送到從設備的寄存器中。

下降沿到來的時候,sdi上的電平將被接收到主設備的寄存器中。

 

假設主機和從機初始化就緒:並且主機的sbuff=0xaa (10101010),從機的sbuff=0x55 (01010101),下麵將分步對spi8個時鐘周期的數據情況演示一遍(假設上升沿發送數據)

 

 

---------------------------------------------------------------------------------------
脈衝       主機sbuff   從機sbuff   sdi   sdo
---------------------------------------------------------------------------------------
0 00-0   10101010  01010101   0    0
---------------------------------------------------------------------------------------
1 0--1   0101010x  10101011       1
1 1--0   01010100  10101011     0    1
---------------------------------------------------------------------------------------
2 0--1   1010100x  01010110     1    0
2 1--0   10101001  01010110       1    0
---------------------------------------------------------------------------------------
3 0--1   0101001x 10101101    0     1
3 1--0   01010010 10101101    0     1
---------------------------------------------------------------------------------------
4 0--1   1010010x 0101101   1       0
4 1--0   10100101 01011010      1     0
---------------------------------------------------------------------------------------
5 0--1   0100101x 1011010   0      1
5 1--0   01001010 10110101        1
---------------------------------------------------------------------------------------
6 0--1   1001010x 01101010    1    0
6 1--0   10010101 01101010       0
---------------------------------------------------------------------------------------
7 0--1   0010101x  11010101     0     1
7 1--0   00101010  11010101         1
---------------------------------------------------------------------------------------
8 0--1   0101010x  1010101   1    0
8 1--0   0101010 10101010       0
---------------------------------------------------------------------------------------

 

這樣就完成了兩個寄存器8位的交換,上面的0--1表示上升沿、1--0表示下降沿,sdisdo相對於主機而言的。根據以上分析,一個完整的傳送周期是16位,即兩個位元組,因為,首先主機要發送命令過去,然後從機根據主機的名準備數據,主機在下一個8位時鐘周期才把數據讀回來。 

  

SPI主要特點有:可以同時發出和接收串列數據;可以當作主機或從機工作;提供頻率可編程時鐘;發送結束中斷標誌;寫衝突保護;匯流排競爭保護等。

 

 

 

 

三、內部結構

SPI匯流排協議及SPI時序圖詳解 - 蘭花草 - 蘭花草的博客

四、傳輸時序

SPI介面在內部硬體實際上是兩個簡單的移位寄存器,傳輸的數據為8位,在主器件產生的從器件使能信號和移位脈衝下,按位傳輸,高位在前,低位在後。如下圖所示,在SCLK的下降沿上數據改變,上升沿一位數據被存入移位寄存器。

SPI匯流排協議及SPI時序圖詳解 - 蘭花草 - 蘭花草的博客 SPI介面沒有指定的流控制,沒有應答機制確認是否接收到數據。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • shell環境: shell:命令解釋器,是Linux 系統的用戶界面,提供了用戶與內核進行交互操作的一種介面,它接收用戶輸入的命令並把它送入內核去執行。 bash:是GNU 計劃中重要的工具軟體之一,目前也是 Linux 標準的shell ,與sh相容 echo $PATH 顯示當前使用的shel ...
  • 因為原先的windows7 和 centos6.3 安裝在一臺筆記本上。因為centos6.3不能識別無線網卡,在網上找了找,要升級內核到3.2以上。 因為本人初級水平,不敢擅自行動,怕把windows7下的數據弄丟。 就在已經安裝windows7的機子上,劃分出40個g的空間安裝contos7,因... ...
  • 安裝 Kali Linux 後需要做的 20 件事 Linux後總是要做的若幹件事情。由於我有多台筆記本電腦和工作站,所以儘量擴大下列操作步驟的適用範圍,以滿足每個人的需求。這是我在安裝Kali Linux後做的20件事情。你的需求可能全然不同。要是有什麼建議,歡迎留言告知。不用註冊即可留言,歡迎反 ...
  • 作為一個前端工作人員,IE678簡直就是噩夢,還好現在大多數網站已經開始放棄了對IE6/7/8的支持了。 由於Win7系統預設是安裝的IE8,所以在打開部分網站時會提示:IE瀏覽器版本過低。解決方法如下: 1、直接下載Internet Explorer 11安裝程式: Internet Exploy ...
  • # # deb cdrom:[Debian GNU/Linux 2016.1 _Kali-rolling_ - Official Snapshot amd64 LIVE/INSTALL Binary 20160830-11:29]/ kali-rolling contrib main non-fre ...
  • 一、檢測程式 探查進程、ps:查看進程詳情 實時監測進程、top:實時輸出進行詳情和相關係統性能參數 結束進程、kill 二、監測磁碟空間 掛載存儲媒體、mount:mount /dev/sda1 on /boot 常用文件系統類型: vfat:Windows長文件系統 ntfs:WindowsNT ...
  • 使用虛擬機安裝Linux系統時,需要簡單的對虛擬機和Linux系統進行設置才能正確連接主機網路。按照以下步驟進行設置即可: 首先對虛擬機中的Linux系統進行網路設置: 1、依次單擊【System】-->【Preferences】-->【NetworkConnections】,如下圖所示: 2、依次 ...
  • 使用mysql的-e參數可以執行各種sql的(創建,刪除,增,刪,改、查)等各種操作 用法 mysql -uxxx –pxxx -e “mysql 命令” 當然還可以使用 如下寫法 mysql -e -uxxx –pxxx “mysql 命令” 實踐出真知 [root@iZwz99qnmldt4n7... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...