1. sdio的協議簡介:
sdio的全稱是安全數字輸入/輸出介面,一般都是用來sd卡,sd i/o 卡,mmc卡進行通訊。
sdio匯流排擁有9根線,乙個clk時鐘線,四條data雙向資料線,一條雙向指令線cmd,
vdd,vss1,vss2電源和地訊號線。
scl線: 時鐘訊號由主機產生,主機通過時鐘線的乙個時鐘週期,與從機的資料和指令線進行同步傳輸,時鐘以上公升沿為有效
cmd線: 主機通過cmd卡給sd卡傳送指令,sd卡接收到指令後如果主機要求sd提**答,sd**過cmd線返回應答資訊。
data0-3線: 主機通過該線進行與sd卡進行資料讀/寫,sd卡可以將data0拉低表示此時sd卡位忙狀態。
vdd.vss1-2: 電源和地訊號線。
sd卡操作過程會以兩種不同的時鐘進行資料通過,一種為fod時鐘頻率,最高為400khz,用來識別卡階段。另一種為資料傳輸模式下時鐘頻率fpp,預設最高為25mhz,用來資料傳輸。時鐘的配置由stm32專門暫存器配置
擁有8個暫存器,由於設定表示sd卡的資訊,這些暫存器只能通過對應的命令進行訪問,sdio定義了64個命令,每個命令都有特殊的意義,可以實現某一特定功能
ocr暫存器:32 bit寬度的操作條件暫存器(ocr)儲存了卡的vdd 電壓描述。
cid暫存器:125bit寬度 卡的識別號,用來識別卡的個體號碼(唯一的)
rca暫存器: 16bit寬度 給卡的進行分配相對位址,縮短id號的長度,為每張卡進行標號。
dsr暫存器 : 16bit寬度 是可選的,可以用來在擴充套件操作條件中,提高
匯流排效能(受匯流排長度,傳輸速率和卡數目的影響)。
scr暫存器:64bit寬度 作為csd 暫存器的補充,另乙個配置暫存器稱為sd 卡配置暫存器(scr)
資料:主機向sd卡傳送讀/寫指令,sd卡會返回應答資訊,然後會以資料塊+crc寫/讀此時sd卡會返回忙狀態(如果是讀的話,sd卡不會返回忙狀態)告訴主機此時忙,不可繼續寫/讀。主機可控制使用單線傳輸還是4線傳輸。(以塊的形式,有單塊或者多塊,兩種傳輸的命令是不一樣的,如果多塊寫/讀,主機需要傳送停止寫/讀指令)
sd卡的資料報傳輸形式:
當主機選擇以4資料線進行傳輸時,每次傳輸4bit資料,每個資料線都會有起始位,終止位,crc位,crc位會對每個資料線進行檢查,並把檢查結果彙總返然後在資料傳輸完後通過data0線返回給主機。
sd卡資料報有兩種常規:
資料8bit寬度:會以低位元組開始傳送再發高位元組,每個位元組都會先傳送高位,然後在傳送低位。
資料報格式: 主機通過cmd線給ssr暫存器傳送指令,然後通過資料線給ssr暫存器傳送資料,會以512bit的形式傳送/接收,如圖所示
sd卡的指令型別
bc 無響應廣播命令 主機傳送給所有的sd卡,不返回任務應答
bcr 帶響應廣播命令 主機傳送給所有的sd卡,同時返回所有卡的應答資訊
ac 定址命令 傳送給sd卡 選定的某一張卡,data線無資料傳輸
adtc 定址資料傳輸命令 傳送給sd卡選定的某一張卡,data線有資料傳輸
sd卡的響應結構(sd卡返回)
r1 :正常響應命令 起始位1bit+傳位1bit+命令號6bit+卡狀態32bit+crc位7bit+終止位1bit
r2 :cid,csd暫存器 起始位1bit+傳輸位1bit+保留[133:128]6bit+cid/csd暫存器值127bit+終止位1bit
r3 :ocr暫存器 起始位1bit+傳輸位1bit+保留[45:40]6bit+ocr暫存器32bit+crc位7bit+終止位1bit
r6 :rca暫存器 起始位1bit+傳輸位1bit+cmd3指令6bit+rca暫存器的值16bit+sd卡狀態16bit+crc位7bit+終止位1bit
r7: rca暫存器(sd卡內部的電壓資訊) 起始位1bit+傳輸位1bit+cmd8指令6bit+保留[39:20]20bit+接收電壓4bit+檢測模式8bit+ crc位7bit+終止位1bit
sdio主機的指令寫/讀流程
傳送:當主機需要傳送指令時,會控制sdio把cmd暫存器裡存放的指令和資料傳送給移位暫存器,然後移位暫存器一位一位的發出到每個資料都會經過crc校驗發出到sd卡,此時主機通過控制單元會是寫狀態 。傳送完後主機會檢查狀態標誌位,看是否傳送完成。
接收:當主機需要接收資料時,資料從sdio_cmd線進入到移位暫存器,然後移位暫存器會一位一位的傳送到響應暫存器,會把接收到的資料分別放好位置,然後主機可以通過ahb匯流排讀取響應暫存器讀取資料。
sdio主機的資料寫/讀流程
傳送:當主機需要傳送資料時,會通過指令單元傳送寫指令,傳送完後會把資料放到fifo,然後fifo會把資料搬運到移位暫存器,然後移位暫存器會一位一位的發出,每個資料位都會經過crc校驗發出,此時主機狀態為寫狀態,傳送完後主機會檢查狀態標誌位,看是否傳送完成。
接收:當主機需要接收資料時,會通過指令單元傳送讀指令,傳送指令後,sd卡會通過sdio_data0-3線傳送給主機,主機接收到資料後會把資料放到移位暫存器,然後通過移位暫存器一位一位的傳送fifo,然後主機通過fifo讀取到資料。
fifo:資料儲存緩衝器
SDIO匯流排協議
sdio採用host device模式,所有通訊都由host端發命令,device裝置只要解析host命令就可與host進行通訊。sdio匯流排的幾根線 1.clk訊號 host給device的時鐘訊號.2.cmd訊號 雙向的訊號,用於傳送命令和反應。3.dat0 dat3 訊號 四條用於傳送的資料...
SDIO匯流排協議
sdio採用host device模式,所有通訊都由host端發命令,device裝置只要解析host命令就可與host進行通訊。sdio匯流排的幾根線 1.clk訊號 host給device的時鐘訊號.2.cmd訊號 雙向的訊號,用於傳送命令和反應。3.dat0 dat3 訊號 四條用於傳送的資料...
SDIO協議讀寫SD卡之卡識別模式介紹
sd卡的工作模式分為兩類,分別為卡識別模式和資料傳輸模式,在sd卡上電或者主機發出復位命令之後的預設工作模式為卡識別模式。本文主要對卡識別模式進行介紹。在利用sdio協議進行sd卡驅動開發中,與spi協議驅動序列flash類似,也是利用各種不同的命令實現對sd卡的控制。此處進行乙個大致的闡述。在sd...