# 「[Avionic 101](https://hackmd.io/@Jackiempty/avionic-101-list)」:航電組SD卡研究 SD卡在物理層面,也就是透過 **數據線** 傳輸的通訊協定一般有兩種 1. SPI 2. SDIO SPI(Serial Peripheral Interface)一共有四條訊號線 * SCK * MOSI * MISO * NSS(也可稱為NC、SS、CS) SPI通訊協定將通訊雙方分為主機和從機 主機只能有一個,但從機可以有複數個,因此可以一對一、一對多,但不能多對一 以下是示意圖:  SPI的運作流程如下: 1. 主機拉低 CS 線(選中某個從機)。 2. 主機產生時鐘信號(SCLK),控制訊號間隔。 3. 主機透過 MOSI 傳送資料(一個位元一個位元傳送)。 4. 同時,從機也可透過 MISO 回傳資料(雙向同步)。 5. 資料每個位元在時鐘上升緣或下降緣時傳送(根據設定)。 6. 資料交換完成後,主機拉高 CS 線,結束通訊。 SDIO(Secure Digital Input and Output) SDIO是由一種通訊協定的外設:SD I/O卡所組成的 該外設由五個部份組成 1. 儲存單元 1. 儲存單元介面 -> 資料輸入 1. 電源偵測 -> 確保電壓穩定 1. 卡片及介面控制器 -> 控制SD卡的運作(8個暫存器) 1. 介面驅動器 -> 控制引腳 並且有九條數據線: * CLK時鐘(由主設備產生) * CMD命令/回應線(雙向) * DAT0~DAT3資料線(支援 1-bit 或 4-bit 資料傳輸)-> 4條 * VDD * GND * CD(選用)卡插入偵測(Card Detect) 內部構造圖如下: 當中包含了八個寄存器,用於設定或表示SD卡訊息 以下是各寄存器的功能描述: SDIO的運作流程如下: 1. MCU 送出 命令(CMD0) → 卡重置。 1. MCU 傳送 CMD5 / CMD8 → 確認是否為 SDIO 卡,並獲得功能資訊。 1. 確認支持的 I/O 功能與可用資料線(如 1-bit 或 4-bit)。 1. 轉入高速/多位元傳輸模式,開始進行資料傳輸。 兩種資料傳輸模式的比較: | 項目 | SDIO模式 | SPI模式 | | -------- | -------- | -------- | | 通訊速度| 高(最高可達 50MHz)|低(一般<25MHz)| 支援多功能|✅|❌| 中斷支援|✅|❌(需另接中斷腳位)| 驅動與初始複雜度|較高(需 SDIO 控制器)|較低(一般 MCU 皆可用)| 硬體需求|需要 SD I/O外設支援|只需 SPI 模組| 應用| 適合需要高頻寬、低延遲、複雜通訊邏輯的裝置(例如:影片、圖片) |資料量小、速度中等、通訊邏輯簡單的裝置(例如:OLED、高度數據)| #### SD卡內部的通訊協定(資料傳輸層、內部運作) 採用「命令–回應式資料傳輸」 SD 卡的主控制器(Host,例如 MCU)會: 1. 發出一個命令給 SD 卡。 1. SD 卡接收到命令(Command)後會根據命令內容: 1. 回覆一個「回應(Response)」。 1. 如果命令需要資料交換(例如讀寫),會接著進行資料傳輸 <font color=#FF6600>**不論是 SPI 或 SD 模式,都遵循此命令/回應結構(但格式略有不同)**</font> 參考資料: https://lingshunlab.com/book/esp32/esp32-micro-sd-card-list-read-and-write https://blog.csdn.net/qq_25218501/article/details/131878632 程式參考: https://randomnerdtutorials.com/esp32-cam-take-photo-save-microsd-card/ https://pizgchen.blogspot.com/2020/08/esp32-esp32-cam-micro-sd.html
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up