3.20.2009

Something about SD

High Speed SD card 的 clock 增加一倍(up to 50MHz),使用 4 bit data line,所以 interface bandwidth 是 25MB/s。

但是 Class 6 的 SD card,速度只有到 6MB/s。
25 -- 6, 哇,Overhead 好大呀!
SD Card power on 時,只使用 D0 傳輸,適當的 initialize (SET_BUS_WIDTH)後,就可以選擇使用 D0 ,或是 D0~D4傳輸。
即使在 D0 (1 line) 傳輸狀態,D1~D4也不可以挪作他用,要保持 tri-state。

問題:只使用 D0 傳輸時,就是 SPI Mode 嗎?
好像不是,SPI 還會用 D3 當 CS用,拿CMD當Di (datain)用。
SD interface 是序列傳輸的 interface,有專屬的雙向 CMD, Data line。
CMD 只有一條線,Data 可以有 1 ~ 4 條。
我以前以為 data (0~3) 是共用的,然後用 CMD 的 high/low 來代表目前 data送的是 command 還是 data.
CMD line 用來傳輸 host 給 SD card 的 command ,同用來傳輸 SD card 給 host 的 response。

Command, Response 都是由單一條 CMD line 傳送的,所以 Command packet,Response Packet 的 size 都不必是 8 的倍數。(?)
但是好像實際都是8 的倍數呀。
SD card 操作的形式都是 由 Command 來操作。
有些 Command 有 Response,Card 會回送 Response回來,
有些 Command 會 引發 Data 的操作,例如 Read Block command,SD card 收到後,就會將 傳送 Data 回 Host,同時回應 Response 回 host。

Write Command 也會引發 Data傳輸,
Host 送給 SD card,SD card 收到後,以D0 作為 busy 信號,
host 送完 Data 要 check D0 (busy) 狀態,等 SD card 動作結束,放掉 D0 後,才可以進行下一個 command/data 操作。

沒有留言: