多媒體卡控制器 7-1 大綱      概論 MMC控制器功能說明 卡片溝通協定說明 MMC控制器操作 MMC控制器暫存器 7-2 概論     多媒體卡(MMC)控制器用來連接存取應用 處理器的軟體與MMC堆疊 主要以The MultiMediaCard System Specification Version 2.1的標準為基礎 MMC控制器支援從標準MMC或序列週邊介面 (SPI)匯流排至MMC堆疊的解譯協定 軟體必須指示與MMC控制器溝通的協定為 MMC模式或SPI模式 7-3 概論(cont.)  MMC控制器特徵: – – – – –  資料傳送率最高可達20Mbps 1個回應FIFO(Response FIFO) 2個接收FIFO(Dual Receive FIFO) 2個傳送FIFO(Dual Transmit FIFO) 不論MMC或SPI模式皆可支援2個MMC MMC控制器處理卡片初始化、CRC的產生與 確認、命令、回復,以及資料交易 7-4

Download Report

Transcript 多媒體卡控制器 7-1 大綱      概論 MMC控制器功能說明 卡片溝通協定說明 MMC控制器操作 MMC控制器暫存器 7-2 概論     多媒體卡(MMC)控制器用來連接存取應用 處理器的軟體與MMC堆疊 主要以The MultiMediaCard System Specification Version 2.1的標準為基礎 MMC控制器支援從標準MMC或序列週邊介面 (SPI)匯流排至MMC堆疊的解譯協定 軟體必須指示與MMC控制器溝通的協定為 MMC模式或SPI模式 7-3 概論(cont.)  MMC控制器特徵: – – – – –  資料傳送率最高可達20Mbps 1個回應FIFO(Response FIFO) 2個接收FIFO(Dual Receive FIFO) 2個傳送FIFO(Dual Transmit FIFO) 不論MMC或SPI模式皆可支援2個MMC MMC控制器處理卡片初始化、CRC的產生與 確認、命令、回復,以及資料交易 7-4

多媒體卡控制器
7-1
大綱





概論
MMC控制器功能說明
卡片溝通協定說明
MMC控制器操作
MMC控制器暫存器
7-2
概論




多媒體卡(MMC)控制器用來連接存取應用
處理器的軟體與MMC堆疊
主要以The MultiMediaCard System
Specification Version 2.1的標準為基礎
MMC控制器支援從標準MMC或序列週邊介面
(SPI)匯流排至MMC堆疊的解譯協定
軟體必須指示與MMC控制器溝通的協定為
MMC模式或SPI模式
7-3
概論(cont.)

MMC控制器特徵:
–
–
–
–
–

資料傳送率最高可達20Mbps
1個回應FIFO(Response FIFO)
2個接收FIFO(Dual Receive FIFO)
2個傳送FIFO(Dual Transmit FIFO)
不論MMC或SPI模式皆可支援2個MMC
MMC控制器處理卡片初始化、CRC的產生與
確認、命令、回復,以及資料交易
7-4
概論(cont.)


MMC控制器包含命令與控制暫存器、回應FIFO,與資料FIFO
軟體存取這些暫存器與FIFO,並且產生命令、中斷回應,與控
制後續動作
MMC系統互動圖
7-5
概論(cont.)



MMC匯流排連結卡片堆疊與控制器
軟體與控制器可開啟或關閉MMC時脈
卡片堆疊與控制器經由命令與資料線進行連續
溝通,協定所使用的訊息包含下列的符號:
–
–
–
命令(Command)
回應(Response)
資料(Data)
7-6
命令符號


命令集包含卡片初始化、卡片暫存器讀取與寫入、資
料傳送…等
MMC控制器會在MMCMD訊號線上連續傳送命令符號
命令符號格式
位元位置
47
46
[45:40]
[39:8]
[7:1]
0
寬(位元)
1
1
6
32
7
1
0
1
×
×
×
1
CRC
7
結束位元
值
說明
起始位元 傳送位元 命令索引 參數
7-7
回應符號



為命令符號的回覆
每個命令都具有特定的回應類型或是無回應類
型
其格式取決於回應類型與卡片模式
7-8
資料符號


控制器與卡片之間,資料以8位元區塊做連續的傳送,
速率可達20Mbps
其格式依卡片的模式為MMC或SPI而有所不同
MMC資料符號格式
串流資料
1
×
無CRC
1
區塊資料
0
×
×
1
說明
起始位元
資料
CRC7
結束位元
SPI資料符號格式
值
說明
11111110
×
×
起始位元組
資料
CRC16
7-9
命令符號



在MMC模式中,所有的操作都包含命令符號,
而大部分的命令具有一個相關聯的回應符號
在雙向的MMCMD訊號中會傳送與接收命令符
號與回應符號
在雙向的MMDAT訊號中會傳送與接收資料符
號
7-10
無資料符號之MMC模式操作圖
有資料符號之MMC模式操作圖
7-11
SPI模式




在SPI模式中,命令都具有命令符號與回應符號
MMCMD與MMDAT訊號在SPI模式中為單向
在MMCMD訊號中會寫入傳送命令符號與資料符號
在MMDAT訊號中會接收回應符號與讀取的資料符號
無資料符號的SPI模式操作圖
7-12
SPI模式讀取操作圖
SPI模式寫入操作圖
7-13
MMC控制器功能說明








概論
MMC控制器訊號描述
MMC控制器重置
MMC卡片初始化程序
MMC與SPI模式
錯誤偵測
中斷與時脈控制
資料FIFO
7-14
概論



軟體必須讀取與寫入MMC控制器暫存器與FIFO來初
始啟動與卡片的溝通
MMC控制器為軟體與MMC匯流排之間的介面,負責
軟體與MMC匯流排之間的時序與協定
MMC控制器包含:
–
–
–
–
控制與狀態暫存器
一個16位元的回應FIFO(Response FIFO)
兩個8位元的接收FIFO(Receive FIFO)
兩個8位元的傳送FIFO(Transmit FIFO)
7-15
MMC控制器訊號描述
訊號名稱
輸入/輸
出
說明
MMCLK
輸出
MMC時脈訊號
MMCMD
雙向
命令線
MMDAT
雙向
資料線
MMCCS0
輸出
晶片選擇0(僅於SPI模式中使用)
MMCCS1
輸出
晶片選擇1(僅於SPI模式中使用)
7-16
MMC控制器重置


只可藉由應用處理器的硬重置(hard reset)
或軟重置(soft reset)來重置
重置之後,所有的暫存器與FIFO控制會設定
為初始值
7-17
MMC卡片初始化程序



藉由將MMC_CMDAT[INIT]位元設定為1來初
始化MMC卡
此功能可用來取得已插入匯流排的新卡片
初始化程式期間不會觸發晶片選擇
7-18
MMC與SPI模式


重置之後,MMC卡會處於MMC模式
卡片可維持在MMC模式中,或是藉由設定
MMC_SPI暫存器位元來改變為SPI模式
7-19
MMC模式




在MMC模式中,MMCMD與MMDAT訊號為雙向的
藉由MMCMD訊號可傳送與接收命令與回應符號
藉由MMDAT訊號可讀取與寫入資料
支援下列資料傳送模式:
– 單一區塊(Single Block)讀取/寫入
– 多重區塊(Multiple Block)讀取/寫入
– 串流(Stream)讀取/寫入
7-20
SPI模式



在SPI模式中,MMCMD與MMDAT線為單向
的,而且只允許單一區塊資料傳送
MMCMD訊號為控制器的輸出,用來傳送命令
符號與寫入資料至MMC卡
MMDAT訊號為控制器的輸入,用來接收來自
MMC卡的回應符號與讀取資料
7-21
錯誤偵測

MMC控制器會偵測MMC匯流排上的下列錯誤,
並回報給狀態暫存器(MMC_STAT):
–
–
–
–
–
–
回應CRC錯誤:在命令回應上發生計算CRC錯誤
回應逾時:在特定的時脈數目之前還沒有開始回應
寫入資料CRC錯誤:卡片傳回資料上的CRC狀態
錯誤
讀取資料CRC錯誤:資料上發生計算CRC錯誤
讀取逾時:在特定的時脈數目之前不會開始讀取
資料操作
SPI資料錯誤:SPI模式內偵測出讀取資料錯誤符號
7-22
中斷與時脈控制


MMC控制器產生中斷來發出命令序列的狀態訊號,而
軟體負責遮蔽中斷、驗證中斷,並執行適當的動作
MMC控制器與軟體可開啟或關閉MMC匯流排時脈
(MMCLK)
–
–

MMC控制器具有一個內部頻率產生器,可啟動、停止,與劃
分MMC匯流排時脈
軟體可能藉由設定MMC_STRPCL暫存器適當的位元來啟動與
停止時脈
有助於控制資料流來預防underrun與oveflow,也可節
省電源
7-23
資料FIFO





概論
回應資料FIFO(MMC_RES)
接收資料FIFO(MMC_RXFIFO)
傳送資料FIFO(MMC_TXFIFO)
DMA與程式I/O
7-24
概論

包含回應資料FIFO、接收資料FIFO,與傳送
資料FIFO,其控制器FIFO分別為MMC_RES、
MMC_RXFIFO與MMC_TXFIFO。
7-25
回應資料FIFO(MMC_RES)


包含控制器傳送命令之後從MMC卡所接收的
回應
此FIFO不包含回應CRC,CRC確認之狀態位
於狀態暫存器MMC_STAT內
7-26
接收資料FIFO(MMC_RXFIFO)







具有兩個接收資料FIFO,對軟體為唯讀
在系統重置之後與所有命令程序開始時,會清除兩個FIFO與其控
制成為啟動狀態
FIFO在軟體與MMC匯流排之間替換(swap),在任何時候,當軟
體讀取其中一個FIFO時,MMC匯流排會寫入至另一個FIFO
當兩個FIFO都成為full而且資料傳送未完成時,控制器會關閉
MMCLK,以預防發生overflow
當時脈已關閉,來自卡片的資料傳送會停止,直到再次啟動時脈
在軟體清空所連接的FIFO之後,控制器會啟動時脈來繼續執行資
料傳送
軟體所連接的FIFO之狀態會註冊至
MMC_STAT[RECV_FIFO_FULL]位元之中
7-27
傳送資料FIFO(MMC_TXFIFO)







具有兩個傳送資料FIFO,只可以由軟體寫入
在系統重置後以及所有指令程序的開始,會將兩個FIFO和其控制
清除為最初狀態
FIFO在軟體與MMC匯流排之間swap,在任何時候,當軟體寫入
其中一個FIFO,MMC匯流排就會讀取另一個FIFO
當兩個FIFO都成為empty而且資料傳送未完成時,控制器會關閉
MMCLK,以預防發生underrun
當時脈已關閉,至卡片的資料傳送會停止,直到再次啟動時脈
當傳送FIFO不再為空的時,MMC控制器會自動重新啟動時脈
軟體所連結的FIFO之狀態會註冊到
MMC_STAT[XMIT_FIFO_EMPTY]位元內
7-28
DMA與程式I/O



軟體可能會經由DMA或程式I/O來和MMC控制
器做溝通
為了以DMA存取FIFO,軟體必須程式化DMA
來讀取或寫入MMC FIFO
CMDAT[DMA_EN]位元之設定:
–
–
1:啟動與DMA的溝通
0:啟動與程式I/O的溝通
7-29
卡片溝通協定說明



基本、無資料、命令與回應程序
資料傳送
忙碌程序
7-30
基本、無資料、命令與回應程序(cont.)


MMC控制器執行基本的MMC或SPI匯流排交易
軟體之事件協定:
1. 停止時脈
2. 寫入0x6至MMC_I_MASK暫存器並等待與驗證
MMC_I_REG[CLK_IS_OFF]中斷
3. 寫入至暫存器
(MMC_CMD,MMC_ARGH,MMC_ARGL,MMC_CMDAT,…
4. 啟動時脈
5. 寫入0x7b至MMC_I_MASK暫存器並等待與驗證
MMC_I_REG[END_CMD_RES]中斷
6. 讀取MMC_RES FIFO與MMC_STAT暫存器


命令的結果可能會使某些卡片變為忙碌狀態
軟體可能藉由寫入MMC_I_MASK暫存器並等待
MMC_I_REG[PRG_DONE]中斷來等待卡片變為不忙碌,也可啟
動與另一個卡片的溝通
7-31
基本、無資料、命令與回應程序
Step 2 寫入0x6至MMC_1_MASK
Step 3 MMC_CMD, MMC_ARGH, MMC_ARGL,
MMC_CMDAT*,MMC_CLKRT,MMC_SPI,
MMC_RESTO寫入資料
Step 5 寫入0x7b至MMC_1_MASK
Step 6 讀取MMC_RES FIFO和MMC_STAT
Step 1 停止時, Step 4 啟動時脈
●●●
●
●
●
應用處理器
之
MMC控制器
MMC
堆疊
●●●
●●●
* MMC_CMDAT不論有資料是否有改變都要寫入
7-32
資料傳送(cont.)


資料傳送為傳送至卡片的附加資料之命令與回應程序
在啟動時脈之前,軟體必須寫入下列暫存器:
–
–
–




MMC_RDTO
MMC_BLKLEN
MMC_NOB
啟動時脈之後,軟體必須讀取MMC_RES,並讀取或寫入
MMC_RXFIFO或MMC_TXFIFO
在寫入資料傳送時,卡片可能變為忙碌狀態
軟體可能會藉由寫入MMC_I_MASK暫存器與等待
MMC_I_REG[PRG_DONE]中斷來等待卡片變為不忙碌,也可啟
動與另一個卡片的溝通
資料交易之模式:
–
單一區塊、多重區塊、串流模式
7-33
資料傳送(cont.)
Step 1
資料寫入:
MMC_RDTO,MMC_BLKLEN,
MMC_NOB
Step 6
寫入MMC_I_MASK與等待
MMC_I_REG[PRG_DONE]中斷
來待卡片變為不忙碌
Step 2
1.讀取MMC_RES
2.讀取MMC_RXFIFO或寫入
MMC_TXFIFO
Step 5
MMC匯流排忙碌時會觸發
MMC_I_REG[DATA_TRAN_DONE]
Step 3
確認MMC_STAT
Step 4
1 MMC_TXFIFO未填滿設定
MMC_PRTBUF[BUF_PART_FULL]
2.設定MMC_BLKLEN來指定傳送資料
大小或大小寫入MMC_TXFIFO
7-34
資料傳送
7-35
忙碌程序


在單一區塊與多重區塊寫入操作每個資料區塊之
後,MMC控制器會自動預期一個來自卡片的忙
碌訊號
當MMC匯流排上有忙碌訊號,軟體只可傳送以
下其中之一命令:
–
–

傳送狀態命令(CMD13)
切斷連結命令(CMD7)
在卡片為忙碌狀態時,若軟體切斷與卡片的連結,
則會關閉忙碌訊號,而軟體可連結另一個不同的
卡片
7-36
MMC控制器操作


軟體指示卡片與控制器之間所有溝通的方向
啟動與停止時脈:
–

軟體藉由停止時脈、寫入暫存器,與啟動時脈來存
取暫存器集
初始化:
–
–
在卡片初始化程序之前必須加入80的時脈週期
軟體藉由設定MMC_CMDAT[INIT]位元來產生80個
時脈週期
7-37
MMC控制器操作(cont.)

啟動SPI模式之程序:
1. MMC_SPI[SPI_EN] 設定為1
2. MMC_SPI[SPI_CS_EN] 設定為1
3. 設定MMC_SPI[SPI_CS_ADDRESS]來指定軟體
欲
定址的卡片,1 = CS0,0 = CS1
7-38
MMC控制器操作(cont.)

無資料命令與回應程序:
–
對於基本無資料傳輸、命令,與回應交易,軟體必須:
1. 關閉時脈
2. 寫入命令索引至MMC_CMD[CMD_INDEX]位元
3. 寫入命令參數至MMC_ARGH與MMC_ARGL暫存器
4. 以適當的數值寫入MMC_CMDAT暫存器集
5. 以適當的數值寫入MMC_RESTO暫存器
6. 寫入0x1b至MMC_I_MASK來反遮蔽
MMC_I_REG[END_CMD_RES]中斷
7. 啟動時脈
7-39
MMC控制器操作(cont.)

資料傳送操作分為:
–
–
–

單一區塊(Single Block)寫入/讀取
多重區塊(Multiple Block)寫入/讀取
串流(Stream)寫入/讀取
在寫入/讀取命令中,軟體必須先停止時脈、
設定暫存器,再啟動時脈執行操作
7-40
MMC控制器暫存器
位址
名稱
描述
0x4110 0000
MMC_TRPCL
控制MMC時脈啟動或停止。
0x4110 0004
MMC_STAT
MMC狀態暫存器(唯讀)。
0x4110 0008
MMC_CLKRT
MMC時脈率。
0x4110 000c
MMC_SPI
SPI模式控制位元。
0x4110 0010
MMC_CMDAT
指令/回應/資料順序控制。
0x4110 0014
MMC_RESTO
預期回應逾時。
0x4110 0018
MMC_RDTO
預期資料讀取逾時。
0x4110 001c
MMC_BLKLEN
資料交易的區塊長度。
0x4110 0020
MMC_NOB
區塊模式,區塊的數目。
0x4110 0024
MMC_PRTBUF
局部MMC_TXFIFO FIFO寫入。
0x4110 0028
MMC_I_MASK
中斷遮罩。
0x4110 002c
MMC_I_REG
中斷暫存器(唯讀)。
0x4110 0030
MMC_CMD
目前指令索引。
0x4110 0034
MMC_ARGH
目前指令參數的MSW部分。
0x4110 0038
MMC_ARGL
目前指令參數的LSW部分。
0x4110 003c
MMC_RES
回應FIFO(唯讀)。
0x4110 0040
MMC_RXFIFO
接收FIFO(唯讀)。
0x4110 0044
MMC_TXFIFO
傳送FIFO(唯寫)。
7-41