




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
STM32USB初級培訓(xùn).USBIP2017,
STM32MCU有兩種帶USB功能的IP USB
USB+
FSOTGYYYYYYYYHSOTGOTGF105/107,F2,USBOTGF105/107,F2,USBUSBUSBStackCubeF103,F3,USB/USB+模塊特點和注意事項 符合USB2.0全速規(guī)可用資源:8個雙向端支持四種傳輸類支持USB設(shè)備的掛起和喚醒操作(控制寄存器可產(chǎn)生SOF脈注意事項 STM32F0USB
USB模塊比USB的packetbuffermemory實現(xiàn)的SIE使用固定的48MHz為使USB正常工作,APBx時鐘有最低率限>>F103,>>F0,10MHz中斷mapperF1/F3,參看RM的所有USB事件(USB復(fù)位等只能被(喚醒USB掛起模式)的事件觸發(fā)mapper僅有USB全局中斷 STM32F103STM32F103的memory所所有USB(+)模塊的Packetbuffer的使用 每個雙向EP對應(yīng)兩個packetbuffer,分用于發(fā)送和接 因此該table的位置本身必須以8字節(jié)對齊,USB_BTABLE的低三位全部為length個數(shù)據(jù)放到該EP對應(yīng)的Packetbuffer中,硬@USB_BTABLE= =緩沖區(qū)描述表+用到的端點對應(yīng)的收、發(fā)緩沖STM32CubeF0
@<stm32f0xx@<stm32f0xxhal#define@<usbdUSBD_LL_Init{HAL_PCDEx_PMAConfig(&hpcd,0x00,0,0x18);HAL_PCDEx_PMAConfig(&hpcd,0x80,0,0x58);HAL_PCDEx_PMAConfig(&hpcd,0x81,0,0x100);}端點1的發(fā)送緩沖端點0的接收緩沖BufferDescriptionSTMSW-
TransmissionbufferforEndpoint0BufferTransmissionbufferforEndpoint0BufferDescription#define ReceptionbufferforEndpoint0/*ReceptionbufferforEndpoint0/*rx/txbufferbaseaddress#defineENDP0_TXADDR#define/*EP1/*txbufferbaseaddress
TransmissionTransmissionbufferEndpointReceptionReceptionbufferEndpoint#define /*EP2/*Rxbufferbaseaddress#define 9請參考具 的ReferenceManual,USB章
USBregisterEP1的接收硬件
EP0的接收硬件
EP0的發(fā)送硬件PMA1*16位寬APB地 8【n*16+84【n*16+40【n*16
ADDR1
USB6【n*8+64【n*8+4
2【n*8+2APB地USB_BTABLE4【n*8+42【n*8+20【n*8
ADDR0相
0【n*8
@0x40006000512字節(jié)Table中每個表項都是16位寄存器,USBlocal地址每個寄存器間隔2字節(jié);APB地址每個寄存器間隔4字節(jié)(總是word, 在初始化時設(shè)定各個EP硬件接收緩沖區(qū)的長度@COUNTn_RX的 {PCD_SET_EP_TX_ADDRESS(hpcd->Instance,ep->num,ep->pmaadress)PCD_SET_EP_RXADDRESS(hpcd->Instance,ep->num,ep->pmaadress)PCD_SET_EP_RXCNT(hpcd->Instance,ep->num,ep->maxpacket)PCD_CLEAR_RX_DTOG(hpcd->Instance,ep->num)} PCD_EP_ISR_Handler()@<stm32f0xx_hal_pcd.c{count PCD_ReadPMA(hpcd->Instance,ep->xfer_buff,ep->pmaadress,}{PCD_SET_EP_RXCNT(hpcd->Instance,ep->num,ep-} {PCD_SET_EP_TXADDRESS(hpcd->Instance,ep->num,ep-T(hpcd->Instance,ep->num,ep->maxpacket)PCD_CLEAR_RX_DTOG(hpcd->Instance,ep->num)}HAL_PCD_EP_TransmitHAL_PCD_EP_Transmit()@{PCD_WritePMA(hpcd->Instance,ep->xfer_buff,ep->pmaadress,len)PCD_SET_EP_TXCNT(hpcd->Instance,ep->num,len);}
端點(EP)的初始 有8個雙向端名字叫做(每個端點的地址是軟件可配置的,4位地址(USB規(guī)范指定并非EP1的地址就一定要是1,可以是10或15,但是兩個方向的EP
端點地
物理上16個單向端
每兩個端點共享同一端點地 對物理上這16個單向端(INpacket USB外設(shè)收到主機發(fā)送的PID為IN的令牌包USB硬件發(fā)送DATA0或DATA1的PID(根據(jù)USB硬件發(fā)送待發(fā)送的數(shù)USB硬件發(fā)送計算好的USB硬件不發(fā)送datapacket,而是根據(jù)STAT_TX@USB_EPnR發(fā)送NAK或STALL的握手USB外設(shè)收到主機返回的應(yīng)答(PID為ACK的握手包)toggleDTOGTX@USB硬件把該端點設(shè)置為invalid狀態(tài)硬件置位CTR_TX,產(chǎn)生中通過檢查EP_ID和DIR@USB_ISTR來識別是哪個端點上的響應(yīng)CTR_TX中斷更新COUNTn 軟件重新設(shè)置STAT_TX=VALID來重新把該EP設(shè)置到發(fā)送valid狀I(lǐng)Ntransfer實例 OUT/SETUPpacket USB外設(shè)收到主機發(fā)送的PID為OUT/SETUP的令牌包及后續(xù)數(shù)據(jù)USB硬件接收數(shù)據(jù)到硬件緩沖區(qū)USB硬件核對收到的CRC無誤,就發(fā)出ACK握手如果CRC有誤,就不會發(fā)出ACK握手包,并置位ERR@USB_ISTR;一般USB模塊會自恢復(fù)來準(zhǔn)備接收下一次傳如果收到的數(shù)據(jù)長度超過了分配的空間,硬件回復(fù)STALLUSB硬件根據(jù)STAT_RX@USB_EPnR發(fā)送NAK或STALLUSB外設(shè)發(fā)送給主機回復(fù)的應(yīng)答(PID為ACK的握手包)toggleDTOGRX@USB硬件把該端點設(shè)置為invalid狀態(tài)硬件置位CTR_RX,產(chǎn)生中通過檢查EP_ID和DIR@USB_ISTR來識別是哪個端點上的響應(yīng)CTR_RX中斷軟件軟件重新設(shè)置STAT_RX=VALID來重新把該EP設(shè)置到接收valid狀OUTtransfer實例 PresentationTitleSETUP/OUTtransaction流程 在數(shù)據(jù)包結(jié)束后回復(fù)CRC正確||其它錯誤硬件回復(fù)硬件翻轉(zhuǎn)Datatoggle硬件修改該接收端點狀態(tài)為硬件置位CTR_RX,產(chǎn)生中硬件置位硬件回復(fù)控制傳輸組
Controltransfer
一個Setuptransaction0個或多個同方向的datastage一個status硬件把TX和RX的狀態(tài)都設(shè)置成以免主機過早結(jié)束傳輸,device可在status階段返回STALL應(yīng)以免主機在最后一次datastage后立馬開始statusstage時,device可在處理完所有數(shù)據(jù)前NAK
Out
Out
IN
ISR中軟件修Rx=Valid來使Tx=Nak來延遲
In
In
TTControltransfer 使能控EP_TYPE= @EP_KIND=“DBL_BUF”@當(dāng)某個BULK類型的EP被使能“雙緩沖”作為接收方向:STAT_TX被設(shè)置成作為發(fā)送方向:STAT_RX被設(shè)置成一個被USB硬件使用另一個就可被軟件使接收:由DTOR,DTOTSWBU當(dāng)前哪個mm正在被ictins/PresentationTitle雙緩沖下的流控機 描述【假設(shè)該EP是OUT方向的BULK,即接收數(shù)01s/w初始化。那么1st數(shù)據(jù)將放到#0buf111st數(shù)據(jù)到了,置位CTR_Rx,硬件toggleDTOG成為1,EP的STAT仍然是10CTR對應(yīng)的ISR中,sw根據(jù)1#去處理完數(shù)據(jù)后,toggleSW_BUF成為002nd數(shù)據(jù)到了,由于DTOG和SW_BUF不同,EP能繼續(xù)接收,數(shù)據(jù)放在#1buf置位CTR_RX,硬件toggleDOTG成為0,EP的STAT仍然是這次的ISR沒響應(yīng),SW_BUF還是0,而3rd數(shù)據(jù)來了,發(fā)DTOG=SW_BUF,知道發(fā)生了,因此EP的STAT被置成 需要固定和精確數(shù)據(jù)同步EP的定= PresentationTitle 設(shè)備檢測到連續(xù)3個SOF包都沒有收置位 TR:激活UB外設(shè)的掛起模式(SO和擬收發(fā)塊的態(tài)功還)關(guān)閉或降低除USB之外的其他外設(shè)的靜態(tài)功 設(shè)備的喚硬件清 觸發(fā)WKUP中軟件置 TR,持續(xù)1ms~15ms后,SW再復(fù)位打開HSE、PLL恢復(fù)正常系統(tǒng)時復(fù) 還可通過RXDP和RXDM位來識別resumetriggeringPresentationTitle 設(shè)備檢測到總線上沒有通信的情況長達(dá)r未收到主機應(yīng)答、CRC校驗錯誤、比特填充錯誤、檢測到 有USBPMAPMA支持&集成NNY1*16bit/YN-Y2*16bit/YNY無需晶1024,后256節(jié)和CAN共2*16bit/YY無需晶
373???
E
有USB非YY
1024字1024字512字1024,256字節(jié)CAN共1024,512字
PMA2*16bit/2*16bit/word1*16bit/2*16bit/1*16bit/word1*16bit/word2*16bit/2*16bit/word2*16bit/
支持LPM&NN
YN根據(jù)應(yīng)用選擇合適的USB類實根據(jù)所選擇的USB類協(xié)議,完成描述符以及對該類特定命令的響初始化所使用的端點:配置端點的傳輸類型、方向、初始狀態(tài);設(shè)端點對應(yīng)發(fā)送/接收緩沖區(qū)的地接收端 發(fā)送端
USBD_HIDdemoonSTM32072B-EVAL USBD_HIDdemoonSTM32072B-項目結(jié)【Application/User文件夾】【MiddlewareClassHID文件夾】【MiddlewareClassHID文件夾】初始化:端點、收、發(fā)緩配置三個端點的硬件緩沖區(qū)起始配置雙向0端點(包長、傳輸類型、端點初始狀態(tài)→配置IN端點1(包長,傳輸類型,端點初始狀態(tài)
PresentationTitleUSBD_HIDdemoonSTM32072B-控制傳完整的Setuptransaction觸發(fā)中斷:USBD_ParseSetupRequest→。。完整的Setuptransaction觸發(fā)中斷:USBD_ParseSetupRequest→。。。→>pClass->Setup
類相關(guān)命Hhid-Hhid-標(biāo)準(zhǔn)命Hhid-
pdev->pClass-pdev->pClass-pdev->pClass-pdev->pClass-pdev->pClass-pdev->pClass-
USBD_HIDdemoonSTM32072B-應(yīng)用數(shù)據(jù)傳SysTick_Handler()累計到USBD_HID_SendReport→HAL_PCD_EP_Transmit()@
USBD_HIDdemo
if HAL_PCD_GET_FLAG(hpcd,{ HAL_PCD_CLEAR_FLAG(hpcd,/*Forcelow-powermodeinthemacrocellhpcd->Instance->CNTR|= hpcd->Instance->CNTR|= if HAL_PCD_GET_FLAG(hpcd,USB_ISTR_WKUP)=={HALPCD
if(hpcd-{SCB->SCR|=(SLEEPDEEP|}} if HAL_PCD_GET_FLAG(hpcd,{hpcd->Instance->CNTR&= wInterrupt_MaskTR_CTRMTR_WKUPM|TR_ERRMTR_ESOFMif(hpcd-{SCB->SCRif(hpcd-{SCB->SCR&=~(SLEEPDEEP|}HALPCD HAL_PCD_CLEAR_FLAG(hpcd,}voidvoidHAL_GPIO_EXTI_Callback(uint16_t{if(GPIO_Pin== {
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新建果園施肥方案范本
- 雙層輕鋼房屋施工方案
- 2025年【機械員-崗位技能(機械員)】模擬考試題及答案
- 天然氣開采業(yè)發(fā)展趨勢分析考核試卷
- 考前沖刺項目管理試題及答案
- 菏澤鋼制保溫門施工方案
- 室外鋼連廊施工方案
- 木材加工企業(yè)的生產(chǎn)調(diào)度與庫存管理考核試卷
- 石灰在生物燃料制備中的應(yīng)用考核試卷
- 2024年項目管理專業(yè)考試指南試題及答案
- 文言文雙文本閱讀:趙襄子被圍晉陽(附答案解析與譯文)
- 《中醫(yī)食療藥膳》課件
- 銀行業(yè)審計服務(wù)方案
- 甲亢完整課件完整版
- 2025年湖北省高考數(shù)學(xué)模擬試卷(附答案解析)
- 電商平臺合規(guī)管理制度分析
- 數(shù)智化轉(zhuǎn)型背景下國企財務(wù)管理體系的優(yōu)化分析
- 四年級語文下冊 第16課《海上日出》同步訓(xùn)練題(含答案)(部編版)
- 汽車故障診斷技術(shù)教案(發(fā)動機部分)
- 《始得西山宴游記》名師課件1
- 2023技規(guī)選擇題庫(內(nèi)附答案)
評論
0/150
提交評論