1
STM32F1 USB外設(shè)在USB系統(tǒng)的位置
STM32F1 USB外設(shè)實(shí)現(xiàn)了USB2.0全速總線和APB1總線間的接口。看不懂的話看下圖。
2
STM32F1 USB外設(shè)功能描述
USB外設(shè)為PC主機(jī)和微控制器所實(shí)現(xiàn)的功能之間提供了符合USB規(guī)范的通信連接。PC主機(jī)和微控制器之間的數(shù)據(jù)傳輸是通過共享一專用的數(shù)據(jù)緩沖區(qū)來完成的,該數(shù)據(jù)緩沖區(qū)能被USB外設(shè)直接訪問。這塊專用數(shù)據(jù)緩沖區(qū)的有效大小由所使用的端點(diǎn)數(shù)目和每個(gè)端點(diǎn)最大的數(shù)據(jù)包大小所決定(總共有16端點(diǎn),PMA大小為512字節(jié),可以用多少拿多少,也可以全用),所有端點(diǎn)共享用512字節(jié)緩沖區(qū),最多可用于16個(gè)單向或8個(gè)雙向端點(diǎn)。USB模塊同PC主機(jī)通信,根據(jù)USB規(guī)范實(shí)現(xiàn)令牌包的檢測,數(shù)據(jù)發(fā)送/接收的處理,和握手包的處理。整個(gè)傳輸?shù)母袷接?a href="http://m.hljzzgx.com/v/tag/1751/" target="_blank">硬件完成,其中包括CRC的生成和校驗(yàn)。
也就是說16個(gè)端點(diǎn)共享一個(gè)512字節(jié)的緩沖區(qū),我們可以理解為USB HOST就是通過對(duì)這些緩沖區(qū)的讀寫來實(shí)現(xiàn)和設(shè)備的數(shù)據(jù)交互,其實(shí)原理大概就是如此。 如果主機(jī)發(fā)送數(shù)據(jù)給設(shè)備 ,設(shè)備會(huì)把USB外設(shè)接收的數(shù)據(jù)放入緩沖區(qū),完畢之后通知CPU讀取數(shù)據(jù)了, 如果主機(jī)讀取USB設(shè)備的數(shù)據(jù) ,CPU會(huì)把數(shù)據(jù)放到緩沖區(qū),然后告訴USB外設(shè)可以發(fā)送數(shù)據(jù)了,USB外設(shè)會(huì)把緩沖區(qū)的數(shù)據(jù)通過總線發(fā)送給主機(jī)。
2
STM32F1 USB外設(shè)主要特征
1.符合USB2.0全速設(shè)備的技術(shù)規(guī)范。
2.可配置1到8個(gè)USB雙向端點(diǎn),我們可以理解為8個(gè)IN端點(diǎn)和8個(gè)OUT端點(diǎn),也就是每一個(gè)雙向端點(diǎn)可以被配置為一個(gè)IN端點(diǎn)和一個(gè)OUT端點(diǎn),但是這兩個(gè)端點(diǎn)共用一個(gè)端點(diǎn)寄存器,兩個(gè)端點(diǎn)的類型必須是一致的(控制端點(diǎn)、中斷端點(diǎn)、批量端點(diǎn)、同步端點(diǎn))。
3.外設(shè)硬件自動(dòng)為每一個(gè)PID和Packet字段生成CRC效驗(yàn),并和其他字段組成一個(gè)完整的USB Packet。
4.支持控制傳輸、中斷傳輸、同步傳輸、批量傳輸。
5.支持同步傳輸和批量傳輸雙緩沖機(jī)制,比如說我們采集ADC或者接收外部傳感器的數(shù)據(jù)時(shí)必須保持?jǐn)?shù)據(jù)的完整性,就可以使用雙緩沖機(jī)制防止丟數(shù)。
6.支持對(duì)自己的掛起和恢復(fù)操作。
7.幀鎖定時(shí)鐘脈沖生成。當(dāng)收到一個(gè)SOF幀開始包,可以生成一個(gè)脈沖信號(hào)給其他模塊使用,如果SOF中斷使能,會(huì)進(jìn)入SOF中斷處理函數(shù)。
-
微控制器
+關(guān)注
關(guān)注
48文章
7542瀏覽量
151311 -
USB接口
+關(guān)注
關(guān)注
9文章
701瀏覽量
55634 -
中斷處理
+關(guān)注
關(guān)注
0文章
94瀏覽量
10967 -
stm32f1
+關(guān)注
關(guān)注
1文章
56瀏覽量
12199 -
CRC效驗(yàn)
+關(guān)注
關(guān)注
0文章
30瀏覽量
1102
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論