Arduino Uno 中的 SPI
SPI 代表序列外設介面。它是一種用於微控制器和外設之間通訊的常用協議。SD 卡是一種使用 SPI 進行通訊的常用外設。以下是 SPI 的一些主要特點:
它使用四條線:
時鐘線 (SCK),
主輸入,從輸出 (MISO),用於主裝置接收和從裝置傳輸,
主輸出,從輸入 (MOSI),用於主裝置傳輸和從裝置接收
從裝置選擇 (SS),用於從多個從裝置中選擇一個要與其進行通訊的裝置。
請注意,主裝置被定義為傳送時鐘訊號的微控制器。
它以全雙工模式工作,這意味著主裝置和從裝置可以同時交換資料。
它使用時鐘,因此它是同步通訊。
一個主裝置可以有多個從裝置。它與哪個從裝置通訊由從裝置選擇 (SS) 引腳決定。如果從裝置的 SS 引腳為低電平,則表示該特定從裝置被選中進行通訊。
與 UART 不同,它不需要起始/停止位來指示通訊的開始或結束。
Arduino Uno 支援 SPI。以下引腳通常用於 SPI:
**MOSI** - 11 或 ICSP-4
**MISO** - 12 或 ICSP-1
**SCK** - 13 或 ICSP-3
**SS** - 10
請注意,ICSP 引腳指的是末端 6 個外露的引腳(見下圖):

Arduino 有一個內建的 SPI 庫。該庫的重要功能如下所示:
**SPI.begin()** → 初始化 SPI
**SPI.transfer()** → 將資料傳輸到外設
**SPI.beginTransaction()** → 開始使用 SPI 埠
**SPI.endTransaction()** → 結束當前事務(如果其他庫正在從中斷使用 SPI,則在您呼叫此函式之前,它們將無法訪問 SPI)
**SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0))** → 在開始事務時更改 SPI 設定。這些設定將保持不變,直到另一個呼叫 beginTransaction 以及 SPISettings 更改這些設定。
SPI 有 4 種模式(上面提到了 SPI_MODE0),每種模式對時鐘極性、時鐘相位、輸出邊沿和資料捕獲有不同的配置。如果您是新手,則無需關注這些術語。您可以繼續使用預設設定。如果您希望深入瞭解詳細資訊,請參閱 SPI 的維基百科頁面此處。
此外,Arduino 上關於 SPI 的參考將有所幫助:https://www.arduino.cc/en/reference/SPI
建議您瀏覽與 SPI 相關的內建示例,可以透過 **檔案 → 示例 → SPI** 訪問這些示例。

資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP