一、stm32的usb簡介:
1。usb外設實現了usb2.0全速匯流排和apb1匯流排間的介面。
2。usb外設支援usb掛起/恢復操作,可以停止裝置時鐘實現低功耗。
二、usb主要特徵
1。符合usb2.0全速裝置的技術規範
2。可配置1到8個usb埠
3。crc(迴圈榮譽校驗)生成/檢驗,反向不歸零(nrzi)編碼/解碼和位填充
4。支援同步傳輸
5。支援批量/同步端點的雙緩衝區機制
6。支援usb掛起/恢復操作
7。診所定時鐘脈衝生成
注意:usb和can公用乙個專用的512位元組的sram儲存器用於資料的傳送和接收,因此不能同時使用usb和can(共享的sram被usb和can模組互斥的訪問)usb和can可以同時用於乙個應用中但不能在同乙個時間內使用。
三、usb裝置框圖
四、usb功能描述
usb模組為pc主機和微控制器所實現的功能之間提供了符合usb規範的通訊連線。pc主機和微控制器之間的資料傳輸是通過共享一專用的資料緩衝區來完成的,該資料緩衝區能被usb外設直接訪問。這塊專用資料緩衝區的大小由所使用的端點數目和每個端點的資料分組大小所決定,每個端點最大可使用512位元組緩衝區,最多可用於16個單向或8個雙向端點。us模組同pc主機通訊,根據usb負ifanshixian靈牌分組的檢測,資料傳送和接收的處理,和握手分組的處理。整個傳輸的格式由硬體完成,其中包括crc的生成和校驗。
每個端點都有乙個緩衝區描述快,描述該端點使用的緩衝區位址、大小和需要傳輸的位元組數。當usb模組識別出乙個有效的功能/端點的令牌分組時,(如果需要還書資料並且斷電已配置)隨之發生相關的資料傳輸。usb模組通過乙個內部的16位暫存器實現埠與專用緩衝區的資料交換。在所有的資料傳輸完成後,如果需要,則根據傳輸的方向,傳送或接收適當的握手分組。
在資料傳輸結束時,usb模組將觸發與端點相關的中斷,通過讀狀態暫存器和/或者利用不同的中斷處理程式,為控制其可以確定以下幾個問題:1。哪個端點需要得到服務;2。產生如位填充、格式、crc、協議、缺失ack、緩衝區溢位/緩衝區未滿等錯誤時,這個內在急性的是哪種型別的傳輸。
usb模組對同步傳輸和高吞吐量的批量傳輸提供了特殊的雙緩衝區機制,在微控制器使用乙個緩衝區的時候,該機制保證了usb外設總是可以使用另乙個緩衝區。
在任何不需要使用usb模組的時候,通過寫控制暫存器總可以使usb模組置於低功耗模式(low power mode ,suspend模式)。在這種模式下,不產生任何靜態電流消耗,同時usb時鐘也會減慢或停止。通過對usb線上資料傳輸的檢測,可以在低功耗模式下喚醒usb模組。也可以將一特定的中斷輸入源直接連線到喚醒引腳上,以使系統能立即恢復正常的時鐘系統,並支援直接啟動或停止時鐘系統。
五、usb功能模組描述
usb模組實現了標準usb介面的所有特性,它由以下部分組成:
序列介面引擎(s.i.e):該模組包括的功能有:幀頭同步域的識別,位填充,crc的產生和校驗,pid的驗證/產生,和握手分組處理等。它與usb收發器互動,利用分組緩衝介面提供的虛擬緩衝區儲存區域性資料。它也根據usb事件,和類似於傳輸結束或乙個包正確接受等端點相關事件生成訊號,例如幀首(start of frame),usb復位,資料錯誤等等,這些訊號用來產生中斷。
定時器:本模組的功能是產生乙個與幀開始報文同步時鐘脈衝,並在3ms內沒有資料傳輸的狀態,檢測出全域性掛起條件。
分組緩衝器介面:此模組管理那些用於傳送和接收的臨時本地記憶體單元。它根據sie的要求分配合適的緩衝區,並定位到端點暫存器所指向的儲存區位址。它在每個位元組傳輸後,自動遞增位址,直到資料分組傳輸結束。它記錄傳輸的位元組數並防止緩衝區溢位。
端點相關暫存器:每個端點都有乙個與之相關的暫存器,用於描述端點型別和當前狀態。對於單項和單緩衝器端點,乙個暫存器就可以用於實現兩個不同的端點。一共8個暫存器,可以用於實現最多16個單向/單緩衝端點或者7個雙緩衝的端點或者這些端點的組合。例如,可以同時實現4個雙環衝端點和8個單緩衝/單向端點。
控制暫存器:這些暫存器包含整個usb模組的狀態資訊,用來出發注入恢復,低功耗等usb事件。
中斷暫存器:這些寄存其包含中斷評比資訊和中斷事件的記錄資訊。配製和訪問這些寄存其可以獲取中斷源,中斷狀態等資訊,並能清除待處理中斷的狀態標誌。
注意:端點0總是作為單緩衝模式下的控制端點。
usb模組通過apb1介面部件與apb1匯流排相連,apb1介面部件包括以下部分:
分組緩衝區:資料分組快取在分組緩衝區中,它由分組緩衝介面控制並建立資料結構。應用軟體可以直接訪問該緩衝區。它的大小為512個位元組,由256個16位的字構成。
仲裁器:該部件負責處理來自apb1匯流排和usb介面的儲存器請求。它通過向apb1提供較高的訪問優先權來解決匯流排的衝突,並且總是保留一半的儲存器頻寬供usb完成傳輸。它採用時分復用的策略實現了虛擬的雙埠sram,即在usb傳輸的同時,允許應用程式訪問儲存器。此策略也允許任意長度的多位元組apb1傳輸。
暫存器對映單元:此部件將usb模組的各種位元組寬度和位寬度的暫存器對映陳能被apb1定址的16位寬度的記憶體集合。
apb1封裝:此部件為緩衝區和暫存器提供了到apb1的介面,並將整個usb模組對映到apb1位址空間。
中斷對映單元:將可能產生中斷的usb實踐對映到三個不同的nvic請求線上:
——usb低優先順序中斷(通道20):可由所有usb事件出發(正確傳輸,usb復位等)。韌體在處理中斷前應當首先確定中斷源。
——usb高優先順序中斷(通道19):僅能由同步和雙緩衝批量傳輸的正確傳輸事件出發,目的是保證最大的傳輸速率。
——usb喚醒中斷(通道42):由usb掛起模式的喚醒事件觸發。
STM32學習筆記 基礎外設 EXTI
四 為什麼配置中斷功能時要在apb2中使能afio相關功能?五 外部中斷bug總結 配置中斷分組nvic並使用中斷 void nvic exit cfg gpio初始化 void gpio exit cfg 初始化線上中斷,設定觸發條件等 void exti cfg exti2中斷處理函式 void...
STM32學習筆記之匯流排外設對映
最近在學習使用stm32的外設,在使能外設時鐘時候,經常忘記該外設是掛在哪個匯流排上的,基礎十分不紮實,所以在這裡總結了stm32三條匯流排的外設對映情況。1 ahb匯流排 1 flash 儲存器 2 dma 3 復位和時鐘控制 4 crc 5 乙太網 6 sdio 2 apb2匯流排 1 usar...
STM32學習筆記
剛到公司實習,要學習stm32開發,boss給了一塊戰艦開發板,讓我自己寫乙個功能要用在公司的產品上。難啊。以前根本沒接觸過stm32,只能一步一步慢慢來,利用晚上利用週末惡補一下。哎,算是為了大學前兩年還債吧。一 跑馬燈實驗 gpio輸出 實驗環境 keil4 實驗平台 戰艦stm32開發板 gp...