Download presentation
Presentation is loading. Please wait.
1
USB 裝置控制器 8- 1
2
大綱 USB概觀 裝置組態 USB協定 UDC操作 UDC暫存器定義 8-2
3
USB概觀 通用序列匯流排裝置控制器(UDC): 遵循USB標準及支援所有主機發出的標準裝置請求。 支援16個端點(endpoints) 。
12 Mbps。 半雙工。 8-3
4
USB概觀 (cont.) UDC資料傳送欄位(Field): 同步(Sync) 封包識別字(PID) 位址(Address)
端點(Endpoint) 訊框數目(Frame Number) 資料(Data) 循環冗餘核對(CRC) 8-4
5
USB概觀 (cont.) 結合欄位(Field) → 封包(Packet)。 封包類型: 符記(Token)
訊框的開始(Start of Frame) 資料(Data) 信號交換(Handshake) 8-5
6
USB概觀 (cont.) 組合封包(Packet) → 交易(Transaction)。 交易種類: 大量(Bulk)
控制(Control) 中斷(Interrupt) 等時(Isochronous) 8-6
7
USB概觀 (cont.) UDC使用雙埠(dual-port)記憶體並支援FIFO操作。
Bulk與Isochronous端點FIFO結構為雙倍緩衝區,當端點在處理一個封包時可以同時組合另一個封包。 端點0只用來傳輸設定UDC組態的控制交易,負責: 連接 指定位址 端點組態 匯流排計數 切斷連接 8-7
8
USB概觀 (cont.) UDC介面專用外部腳位: UDC+ UDC- USB協定在這兩個腳位上使用不同信號做半雙工資料傳輸。 8-8
9
USB概觀 (cont.) 序列匯流排使用不同的信號來同時傳送多個狀態: 閒置(Idle) 恢復(Resume)
封包開始(Start of Packet) 封包結束(End of Packet) 切斷連接(Disconnect) 連接(Connect) 重置(Reset) 8-9
10
大綱 USB概觀 裝置組態 USB協定 UDC操作 UDC暫存器定義 8-10
11
FIFO大小(bytes) × FIFO數目
端點編號 類型 功能 FIFO大小(bytes) × FIFO數目 Control IN/OUT 16 1 Bulk IN 64 x 2 2 OUT 3 Isochronous 256 x 2 4 5 Interrupt 8 6 7 9 10 11 12 13 14 15 8-11
12
大綱 USB概觀 裝置組態 USB協定 UDC操作 UDC暫存器定義 8-12
13
USB協定 信號層級 位元編碼 欄位格式 封包格式 交易格式 UDC設備需求 8-13
14
信號層級 (Signaling Level)
USB使用不同的信號來作資料編碼與指示不同的匯流排狀況。 UDC+與UDC-編碼會表現出4種不同的狀態: 1:UDC+為high、UDC-為low 。 0:UDC+為low、UDC-為high 。 其餘的兩個狀態用來表示目前USB狀態 。 8-14
15
USB狀態 匯流排狀態 說明 Idle UDC+為高位,UDC-為低位(與1相同)。 Suspend Idle狀態超過3ms。 Resume
Start of Packet 自Idle轉換為Resume。 End of Packet UDC+與UDC-為低位達2位元時間,之後為1位元時間的Idle 。 Disconnect UDC+與UDC-在單一結束低位門檻之下超過2.5μs(切斷連接為靜態匯流排狀態,當沒有裝置接到集線器埠時則會發生)。 Connect UDC+或UDC-為高位超過2.5μs。 Reset UDC+與UDC-為低位超過2.5μs(由主機控制器發出重置訊號,並由裝置控制器感測)。 8-15
16
位元編碼 USB使用不歸零翻轉(NRZI)做位元編碼。 有狀態轉換:0 無狀態轉換:1 8-16
17
欄位格式 同步(Sync) 封包識別字(PID)。 位址(Address) 每個封包的第一個欄位。 8位元寬(0x80)。 8位元寬。
前四個位元表示封包類型(Token、Data、Handshake、Special)、封包格式、與錯誤偵測的類型。 後四個位元為確認欄位,確定傳送PID沒有發生錯誤。 位址(Address) 7位元寬,允許127個獨立的裝置置於USB上。 8-17
18
欄位格式(cont.) 端點(Endpoint) 訊框數目(Frame Number) 資料(Data) 4位元寬 。
決定要定址到哪一個UDC端點。 訊框數目(Frame Number) 11位元寬。 主機每一次傳送訊框會增加其值。 控制等時傳輸。 資料(Data) 0到1023位元組寬。 8-18
19
欄位格式(cont.) 循環冗餘核對(CRC) 用來偵測符記與資料傳輸期間所發生的錯誤。 應用至封包內全部的欄位(PID欄位除外)。
8-19
20
封包格式 USB支援四種封包類型: Token Data Handshake Special 8-20
21
封包格式 (cont.) Token封包: Token封包位於Frame的起端,用來識別OUT、IN、SOF、SETUP處理。
SOF為特別的Token封包,主機每隔1ms就會發出一次,以避免UDC進入暫停模式。格式如下: 8 bits 7 bits 4 bits 5 bits Sync PID Address Endpoint CRC5 8 bits 11 bits 5 bits Sync PID Frame Number CRC5 8-21
22
封包格式 (cont.) Data封包: 用來傳輸主機和UDC之間的資料。 8 bits 0 ~ 1023 bytes 16 bits
Sync PID Data CRC16 8-22
23
封包格式 (cont.) Handshake封包: 用來描述資料交易狀態,包括:確認資料已經成功接收、流量控制以及延遲情況。 三種型態:
ACK:資料封包已被接收,無位元填充、無CRC或PID檢查錯誤發生。 NAK:UDC無法從主機接收資料或沒有傳輸資料。 STALL:UDC無法傳送/接收資料,需要主機介入來清除延遲狀況。 8 bits Sync PID 8-23
24
交易格式 USB協定使用四個不同的交易格式: USB所有交易均由主機開始,主機和UDC之間同時只能有一個方向的傳輸(半雙工)。
大量(Bulk) 控制(Control) 中斷(Interrupt) 等時(Isochronous) USB所有交易均由主機開始,主機和UDC之間同時只能有一個方向的傳輸(半雙工)。 8-24
25
交易格式 (cont.) Bulk交易: 使用封包錯誤偵測、重試,以保證在主機和UDC之間傳輸資料無錯誤。
由三種封包組成:Token、Data、Handshake。 動作 Token封包 Data封包 Handshake封包 主機成功地從UDC接收資料 輸入 Data0/Data1 ACK UDC暫時無法傳送資料 無 NAK UDC端需要主機介入 STALL 主機偵測出PID、CRC或位元填充錯誤 UDC成功地從主機接收資料 輸出 UDC暫時無法接收資料 UDC偵測出PID、CRC或位元填充錯誤 從UDC到主機的封包為粗體字 8-25
26
交易格式 (cont.) Isochronous交易: 主機和UDC之間資料是以固定速率傳輸並可容忍錯誤。
由兩個封包組成:Token、Data。 動作 Token封包 Data封包 主機從UDC接收資料 輸入 DATA0 UDC從主機接收資料 輸出 從UDC到主機的封包為粗體字 8-26
27
交易格式 (cont.) Control交易: 用來設定端點組態,並詢問其狀態。
包含建立封包 、資料封包(optional)、信號交換封包。 動作 Token封包 Data封包 Handshake封包 UDC成功地從主機接收控制 建立 DATA0 ACK UDC暫時無法接收資料 NAK UDC端點需要主機介入 STALL UDC偵測出PID、CRC或位元填充錯誤 無 從UDC到主機的封包為粗體字 8-27
28
交易格式 (cont.) Interrupt交易: 用來詢問設備的狀態。 包含建立封包 、資料封包(optional)、信號交換封包。 動作
Token封包 Data封包 Handshake封包 主機成功地從UDC接收資料 輸入 DATA0 ACK UDC暫時無法傳送資料 無 NAK UDC端點需要主機介入 STALL 主機偵測出PID、CRC或位元填充錯誤 從UDC到主機的封包為粗體字 8-28
29
UDC設備請求 UDC使用控制、狀態、資料暫存器來監控端點1~15的傳送與接收FIFO。
主機使用設備請求當成控制交易,經由USB送給端點0來控制UDC的組態。 對端點0的建立封包長度為8 bytes,指明: 資料傳輸方向:主機到設備,設備到主機。 資料傳輸型態:standard、class、vendor。 資料接收:設備、介面、端點、其他。 傳輸的位元組數目。 Index或Offset。 數值:用來傳送可變大小的資料參數。 設備需求。 8-29
30
UDC設備請求 (cont.) 請求 名稱 SET_FEATURE 啟動特定的特色,例如設備遠程甦醒或端點延遲。 CLEAR_FEATURE
清除或關閉特定的特色。 SET_CONFIGURATION 為了操作,設定UDC組態。在Megacell重置後或是經由USB發出重置訊號後使用。 GET_CONFIGURATION UDC目前組態傳回給主機。 SET_DESCIRPTOR 設定存在敘述元或新敘述元。存在敘述元包括:設備、組態、串流、介面和端點。 GET_DIESCIRPTOR 若它存在,則傳回特定的敘述元。 SET_INTERFACE 為UDC的介面選擇一個交替設定。 GET_INTERFACE 傳回選擇的交替設定給特定的特色。 GET_STATUS 傳回UDC的狀態,包括:遠端甦醒、自動供電、資料方向、端點數目和延遲情況。 SET_ADDRESS 為了未來設備存取,設定UDC的7位元位址值。 SYNCH_FRAME 設定且描述端點的同步訊框。 8-30
31
大綱 USB概觀 裝置組態 USB協定 UDC操作 UDC暫存器定義 8-31
32
UDC操作 Case 1:EP0控制讀取 Case 2:含過早狀態階段的EP0控制讀取 Case 3:含或不含過早狀態階段的EP0控制寫入
Case 5:EP1資料傳送(BULK-IN) Case 6:EP2資料接收(BULK-OUT) Case 7:EP3資料傳送(ISOCHRONOUS-IN) Case 8:EP4資料接收(ISOCHRONOUS-OUT) Case 9:EP5資料傳送(INTERRUPT-IN) Case 10:RESET中斷 Case 11:SUSPEND中斷 Case 12:RESUME中斷 8-32
33
Case 1:EP0控制讀取 當軟體啟動,它會初始化軟體狀態機為EP0_IDLE。 主機傳送一個SETUP命令。 UDC產生一個EP0中斷。
軟體判斷UDCCS0[SA]與UDCCS0[OPR]位元。這表示一個新的OUT封包在EP0緩衝區內並辨識SETUP交易。 當UDCCS0[RNE]位元被設定時,軟體讀取資料至緩衝區。 軟體分析緩衝區內命令語法,並判定其為控制讀取。 軟體開始載入第一個資料封包進入UDDR0暫存器。 在讀取與分析資料後,軟體清除UDCCS0[SA]與UDCCS0[OPR]位元,並設定UDCCS0[IPR]位元。 軟體清除UDC中斷位元並自中斷服務常式回復。 8-33
34
Case 1:EP0控制讀取(cont.) 當UDC傳送資料回到主機後,主機發出IN封包。在主機傳送ACK至UDC之後,UDC清除UDCS0[IPR]位元並產生一個中斷。 軟體進入ISR常式。它決定是否必須傳輸更多的資料。如果需要的話,軟體載入下個資料量,設定UDCCS0[IPR]位元,並自中斷回復。 重複步驟10與11直到傳送完所有資料或最後的資料封包為短封包。 若最後的封包為一個短封包,則進入EP0_END_XFER狀態。若最後的資料封包在16位元組邊界上,則軟體設定UDCCS0[IPR]來傳送一個長度為0的封包而不會載入FIFO資料。在傳送長度為0的封包之後,進入EP0_END_XFER狀態。 當主機接收到長度為0的OUT封包時,UDC設定UDCCS0[OPR]位元,並引發一個中斷。 軟體進入ISR常式,並判斷UDCCS0[OPR]位元被設定且UDCCS0[SA]位元被清除,而其內部狀態機為EP0_END_XFER。軟體清除UDCCS0[OPR]位元並進入EP0_IDLE狀態。 軟體清除UDC中斷位元並自中斷服務常式回復。 8-34
35
Case 5:EP1資料傳送 (BULK-IN)
當軟體接收到SETUP 命令來建立一個EP1 BULK IN交易時: 設定DMA引擎組態並關閉EP1中斷,允許DMA引擎處理交易。 啟動EP1中斷來允許Megacell直接處理交易。 8-35
36
軟體啟動DMA 在SETUP命令期間,軟體啟動DMA引擎與遮蔽EP1中斷。 主機傳送BULK-IN,而UDC傳送資料封包回主機PC。
若封包大小為64位元組,軟體會傳送一個DMA敘述元內所有資料並設定第二個DMA敘述元內之UDCCS1[TSP]位元。 若封包大小小於64位元組,軟體會建立敘述元串,裡面的奇數之敘述元指向資料,而偶數敘述元寫入UDCCS1[TSP]位元。 主機傳送BULK-IN,而UDC傳送資料封包回主機PC。 UDC產生一個中斷。 DMA引擎填滿EP1資料FIFO(UDDR1),若資料封包為短封包則設定UDCCS1[TSP]位元。 重複步驟2到4直到所有的資料都被送至主機PC。 8-36
37
軟體啟動EP1中斷 在SETUP命令期間,軟體會填滿EP1資料FIFO並清除UDCCS1[TPC]位元。若資料封包為短封包,軟體也會設定UDCCS1[TSP]位元。 主機傳送BULK-IN,而UDC傳送資料封包回主機並產生一個EP1中斷。 軟體填滿EP1資料FIFO,並清除UDCCS1[TPC]位元。如果是短封包,則設定UDCCS1[TSP]位元。 自中斷回復。 重複步驟2到4直到所有的資料都被送至主機。 8-37
38
Case 6:EP2資料接收 (BULK-OUT)
當軟體接收到SETUP 命令來建立一個EP2 BULK OUT交易: 啟動DMA引擎來處理交易。 允許Megacell直接處理交易。 8-38
39
軟體啟動DMA 在SETUP命令期間,軟體會建立DMA引擎並設定UDCCS2[DME]位元。 主機傳送一個BULK-OUT。
若封包大小為32或64位元組,軟體會建立敘述元串,每一個都以32或64為模數(modulo)。 若封包大小小於32位元組,則軟體使用中斷模式。 主機傳送一個BULK-OUT。 DMA引擎從EP2資料FIFO(UDDR2)讀取資料。 重複步驟2與3直到從主機讀取所有的資料。 若軟體接收到EP2中斷,則完成下列處理: 若UDCCS2[RNE]被清除且UDCCS2[RSP]被設定,則資料封包為一個長度為0的封包。 若UDCCS2[RNE]被設定,則資料封包為短封包,而軟體必須使用UDCWC2計數暫存器來從EP2資料FIFO讀取適當的資料量。 軟體清除UDCCS[RPC]位元。 自中斷回復。 8-39
40
軟體允許Megacell處理交易 在SETUP命令期間,軟體會清除UDCCS2[DME]位元。
主機傳送BULK-OUT,而UDC產生EP2中斷。 若UDCCS2[RNE]被清除且UDCCS2[RSP]被設定,則資料封包為一長度為0的封包。 若UDCCS2[RNE]被設定,則軟體使用UDCWC2計數暫存器來從EP2資料FIFO讀取適當的資料量。 軟體清除UDCCS2[RPC]位元。 自中斷回復。 重複步驟2到6直到從主機讀取所有的資料。 8-40
41
Case 10:RESET中斷 系統重置之後,軟體以所需的數值載入暫存器。
軟體設定UDCCR[UDE]位元來啟動UDC並立即讀取UDCCR[UDA]位元來決定目前是否有USB重置在USB匯流排上。 若UDCCR[UDA]為0,則目前有USB重置在匯流排上,而軟體藉由寫入1至UDCCR[RSTIR]位元來清除中斷。 若UDCCR[UDA]為1,則目前沒有USB重置在匯流排上。軟體藉由清除UDCCR[REM]位元來啟動以後的重置中斷。 自中斷回復。 主機驅動USB重置或取消USB重置。 UDC產生一個重置中斷。 軟體判斷UDCCR[RSTIR]位元,並藉由寫入1至UDCCR[RSTIR]位元來清除中斷。而後軟體檢查UDCCR[UDA]位元來決定發生的重置類型。 8-41
42
Case11:SUSPEND中斷 軟體啟動時,會清除UDCCR[SRM]位元來允許USB暫停中斷。
主機藉由停止UDC+與UDC-信號之來觸發USB暫停。 UDC產生暫停中斷。 軟體判斷UDCCR[SUSIR]位元。這表示發生USB暫停,而軟體會採取任何需要的動作來關閉其他週邊、清除內部緩衝區、執行電源管理、以及執行相似功能。 8-42
43
Case12:RESUME中斷 軟體啟動時,會清除UDCCR[SRM]位元來允許USB恢復操作。
主機藉由恢復UDC+與UDC-信號之行動來觸發USB恢復操作。 UDC產生恢復中斷。 軟體判斷UDCCR[RESIR]位元。這表示發生USB恢復操作,而OS會採取任何任何需要的動作來開啟其他週邊、初始化內部緩衝區、執行電源管理、與執行相似功能。 8-43
44
大綱 USB概觀 裝置組態 USB協定 UDC操作 UDC暫存器定義 8-44
45
UDC暫存器定義 UDC控制暫存器 UDC端點0控制/狀態暫存器(UDCCS0)
UDC端點x控制/狀態暫存器(UDCCSx),x = 1、6、11 UDC端點x控制/狀態暫存器(UDCCSx),x = 2、7、12 UDC端點x控制/狀態暫存器(UDCCSx),x=3、8、13 UDC端點x控制/狀態暫存器(UDCCSx),x = 4、9、14 UDC端點x控制/狀態暫存器(UDCCSx),x = 5、10、15 UDC中斷控制暫存器0(UICR0) UDC中斷控制暫存器1(UICR1) UDC狀態/中斷暫存器0(USIR0) UDC狀態/中斷暫存器1(USIR1) 8-45
46
UDC暫存器定義(Cont.) UDC訊框數目高位暫存器(UFNHR) UDC訊框數目低位暫存器(UFNLR)
UDC位元組計數暫存器x(UBCRx),x = 2、4、7、9、12、14 UDC端點0資料暫存器(UDDR0) UDC資料暫存器x(UDDRx),x = 1、6、11 UDC資料暫存器x(UDDRx),x = 2、7、12 UDC資料暫存器x(UDDRx),x = 3、8、13 UDC資料暫存器x(UDDRx),x = 4、9、14 UDC資料暫存器x(UDDRx),x = 5、10、15 UDC暫存器位置 8-46
47
UDC控制暫存器(UDCCR) 8-47 位元 名稱 說明 31:8 保留 保留給以後使用。 7 REM 重置中斷遮蔽(讀取/寫入)
0 – 啟動重置中斷。 1 – 關閉重置中斷。 6 RSTIR 重置中斷請求(讀取/寫入1來清除) 1 – 由主機來重置UDC。 5 SRM 暫停/回復中斷遮蔽(讀取/寫入) 0 – 啟動暫停/回復中斷。 1 – 關閉暫停/回復中斷。 4 SUSIR 暫停中斷請求(讀取/寫入1來清除) 1 – UDC自主機接收暫停信號。 3 RESIR 回復中斷請求(讀取/寫入1來清除) 1 – UDC自主機接收回復信號。 2 RSM 裝置回復(讀取/寫入1來設定) 0 – UDC維持暫停狀態。 1 – 強制UDC離開暫停。 1 UDA UDC主動(唯讀) 0 – UDC目前正接收USB重置。 1 – UDC目前無接收USB重置。 UDE UDC啟動(讀取/寫入) 0 – 關閉UDC。 1 – 啟動UDC。 8-47
48
UDC端點0控制狀態暫存器(UDCCS0) 8-48 位元 名稱 說明 OPR OUT封包預備(讀取/寫入1來清除)
OPR OUT封包預備(讀取/寫入1來清除) 1 – OUT封包預備。 1 IPR IN封包預備(總是讀取0/寫入1來設定) 1 – IN封包預備。 2 FTF Flush Tx FIFO(總是讀取0/寫入1來設定) 1 –將Tx FIFO之內容flush。 3 DRWF 裝置遠端喚醒特徵(唯讀) 0 – 關閉裝置遠端喚醒特徵。 1 – 啟動裝置遠端喚醒特徵。 4 SST 傳送停止(讀取/寫入1來清除) 1 – UDC傳送停止信號交易。 5 FST 強制停止(讀取/寫入1來設定) 1 – 強制停止信號交易。 6 RNE 接收FIFO非空白(唯讀) 0 – 接收FIFO空白。 1 – 接收FIFO非空白。 7 SA 建立主動(讀取/寫入1來清除) 1 – USB上之建立命令為主動。 31:8 保留 保留給以後使用。 8-48
49
UDC端點x控制狀態暫存器(UDCCSx),x = 1、6、11
位元 名稱 說明 TFS 傳送FIFO服務(唯讀) 0 – 傳送FIFO沒有空間給新的資料。 1 – 傳送FIFO至少有空間給一個完整的資料封包。 1 TPC 傳送封包完成(讀取/寫入1來清除) 0 – 錯誤/狀態位元無效。 1 – 送出傳送封包,而錯誤/狀態位元有效。 2 FTF Flush Tx FIFO(總是讀取0/寫入1來清除) 1 – 將Tx FIFO的內容flush。 3 TUR 傳送FIFO underrun(讀取/寫入1來清除) 1 – 傳送FIFO遭到underrun。 4 SST 傳送STALL(讀取/寫入1來清除) 1 – 傳送STALL信號交換。 5 FST 強制STALL(讀取/寫入) 1 – 發出STALL信號交換給IN符記。 6 - 保留 讀取總為0 7 TSP 傳送短封包(總是讀取0/寫入1來設定) 1 – 準備好傳送短封包。 31:8 保留給以後使用 8-49
50
UDC端點x控制狀態暫存器(UDCCSx),x = 2、7、12
位元 名稱 說明 RFS 接收FIFO服務(唯讀) 0 – 接收FIFO少於一個資料封包。 1 – 接收FIFO具有一個或更多的資料封包。 1 RPC 接收封包完成(讀取/寫入1來清除) 0 – 錯誤/狀態位元無效。 1 – 已收到接收封包而錯誤/狀態位元為有效。 2 - 保留 讀取總是為0。 3 DME DMA啟動(讀取/寫入) 0 – 在接收EOP之後接收傳送資料中斷。 1 – 在接收EOP之後接收傳送資料中斷,而接收FIFO具有小於32位元組的資料。。 4 SST 傳送停止(讀取/寫入1來清除) 1 – 傳送STALL信號交換。 5 FST 強制停止(讀取/寫入) 1 – 發出STALL信號交換給IN符記。 6 RNE 接收FIFO非空白(唯讀) 0 – 接收FIFO空白。 1 – 接收FIFO不為空白。 7 RSP 接收短封包(唯讀) 1 – 接收短封包並準備好讀取。 31:8 保留為以後使用 8-50
51
UDC端點x控制狀態暫存器(UDCCSx),x = 3、8、13
位元 名稱 說明 TFS 傳送FIFO服務(唯讀) 0 – 傳送FIFO沒有空間給新的資料。 1 – 傳送FIFO至少有空間給一個完整的資料封包。 1 TPC 傳送封包完成(讀取/寫入1來清除) 0 – 錯誤/狀態位元無效。 1 – 送出傳送封包,而錯誤/狀態位元有效。 2 FTF Flush Tx FIFO(總是讀取0/寫入1來清除) 1 – 將Tx FIFO的內容flush。 3 TUR 傳送FIFO underrun(讀取/寫入1來清除) 1 – 傳送FIFO遭到underrun。 4 - 保留 讀取總是為0。 5 6 7 TSP 傳送短封包(總是讀取0/寫入1來設定) 1 – 準備好傳送短封包。 31:8 保留為以後使用。 8-51
52
UDC端點x控制狀態暫存器(UDCCSx),x = 4、9、14
位元 名稱 說明 RFS 接收FIFO服務(唯讀) 0 – 接收FIFO少於一個資料封包。 1 – 接收FIFO具有一個或更多的資料封包。 1 RPC 接收封包完成(讀取/寫入1來清除) 0 – 錯誤/狀態位元無效。 1 – 已收到接收封包而錯誤/狀態位元為有效。 2 ROF 接收溢位(讀取/寫入1來清除) 1 – 自主機丟棄等時資料封包,因為接收端已滿。 3 DME DMA啟動(讀取/寫入) 0 – 在接收EOP之後接收傳送資料中斷。 1 – 在接收EOP之後接收傳送資料中斷,而接收FIFO具有小於32位元組的資料。。 4 - 保留 讀取總是為0。 5 6 RNE 接收FIFO非空白(唯讀) 0 – 接收FIFO空白。 1 – 接收FIFO不為空白。 7 RSP 接收短封包(唯讀) 1 – 接收短封包並準備好讀取。 31:8 保留為以後使用 8-52
53
UDC端點x控制狀態暫存器(UDCCSx),x = 5、10、15
位元 名稱 說明 TFS 傳送FIFO服務(唯讀) 0 – 傳送FIFO沒有空間給新的資料。 1 – 傳送FIFO至少有空間給一個完整的資料封包。 1 TPC 傳送封包完成(讀取/寫入1來清除) 0 – 錯誤/狀態位元無效。 1 – 送出傳送封包,而錯誤/狀態位元有效。 2 FTF Flush Tx FIFO(總是讀取0/寫入1來清除) 1 – 將Tx FIFO的內容flush。 3 TUR 傳送FIFO underrun(讀取/寫入1來清除) 1 – 傳送FIFO遭到underrun。 4 SST 傳送STALL(讀取/寫入1來清除) 1 – 傳送STALL信號交換。 5 FST 強制STALL(讀取/寫入) 1 – 發出STALL信號交換給IN符記。 6 - 保留 讀取總為0 7 TSP 傳送短封包(總是讀取0/寫入1來設定) 1 – 準備好傳送短封包。 31:8 保留給以後使用 8-53
54
UDC中斷控制暫存器0(UICR0) 8-54 位元 名稱 說明 IM0 端點0之中斷遮蔽 0 – 啟動端點0中斷 1 – 關閉端點0中斷。
IM0 端點0之中斷遮蔽 0 – 啟動端點0中斷 1 – 關閉端點0中斷。 1 IM1 端點1之中斷遮 0 – 啟動傳送中斷 1 – 關閉傳送中斷 2 IM2 端點2之中斷遮蔽 0 – 啟動接收中斷 1 – 關閉接收中斷 3 IM3 端點3之中斷遮蔽 0 – 啟動傳送中斷 1 – 關閉傳送中斷 4 IM4 端點4之中斷遮蔽 0 – 啟動接收中斷 1 – 關閉接收中斷 5 IM5 端點5之中斷遮蔽 0 – 啟動傳送中斷 1 – 關閉傳送中斷 6 IM6 端點6之中斷遮蔽 0 – 啟動傳送中斷 1 – 關閉傳送中斷 7 IM7 端點7之中斷遮蔽 0 – 啟動接收中斷 1 – 關閉接收中斷 31:8 保留 保留給以後使用 8-54
55
UDC中斷控制暫存器1(UICR1) 8-55 位元 名稱 說明 IM8 端點8之中斷遮蔽 0 – 啟動傳送中斷 1 – 關閉傳送中斷 1
IM8 端點8之中斷遮蔽 0 – 啟動傳送中斷 1 – 關閉傳送中斷 1 IM9 端點9之中斷遮蔽 0 – 啟動接收中斷 1 – 關閉接收中斷 2 IM10 端點10之中斷遮蔽 0 – 啟動接收中斷 1 – 關閉接收中斷 3 IM11 端點11之中斷遮蔽 0 – 啟動傳送中斷 1 – 關閉傳送中斷 4 IM12 端點12之中斷遮蔽 0 – 啟動接收中斷 1 – 關閉接收中斷 5 IM13 端點13之中斷遮蔽 0 – 啟動傳送中斷 1 – 關閉傳送中斷 6 IM14 端點14之中斷遮蔽 0 – 啟動接收中斷 1 – 關閉接收中斷 7 IM15 端點15之中斷遮蔽 0 – 啟動傳送中斷 1 – 關閉傳送中斷 31:8 保留 保留給以後使用 8-55
56
UDC狀態/中斷暫存器0(USIR0) 8-56 位元 名稱 說明 IR0 端點0之中斷請求(讀取/寫入1來清除) 1 – 端點0需要服務。
IR0 端點0之中斷請求(讀取/寫入1來清除) 1 – 端點0需要服務。 1 IR1 端點1之中斷請求(讀取/寫入1來清除) 1 – 端點1需要服務。 2 IR2 端點2之中斷請求(讀取/寫入1來清除) 1 – 端點2需要服務。 3 IR3 端點3之中斷請求(讀取/寫入1來清除) 1 – 端點3需要服務。 4 IR4 端點4之中斷請求(讀取/寫入1來清除) 1 – 端點4需要服務。 5 IR5 端點5之中斷請求(讀取/寫入1來清除) 1 – 端點5需要服務。 6 IR6 端點6之中斷請求(讀取/寫入1來清除) 1 – 端點6需要服務。 7 IR7 端點7之中斷請求(讀取/寫入1來清除) 1 – 端點7需要服務。 31:8 保留 保留給以後使用 8-56
57
UDC狀態/中斷暫存器1(USIR1) 8-57 位元 名稱 說明 IR8 端點8之中斷請求(讀取/寫入1來清除) 1 – 端點8需要服務。
IR8 端點8之中斷請求(讀取/寫入1來清除) 1 – 端點8需要服務。 1 IR9 端點9之中斷請求(讀取/寫入1來清除) 1 – 端點9需要服務。 2 IR10 端點10之中斷請求(讀取/寫入1來清除) 1 – 端點10需要服務。 3 IR11 端點11之中斷請求(讀取/寫入1來清除) 1 – 端點11需要服務。 4 IR12 端點12之中斷請求(讀取/寫入1來清除) 1 – 端點12需要服務。 5 IR13 端點13之中斷請求(讀取/寫入1來清除) 1 – 端點13需要服務。 6 IR14 端點14之中斷請求(讀取/寫入1來清除) 1 – 端點14需要服務。 7 IR15 端點15之中斷請求(讀取/寫入1來清除) 1 – 端點15需要服務。 31:8 保留 保留給以後使用 8-57
58
UDC訊框數目高位暫存器(UFNHR) 8-58 位元 名稱 說明 2:0 FNMSB 訊框數目MSB。
11位元訊框數目之最高的3個有效位元與最後接收的SOF相關。 3 IPE4 等時訊框錯誤端點4(讀取/寫入1來清除) 1 – 端點FIFO內資料損毀之狀態指示器。 4 IPE9 等時訊框錯誤端點9(讀取/寫入1來清除) 5 IPE14 等時訊框錯誤端點14(讀取/寫入1來清除) 6 SIM SOF中斷遮蔽 0 – 啟動SOF中斷。 1 – 關閉SOF中斷。 7 SIR SOF中斷請求(讀取/寫入1來清除) 1 – 已接收SOF。 31:8 保留 保留給以後使用 8-58
59
UDC訊框數目低位暫存器(UFNLR) 8-59 位元 名稱 說明 7:0 FNLSB 訊框數目LSB
訊框數目之最低的8個有效位元與最後接收的SOF相關。 31:8 保留 保留給以後使用 8-59
60
UDC位元組計數暫存器x(UBCRx),x = 2、4、7、9、12、14
名稱 說明 7:0 BC 位元組計數(唯讀)。FIFO內的位元組數目為位元組計數加1(BC+1)。 31:8 保留 保留給以後使用 8-60
61
UDC資料暫存器x(UDDRx),x = 1、6、11
UDC端點0資料暫存器(UDDR0) 位元 名稱 說明 7:0 DATA 端點0 FIFO資料之頂部/底部。 讀取 – 端點0 FIFO資料之底部。 寫入 – 端點0 FIFO資料之頂端。 31:8 保留 保留給以後使用 UDC資料暫存器x(UDDRx),x = 1、6、11 位元 名稱 說明 7:0 DATA 目前載入的端點資料之頂部。 31:8 保留 保留給以後使用 8-61
62
UDC資料暫存器定義 (cont.) UDC資料暫存器x(UDDRx),x = 2、7、12
位元 名稱 說明 7:0 DATA 目前讀取的端點資料之頂部。 31:8 保留 保留給以後使用 UDC資料暫存器x(UDDRx),x = 3、8、13 位元 名稱 說明 7:0 DATA 目前載入的端點資料之頂部。 31:8 保留 保留給以後使用 8-62
63
UDC資料暫存器定義 (cont.) UDC資料暫存器x(UDDRx),x = 4、9、14
位元 名稱 說明 7:0 DATA 目前讀取的端點資料之頂部。 31:8 保留 保留給以後使用 UDC資料暫存器x(UDDRx),x = 5、10、15 位元 名稱 說明 7:0 DATA 目前載入的端點資料之頂部。 31:8 保留 保留給以後使用 8-63
64
UDC控制、資料、狀態暫存器位置 8-64 位址 名稱 說明 0h 4060 0000 UDCCR UDC控制暫存器
保留 保留為以後使用 0h 0h C 0h UDCCS0 UDC端點0控制/狀態暫存器 0h UDCCS1 UDC端點1(IN)控制/狀態暫存器 0h UDCCS2 UDC端點2(OUT)控制/狀態暫存器 0h C UDCCS3 UDC端點3(IN)控制/狀態暫存器 0h UDCCS4 UDC端點4(OUT)控制/狀態暫存器 0h UDCCS5 UDC端點5(中斷)控制/狀態暫存器 0h UDCCS6 UDC端點6(IN)控制/狀態暫存器 0h C UDCCS7 UDC端點7(OUT)控制/狀態暫存器 0h UDCCS8 UDC端點8(IN)控制/狀態暫存器 0h UDCCS9 UDC端點9(OUT)控制/狀態暫存器 0h UDCCS10 UDC端點10(中斷)控制/狀態暫存器 0h C UDCCS11 UDC端點11(IN)控制/狀態暫存器 0h UDCCS12 UDC端點12(OUT)控制/狀態暫存器 8-64
65
8-65 位址 名稱 說明 0h 4060 0044 UDCCS13 UDC端點13(IN)控制/狀態暫存器 0h 4060 0048
UDC端點14(OUT)控制/狀態暫存器 0h C UDCCS15 UDC端點15(中斷)控制/狀態暫存器 0h UICR0 UDC中斷控制暫存器0 0h UICR1 UDC中斷控制暫存器1 0h USIR0 UDC狀態中斷暫存器0 0h C USIR1 UDC狀態中斷暫存器1 0h UFNHR UDC訊框數目暫存器高位 0h UFNLR UDC訊框數目暫存器低位 0h UBCR2 UDC位元組計數暫存器2 0h C UBCR4 UDC位元組計數暫存器4 0h UBCR7 UDC位元組計數暫存器7 0h UBCR9 UDC位元組計數暫存器9 0h UBCR12 UDC位元組計數暫存器12 0h C UBCR14 UDC位元組計數暫存器14 0h UDDR0 UDC端點0資料暫存器 0h UDDR1 UDC端點1資料暫存器 0h UDDR2 UDC端點2資料暫存器 8-65
66
8-66 位址 名稱 說明 0h 4060 0200 UDDR3 UDC端點3資料暫存器 0h 4060 0400 UDDR4
0h A0 UDDR5 UDC端點5資料暫存器 0h UDDR6 UDC端點6資料暫存器 0h UDDR7 UDC端點7資料暫存器 0h UDDR8 UDC端點8資料暫存器 0h UDDR9 UDC端點9資料暫存器 0h C0 UDDR10 UDC端點10資料暫存器 0h B00 UDDR11 UDC端點11資料暫存器 0h B80 UDDR12 UDC端點12資料暫存器 0h C00 UDDR13 UDC端點13資料暫存器 0h E00 UDDR14 UDC端點14資料暫存器 0h E0 UDDR15 UDC端點15資料暫存器 8-66
Similar presentations