多媒體卡控制器

41
7-1 多多 多多多多

description

多媒體卡控制器. 大綱. 概論 MMC 控制器功能說明 卡片溝通協定說明 MMC 控制器操作 MMC 控制器暫存器. 概論. 多媒體卡( MMC )控制器用來連接存取應用處理器的軟體與 MMC 堆疊 主要以 The MultiMediaCard System Specification Version 2.1 的標準為基礎 MMC 控制器支援從標準 MMC 或序列週邊介面( SPI )匯流排至 MMC 堆疊的解譯協定 軟體必須指示與 MMC 控制器溝通的協定為 MMC 模式或 SPI 模式. 概論 (cont.). MMC 控制器特徵: - PowerPoint PPT Presentation

Transcript of 多媒體卡控制器

Page 1: 多媒體卡控制器

7-1

多媒體卡控制器

Page 2: 多媒體卡控制器

7-2

大綱

概論 MMC 控制器功能說明 卡片溝通協定說明 MMC 控制器操作 MMC 控制器暫存器

Page 3: 多媒體卡控制器

7-3

概論

多媒體卡( MMC )控制器用來連接存取應用處理器的軟體與 MMC 堆疊

主要以 The MultiMediaCard System Specification Version 2.1 的標準為基礎

MMC 控制器支援從標準 MMC 或序列週邊介面( SPI )匯流排至 MMC 堆疊的解譯協定

軟體必須指示與 MMC 控制器溝通的協定為 MMC 模式或 SPI 模式

Page 4: 多媒體卡控制器

7-4

概論 (cont.)

MMC 控制器特徵:– 資料傳送率最高可達 20Mbps– 1 個回應 FIFO ( Response FIFO )– 2 個接收 FIFO ( Dual Receive FIFO )– 2 個傳送 FIFO ( Dual Transmit FIFO )– 不論 MMC 或 SPI 模式皆可支援 2 個 MMC

MMC 控制器處理卡片初始化、 CRC 的產生與確認、命令、回復,以及資料交易

Page 5: 多媒體卡控制器

7-5

概論 (cont.)

MMC 控制器包含命令與控制暫存器、回應 FIFO ,與資料 FIFO 軟體存取這些暫存器與 FIFO ,並且產生命令、中斷回應,與控

制後續動作

MMC 系統互動圖

Page 6: 多媒體卡控制器

7-6

概論 (cont.)

MMC 匯流排連結卡片堆疊與控制器 軟體與控制器可開啟或關閉 MMC 時脈 卡片堆疊與控制器經由命令與資料線進行連續溝通,協定所使用的訊息包含下列的符號:– 命令( Command )– 回應( Response )– 資料( Data )

Page 7: 多媒體卡控制器

7-7

命令符號

命令集包含卡片初始化、卡片暫存器讀取與寫入、資料傳送…等

MMC 控制器會在 MMCMD 訊號線上連續傳送命令符號

位元位置 47 46 [45:40] [39:8] [7:1] 0

寬 (位元 ) 1 1 6 32 7 1

值 0 1 × × × 1

說明 起始位元 傳送位元 命令索引 參數 CRC7

結束位元

命令符號格式

Page 8: 多媒體卡控制器

7-8

回應符號

為命令符號的回覆 每個命令都具有特定的回應類型或是無回應類型

其格式取決於回應類型與卡片模式

Page 9: 多媒體卡控制器

7-9

資料符號

控制器與卡片之間,資料以 8 位元區塊做連續的傳送,速率可達 20Mbps

其格式依卡片的模式為 MMC 或 SPI 而有所不同

串流資料 1 × 無 CRC 1

區塊資料 0 × × 1

說明 起始位元 資料 CRC7 結束位元

值 11111110 × ×

說明 起始位元組 資料 CRC16

MMC 資料符號格式

SPI 資料符號格式

Page 10: 多媒體卡控制器

7-10

命令符號

在 MMC 模式中,所有的操作都包含命令符號,而大部分的命令具有一個相關聯的回應符號

在雙向的 MMCMD 訊號中會傳送與接收命令符號與回應符號

在雙向的 MMDAT 訊號中會傳送與接收資料符號

Page 11: 多媒體卡控制器

7-11

無資料符號之 MMC 模式操作圖

有資料符號之 MMC 模式操作圖

Page 12: 多媒體卡控制器

7-12

SPI模式 在 SPI 模式中,命令都具有命令符號與回應符號 MMCMD 與 MMDAT 訊號在 SPI 模式中為單向 在 MMCMD 訊號中會寫入傳送命令符號與資料符號 在 MMDAT 訊號中會接收回應符號與讀取的資料符號

無資料符號的 SPI 模式操作圖

Page 13: 多媒體卡控制器

7-13

SPI 模式寫入操作圖

SPI 模式讀取操作圖

Page 14: 多媒體卡控制器

7-14

MMC控制器功能說明

概論 MMC 控制器訊號描述 MMC 控制器重置 MMC 卡片初始化程序 MMC 與 SPI 模式 錯誤偵測 中斷與時脈控制 資料 FIFO

Page 15: 多媒體卡控制器

7-15

概論

軟體必須讀取與寫入 MMC 控制器暫存器與 FIFO 來初始啟動與卡片的溝通

MMC 控制器為軟體與 MMC 匯流排之間的介面,負責軟體與 MMC 匯流排之間的時序與協定

MMC 控制器包含:– 控制與狀態暫存器– 一個 16 位元的回應 FIFO ( Response FIFO )– 兩個 8 位元的接收 FIFO ( Receive FIFO )– 兩個 8 位元的傳送 FIFO ( Transmit FIFO )

Page 16: 多媒體卡控制器

7-16

MMC控制器訊號描述

訊號名稱 輸入/輸出 說明

MMCLK 輸出 MMC時脈訊號

MMCMD 雙向 命令線

MMDAT 雙向 資料線

MMCCS0 輸出 晶片選擇 0(僅於 SPI模式中使用)

MMCCS1 輸出 晶片選擇 1(僅於 SPI模式中使用)

Page 17: 多媒體卡控制器

7-17

MMC控制器重置

只可藉由應用處理器的硬重置( hard reset )或軟重置( soft reset )來重置

重置之後,所有的暫存器與 FIFO 控制會設定為初始值

Page 18: 多媒體卡控制器

7-18

MMC卡片初始化程序

藉由將 MMC_CMDAT[INIT] 位元設定為 1 來初始化 MMC 卡

此功能可用來取得已插入匯流排的新卡片 初始化程式期間不會觸發晶片選擇

Page 19: 多媒體卡控制器

7-19

MMC與 SPI模式

重置之後, MMC 卡會處於 MMC 模式 卡片可維持在 MMC 模式中,或是藉由設定 M

MC_SPI 暫存器位元來改變為 SPI 模式

Page 20: 多媒體卡控制器

7-20

MMC模式

在 MMC 模式中, MMCMD 與 MMDAT 訊號為雙向的 藉由 MMCMD 訊號可傳送與接收命令與回應符號 藉由 MMDAT 訊號可讀取與寫入資料 支援下列資料傳送模式:

– 單一區塊( Single Block )讀取/寫入– 多重區塊( Multiple Block )讀取/寫入– 串流( Stream )讀取/寫入

Page 21: 多媒體卡控制器

7-21

SPI模式

在 SPI 模式中, MMCMD 與 MMDAT 線為單向的,而且只允許單一區塊資料傳送

MMCMD 訊號為控制器的輸出,用來傳送命令符號與寫入資料至 MMC 卡

MMDAT 訊號為控制器的輸入,用來接收來自MMC 卡的回應符號與讀取資料

Page 22: 多媒體卡控制器

7-22

錯誤偵測

MMC 控制器會偵測 MMC 匯流排上的下列錯誤,並回報給狀態暫存器( MMC_STAT ):– 回應 CRC 錯誤:在命令回應上發生計算 CRC 錯誤– 回應逾時:在特定的時脈數目之前還沒有開始回應– 寫入資料 CRC 錯誤:卡片傳回資料上的 CRC 狀態錯誤– 讀取資料 CRC 錯誤:資料上發生計算 CRC 錯誤– 讀取逾時:在特定的時脈數目之前不會開始讀取     資料操作

– SPI 資料錯誤: SPI 模式內偵測出讀取資料錯誤符號

Page 23: 多媒體卡控制器

7-23

中斷與時脈控制 MMC 控制器產生中斷來發出命令序列的狀態訊號,而

軟體負責遮蔽中斷、驗證中斷,並執行適當的動作 MMC 控制器與軟體可開啟或關閉 MMC 匯流排時脈

( MMCLK )– MMC 控制器具有一個內部頻率產生器,可啟動、停止,與劃

分 MMC 匯流排時脈– 軟體可能藉由設定 MMC_STRPCL 暫存器適當的位元來啟動

與停止時脈 有助於控制資料流來預防 underrun 與 oveflow ,也可

節省電源

Page 24: 多媒體卡控制器

7-24

資料 FIFO

概論 回應資料 FIFO ( MMC_RES ) 接收資料 FIFO ( MMC_RXFIFO ) 傳送資料 FIFO ( MMC_TXFIFO ) DMA 與程式 I/O

Page 25: 多媒體卡控制器

7-25

概論

包含回應資料 FIFO 、接收資料 FIFO ,與傳送資料 FIFO ,其控制器 FIFO 分別為 MMC_RES 、 MMC_RXFIFO 與 MMC_TXFIFO 。

Page 26: 多媒體卡控制器

7-26

回應資料 FIFO(MMC_RES)

包含控制器傳送命令之後從 MMC 卡所接收的回應

此 FIFO 不包含回應 CRC , CRC 確認之狀態位於狀態暫存器 MMC_STAT 內

Page 27: 多媒體卡控制器

7-27

接收資料 FIFO(MMC_RXFIFO)

具有兩個接收資料 FIFO ,對軟體為唯讀 在系統重置之後與所有命令程序開始時,會清除兩個 FIFO 與其

控制成為啟動狀態 FIFO 在軟體與 MMC 匯流排之間替換 (swap) ,在任何時候,當

軟體讀取其中一個 FIFO 時, MMC 匯流排會寫入至另一個 FIFO 當兩個 FIFO 都成為 full 而且資料傳送未完成時,控制器會關閉

MMCLK ,以預防發生 overflow 當時脈已關閉,來自卡片的資料傳送會停止,直到再次啟動時脈 在軟體清空所連接的 FIFO 之後,控制器會啟動時脈來繼續執行

資料傳送 軟體所連接的 FIFO 之狀態會註冊至 MMC_STAT[RECV_FIFO_

FULL] 位元之中

Page 28: 多媒體卡控制器

7-28

傳送資料 FIFO(MMC_TXFIFO) 具有兩個傳送資料 FIFO ,只可以由軟體寫入 在系統重置後以及所有指令程序的開始,會將兩個 FIFO和其控

制清除為最初狀態 FIFO 在軟體與 MMC 匯流排之間 swap ,在任何時候,當軟體寫

入其中一個 FIFO , MMC 匯流排就會讀取另一個 FIFO 當兩個 FIFO 都成為 empty 而且資料傳送未完成時,控制器會關

閉 MMCLK ,以預防發生 underrun 當時脈已關閉,至卡片的資料傳送會停止,直到再次啟動時脈 當傳送 FIFO 不再為空的時, MMC 控制器會自動重新啟動時脈 軟體所連結的 FIFO 之狀態會註冊到MMC_STAT[XMIT_FIFO_E

MPTY] 位元內

Page 29: 多媒體卡控制器

7-29

DMA與程式 I/O

軟體可能會經由 DMA 或程式 I/O 來和MMC控制器做溝通

為了以 DMA 存取 FIFO ,軟體必須程式化 DMA 來讀取或寫入 MMC FIFO

CMDAT[DMA_EN] 位元之設定:– 1 :啟動與 DMA 的溝通– 0 :啟動與程式 I/O 的溝通

Page 30: 多媒體卡控制器

7-30

卡片溝通協定說明

基本、無資料、命令與回應程序 資料傳送忙碌程序

Page 31: 多媒體卡控制器

7-31

基本、無資料、命令與回應程序 (cont.)

MMC 控制器執行基本的 MMC 或 SPI 匯流排交易 軟體之事件協定:

1. 停止時脈2. 寫入 0x6 至 MMC_I_MASK 暫存器並等待與驗證 MMC_I_REG[CLK

_IS_OFF] 中斷3. 寫入至暫存器 (MMC_CMD,MMC_ARGH,MMC_ARGL,MMC_CMD

AT,…4. 啟動時脈5. 寫入 0x7b 至 MMC_I_MASK 暫存器並等待與驗證 MMC_I_REG[EN

D_CMD_RES] 中斷6. 讀取 MMC_RES FIFO 與 MMC_STAT 暫存器

命令的結果可能會使某些卡片變為忙碌狀態 軟體可能藉由寫入 MMC_I_MASK 暫存器並等待MMC_I_REG[P

RG_DONE] 中斷來等待卡片變為不忙碌,也可啟動與另一個卡片的溝通

Page 32: 多媒體卡控制器

7-32

基本、無資料、命令與回應程序

應用處理器之

MMC 控制器MMC堆疊

Step 1 停止時 , Step 4 啟動時脈

* MMC_CMDAT 不論有資料是否有改變都要寫入

● ● ●

● ● ●

● ● ●

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_MASKStep 6 讀取 MMC_RES FIFO 和 MMC_STAT

Page 33: 多媒體卡控制器

7-33

資料傳送 (cont.)

資料傳送為傳送至卡片的附加資料之命令與回應程序 在啟動時脈之前,軟體必須寫入下列暫存器:

– MMC_RDTO– MMC_BLKLEN– MMC_NOB

啟動時脈之後,軟體必須讀取 MMC_RES ,並讀取或寫入 MMC_RXFIFO 或 MMC_TXFIFO

在寫入資料傳送時,卡片可能變為忙碌狀態 軟體可能會藉由寫入 MMC_I_MASK 暫存器與等待MMC_I_REG

[PRG_DONE] 中斷來等待卡片變為不忙碌,也可啟動與另一個卡片的溝通

資料交易之模式:– 單一區塊、多重區塊、串流模式

Page 34: 多媒體卡控制器

7-34

資料傳送 (cont.)

Step 1資料寫入:MMC_RDTO,MMC_BLKLEN,MMC_NOB

Step 21. 讀取 MMC_RES2. 讀取 MMC_RXFIFO 或寫入 MMC_TXFIFO

Step 3確認 MMC_STAT

Step 41 MMC_TXFIFO 未填滿設定 MMC_PRTBUF[BUF_PART_FULL]2. 設定 MMC_BLKLEN 來指定傳送資料 大小或大小寫入 MMC_TXFIFO

Step 5MMC 匯流排忙碌時會觸發MMC_I_REG[DATA_TRAN_DONE]

Step 6寫入 MMC_I_MASK 與等待 MMC_I_REG[PRG_DONE] 中斷來待卡片變為不忙碌

Page 35: 多媒體卡控制器

7-35

資料傳送

Page 36: 多媒體卡控制器

7-36

忙碌程序 在單一區塊與多重區塊寫入操作每個資料區塊之後, MMC 控制器會自動預期一個來自卡片的忙碌訊號

當 MMC 匯流排上有忙碌訊號,軟體只可傳送以下其中之一命令:– 傳送狀態命令( CMD13 )– 切斷連結命令( CMD7 )

在卡片為忙碌狀態時,若軟體切斷與卡片的連結,則會關閉忙碌訊號,而軟體可連結另一個不同的卡片

Page 37: 多媒體卡控制器

7-37

MMC控制器操作

軟體指示卡片與控制器之間所有溝通的方向 啟動與停止時脈:

– 軟體藉由停止時脈、寫入暫存器,與啟動時脈來存取暫存器集

初始化:– 在卡片初始化程序之前必須加入 80 的時脈週期– 軟體藉由設定 MMC_CMDAT[INIT] 位元來產生 80個時脈週期

Page 38: 多媒體卡控制器

7-38

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

Page 39: 多媒體卡控制器

7-39

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. 啟動時脈

Page 40: 多媒體卡控制器

7-40

MMC控制器操作 (cont.)

資料傳送操作分為:– 單一區塊( Single Block )寫入/讀取– 多重區塊( Multiple Block )寫入/讀取– 串流( Stream )寫入/讀取

在寫入/讀取命令中,軟體必須先停止時脈、設定暫存器,再啟動時脈執行操作

Page 41: 多媒體卡控制器

7-41

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(唯寫)。