1.1簡介
實現USB2.0全速設備和APB1間的接口
支持掛起/恢復,可以停止設備時鐘實現低功耗。
1.2主要的特征
1、符合USB2.0全速技術規范
2、可配置1到8個USB端點 【8個雙向端點,16個單向端點】
3、CRC生成、校驗,NRZI編碼、解碼、位填充【硬件實現,可以通過抓取數據來實現】
4、支持同步傳輸
5、支持批量、同步端點的雙緩沖區機制
6、支持USB掛起、恢復操作【通過檢測3ms內沒有sof信號為掛起】
7、幀鎖定時鐘脈沖生成
1.3功能描述
1、PC機與微控制器之間的數據傳輸共享一專用的數據緩沖區
2、緩沖區的大小由端點的數目與每個端點最大的數據分組決定,每個端點最大可使用512字節,最多可使用16個單向或8個雙向端點。
3、USB模塊同主機通信,根據USB的規范實現了令牌分組,數據發送、接收和握手的處理。
4、硬件實現傳輸的格式,如CRC生成、校驗。
5、每個端點都有一個緩沖區描述塊,描述了緩沖區地址、大小、和需要傳輸的字節數。【端點配置描述符】
6、當數據和端點已配置,USB模塊識別有效的令牌分組時,將發生數據傳輸
7、USB模塊通過一個內部的16位寄存器實現端口與專用緩沖區的數據交換。
8、根據傳輸的方向與需求,發送或接收適當的握手分組
9、數據傳輸結束,通過中斷處理程序可以得到端點需要的服務【讀取寄存器的狀態,分揀出不同的中斷要求】
10、在同步傳輸和高吞吐量的批量傳輸中提供了雙緩沖機制
11、支持低功耗模式【通過寫控制寄存器,使模塊處于SUSPEND模式】
12、支持喚醒USB模式【在低功耗模式下,檢測USB數據線上的數據傳輸/將中斷源接到喚醒引腳上】
13、支持直接啟動或停止時鐘系統
1.4USB功能模塊描述
USB模塊實現了USB接口的所有特性:
1、串行接口控制器(SIE),實現的功能:幀頭同步域識別,位填充,CRC產生和校驗,PID驗證/產生,握手處理。 與USB收發器交互,利用分組緩沖接口提供的虛擬緩沖區存儲局部數據。 根據USB相關的事件產生相關的端點信號。如sof、USB復位,數據錯誤
2、定時器 :產生與幀開始同步的時鐘脈沖,并在3ms內沒有數據傳輸,檢測為掛起狀態。
3、分組緩沖器。根據SIE的要求分配合適的緩沖區,并定位到端點寄存器所指向的存儲區地址。地址自增。記錄傳輸的字節數防止緩存器溢出。
4、端點相關寄存器。 對于單向或單緩沖器的端點,一個寄存器可以實現兩個不同的端點。
一共8個寄存器,可以實現16個單向 /單緩沖的端點或者7個雙緩沖的端點或者這些端點的組合。
5、控制寄存器:包含USB的狀態信息,掛起低功耗等
6、中斷寄存器:獲取中斷源和中斷信息。
端點0作為單緩沖模式下的控制端點。
APB1接口部分
1、分組緩沖區 大小為512字節
2、仲裁器:通過向APB1提供較高的訪問優先級來解決總線沖突。采用分時復用的策略
實現了虛擬雙端口SRAM.
3、寄存器映射單元: 把USB的寄存器映射成被APB1尋址的16位寬度的內存集合。
4、APB1封裝:將整個USB模塊映射到APB1地址空間。
5、中斷映射單元:
USB低優先級中斷(通道20):所有USB事件觸發。
USB高優先級中斷(通道19):僅能由同步和雙緩沖批量的正確傳輸事件觸發。
USB喚醒中斷(通道42):由USB掛起模式的喚醒事件觸發。
1.5 USB模塊與應運程序的交互
1、系統復位或上電 流程 先配時鐘信號再清除復位信號
2、分組緩沖區的結構與用途 接口APB1的一半周期用于微控周期的訪問,一半周期用于USB模塊的訪問。USB模塊使用固定的時鐘48MHZ,APB1總線的時鐘必須大于8MHz.
3、端點初始化
第一步是把適當的值寫到ADDRn_TX或ADDRn_RX寄存器中, USB_EpnR寄存器的EP_TYPE位確定端點的基本類型, EP_KIND位確定端點的特殊特性。作為發送方,需要設置USB_EpnR寄存器的STAT_TX位來使能端點,并配置COUNTn_TX位決定發送長度。作為接收方,需要設置STAT_RX位來使能端點,并且設置BL_SIZE和NUM_BLOCK位,確定接收緩沖區的大小,以檢測緩沖區溢出的異常。
4、IN分組
第一步接收到一IN令牌,訪問相應的ADDRn_TX和COUNTn_TX寄存器,并將這些寄存器中的數值存儲到內部的16位寄存器ADDR和COUNT。第二步,根據DTOG_TX位發送DATA0或DATA1分組,并訪問緩沖區。第三步,從緩沖區讀到的第一個字節將被裝載到輸出移位寄存器中,并開始發送。四,接收到主機響應的ACK,應用程序需要通過USB_ISTR寄存器的EP_ID和DIR位識別產生中斷的USB端點。五、CTR_TX事件的中斷服務程序需要首先清除中斷標志位,然后準備好需要發送的數據緩沖區,更新COUNTn_TX為下次需要傳輸的字節數,最后再設置STAT_TX位為’11’(端點有效),再次使能數據傳輸。
5、OUT分組和SETUP分組
第一步,找到與該端點相關的ADDRn_RX和COUNTn_RX寄存器,并將ADDRn_RX 寄 存 器 的 值 保 存 在 內 部 ADDR 寄 存 器 中 。第二步,初始化內部寄存器。第三步:存儲數據到ADDR指向的分組緩沖區中。第三步,分步揍做校驗。
6、控制傳輸
第一步,建立過程。第二步,可選的數據過程。第三步,狀態過程。
1.6 雙緩沖機制
第一,將USB_EPnR寄存器的EP_TYPE位設為’00’,定義端點為批量端點
第二,將USB_EPnR寄存器的EP_KIND位設為’1’,定義端點為雙緩沖端點
1.7同步傳輸
第一,配置同步端點,
第二,雙緩沖機制配置
第三,初始化DTOG位。
第四,數據傳輸。
1.8掛起事件
第一,將USB_CNTR寄存器的FSUSP置為’1’,這將使USB模塊進入掛起狀態。
第二,將USB_CNTR寄存器的LP_MODE位置為’1’,這將消除模擬USB收發器的靜態電流消耗,但仍能檢測到喚醒信號。
第三,可以選擇關閉外部振蕩器和設備的PLL,以停止設備內部的任何活動。
1.9喚醒事件
第一,清零USB_CNTR寄存器的FSUSP位。
第二,喚醒過程將由主機PC完成,可以利用USB_FNR寄存器的RXDP和
RXDM位來判斷喚醒是否完成。
2.0通用寄存器
1、控制寄存器、
2、中斷寄存器
3、幀編號寄存器
4、設備地址寄存器
5、分組緩沖區地址寄存器
2.1端點寄存器
2.2緩沖區描述表
1、發送緩沖區地址寄存器
2、發送緩沖區字節寄存器、
3、接收緩沖區地址寄存器
4、接收數據字節寄存器