立即注冊 登錄
返回首頁

uid:136005的個人空間

日志

USB功能描述

已有 1138 次閱讀2019-2-23 10:54

1.1簡介

實現(xiàn)USB2.0全速設(shè)備和APB1間的接口
支持掛起/恢復(fù),可以停止設(shè)備時鐘實現(xiàn)低功耗。
1.2主要的特征
  1、符合USB2.0全速技術(shù)規(guī)范
  2、可配置1到8個USB端點 【8個雙向端點,16個單向端點】
  3、CRC生成、校驗,NRZI編碼、解碼、位填充【硬件實現(xiàn),可以通過抓取數(shù)據(jù)來實現(xiàn)】
  4、支持同步傳輸
  5、支持批量、同步端點的雙緩沖區(qū)機制
  6、支持USB掛起、恢復(fù)操作【通過檢測3ms內(nèi)沒有sof信號為掛起】
  7、幀鎖定時鐘脈沖生成

1.3功能描述
  1、PC機與微控制器之間的數(shù)據(jù)傳輸共享一專用的數(shù)據(jù)緩沖區(qū)
  2、緩沖區(qū)的大小由端點的數(shù)目與每個端點最大的數(shù)據(jù)分組決定,每個端點最大可使用512字節(jié),最多可使用16個單向或8個雙向端點。
  3、USB模塊同主機通信,根據(jù)USB的規(guī)范實現(xiàn)了令牌分組,數(shù)據(jù)發(fā)送、接收和握手的處理。
  4、硬件實現(xiàn)傳輸?shù)母袷,如CRC生成、校驗。
  5、每個端點都有一個緩沖區(qū)描述塊,描述了緩沖區(qū)地址、大小、和需要傳輸?shù)淖止?jié)數(shù)。【端點配置描述符】
  6、當數(shù)據(jù)和端點已配置,USB模塊識別有效的令牌分組時,將發(fā)生數(shù)據(jù)傳輸
  7、USB模塊通過一個內(nèi)部的16位寄存器實現(xiàn)端口與專用緩沖區(qū)的數(shù)據(jù)交換。
  8、根據(jù)傳輸?shù)姆较蚺c需求,發(fā)送或接收適當?shù)奈帐址纸M
  9、數(shù)據(jù)傳輸結(jié)束,通過中斷處理程序可以得到端點需要的服務(wù)【讀取寄存器的狀態(tài),分揀出不同的中斷要求】
  10、在同步傳輸和高吞吐量的批量傳輸中提供了雙緩沖機制
  11、支持低功耗模式【通過寫控制寄存器,使模塊處于SUSPEND模式】
  12、支持喚醒USB模式【在低功耗模式下,檢測USB數(shù)據(jù)線上的數(shù)據(jù)傳輸/將中斷源接到喚醒引腳上】
  13、支持直接啟動或停止時鐘系統(tǒng)
1.4USB功能模塊描述
   USB模塊實現(xiàn)了USB接口的所有特性:
   1、串行接口控制器(SIE),實現(xiàn)的功能:幀頭同步域識別,位填充,CRC產(chǎn)生和校驗,PID驗證/產(chǎn)生,握手處理。   與USB收發(fā)器交互,利用分組緩沖接口提供的虛擬緩沖區(qū)存儲局部數(shù)據(jù)。 根據(jù)USB相關(guān)的事件產(chǎn)生相關(guān)的端點信號。如sof、USB復(fù)位,數(shù)據(jù)錯誤
   2、定時器 :產(chǎn)生與幀開始同步的時鐘脈沖,并在3ms內(nèi)沒有數(shù)據(jù)傳輸,檢測為掛起狀態(tài)。 
   3、分組緩沖器。根據(jù)SIE的要求分配合適的緩沖區(qū),并定位到端點寄存器所指向的存儲區(qū)地址。地址自增。記錄傳輸?shù)淖止?jié)數(shù)防止緩存器溢出。
4、端點相關(guān)寄存器。 對于單向或單緩沖器的端點,一個寄存器可以實現(xiàn)兩個不同的端點。
一共8個寄存器,可以實現(xiàn)16個單向 /單緩沖的端點或者7個雙緩沖的端點或者這些端點的組合。
  5、控制寄存器:包含USB的狀態(tài)信息,掛起低功耗等
  6、中斷寄存器:獲取中斷源和中斷信息。
端點0作為單緩沖模式下的控制端點。
  
APB1接口部分
1、分組緩沖區(qū)  大小為512字節(jié)
2、仲裁器:通過向APB1提供較高的訪問優(yōu)先級來解決總線沖突。采用分時復(fù)用的策略
實現(xiàn)了虛擬雙端口SRAM.
  3、寄存器映射單元: 把USB的寄存器映射成被APB1尋址的16位寬度的內(nèi)存集合。
  4、APB1封裝:將整個USB模塊映射到APB1地址空間。
  5、中斷映射單元:
     USB低優(yōu)先級中斷(通道20):所有USB事件觸發(fā)。
     USB高優(yōu)先級中斷(通道19):僅能由同步和雙緩沖批量的正確傳輸事件觸發(fā)。
     USB喚醒中斷(通道42):由USB掛起模式的喚醒事件觸發(fā)。
1.5 USB模塊與應(yīng)運程序的交互
  1、系統(tǒng)復(fù)位或上電  流程 先配時鐘信號再清除復(fù)位信號 
  2、分組緩沖區(qū)的結(jié)構(gòu)與用途  接口APB1的一半周期用于微控周期的訪問,一半周期用于USB模塊的訪問。USB模塊使用固定的時鐘48MHZ,APB1總線的時鐘必須大于8MHz.
  3、端點初始化 
第一步是把適當?shù)闹祵懙紸DDRn_TX或ADDRn_RX寄存器中, USB_EpnR寄存器的EP_TYPE位確定端點的基本類型, EP_KIND位確定端點的特殊特性。作為發(fā)送方,需要設(shè)置USB_EpnR寄存器的STAT_TX位來使能端點,并配置COUNTn_TX位決定發(fā)送長度。作為接收方,需要設(shè)置STAT_RX位來使能端點,并且設(shè)置BL_SIZE和NUM_BLOCK位,確定接收緩沖區(qū)的大小,以檢測緩沖區(qū)溢出的異常。 
  4、IN分組
     第一步接收到一IN令牌,訪問相應(yīng)的ADDRn_TX和COUNTn_TX寄存器,并將這些寄存器中的數(shù)值存儲到內(nèi)部的16位寄存器ADDR和COUNT。第二步,根據(jù)DTOG_TX位發(fā)送DATA0或DATA1分組,并訪問緩沖區(qū)。第三步,從緩沖區(qū)讀到的第一個字節(jié)將被裝載到輸出移位寄存器中,并開始發(fā)送。四,接收到主機響應(yīng)的ACK,應(yīng)用程序需要通過USB_ISTR寄存器的EP_ID和DIR位識別產(chǎn)生中斷的USB端點。五、CTR_TX事件的中斷服務(wù)程序需要首先清除中斷標志位,然后準備好需要發(fā)送的數(shù)據(jù)緩沖區(qū),更新COUNTn_TX為下次需要傳輸?shù)淖止?jié)數(shù),最后再設(shè)置STAT_TX位為’11’(端點有效),再次使能數(shù)據(jù)傳輸。
  5、OUT分組和SETUP分組
   第一步,找到與該端點相關(guān)的ADDRn_RX和COUNTn_RX寄存器,并將ADDRn_RX 寄 存 器 的 值 保 存 在 內(nèi) 部 ADDR 寄 存 器 中 。第二步,初始化內(nèi)部寄存器。第三步:存儲數(shù)據(jù)到ADDR指向的分組緩沖區(qū)中。第三步,分步揍做校驗。

  6、控制傳輸
  第一步,建立過程。第二步,可選的數(shù)據(jù)過程。第三步,狀態(tài)過程。
1.6 雙緩沖機制 
  第一,將USB_EPnR寄存器的EP_TYPE位設(shè)為’00’,定義端點為批量端點
  第二,將USB_EPnR寄存器的EP_KIND位設(shè)為’1’,定義端點為雙緩沖端點

1.7同步傳輸
  第一,配置同步端點,
  第二,雙緩沖機制配置
  第三,初始化DTOG位。
  第四,數(shù)據(jù)傳輸。

1.8掛起事件
  第一,將USB_CNTR寄存器的FSUSP置為’1’,這將使USB模塊進入掛起狀態(tài)。 
第二,將USB_CNTR寄存器的LP_MODE位置為’1’,這將消除模擬USB收發(fā)器的靜態(tài)電流消耗,但仍能檢測到喚醒信號。
第三,可以選擇關(guān)閉外部振蕩器和設(shè)備的PLL,以停止設(shè)備內(nèi)部的任何活動。

1.9喚醒事件
  第一,清零USB_CNTR寄存器的FSUSP位。
  第二,喚醒過程將由主機PC完成,可以利用USB_FNR寄存器的RXDP和
RXDM位來判斷喚醒是否完成。
2.0通用寄存器
  1、控制寄存器、
  2、中斷寄存器
  3、幀編號寄存器
  4、設(shè)備地址寄存器
  5、分組緩沖區(qū)地址寄存器

2.1端點寄存器

2.2緩沖區(qū)描述表
 1、發(fā)送緩沖區(qū)地址寄存器
 2、發(fā)送緩沖區(qū)字節(jié)寄存器、
 3、接收緩沖區(qū)地址寄存器
 4、接收數(shù)據(jù)字節(jié)寄存器



路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

返回頂部