![part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第1頁(yè)](http://file4.renrendoc.com/view/28614b795435e2de07b2e319f7fc9e93/28614b795435e2de07b2e319f7fc9e931.gif)
![part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第2頁(yè)](http://file4.renrendoc.com/view/28614b795435e2de07b2e319f7fc9e93/28614b795435e2de07b2e319f7fc9e932.gif)
![part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第3頁(yè)](http://file4.renrendoc.com/view/28614b795435e2de07b2e319f7fc9e93/28614b795435e2de07b2e319f7fc9e933.gif)
![part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第4頁(yè)](http://file4.renrendoc.com/view/28614b795435e2de07b2e319f7fc9e93/28614b795435e2de07b2e319f7fc9e934.gif)
![part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第5頁(yè)](http://file4.renrendoc.com/view/28614b795435e2de07b2e319f7fc9e93/28614b795435e2de07b2e319f7fc9e935.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
STM32USB初級(jí)培訓(xùn).USBIP2017,
STM32MCU有兩種帶USB功能的IP USB
USB+
FSOTGYYYYYYYYHSOTGOTGF105/107,F2,USBOTGF105/107,F2,USBUSBUSBStackCubeF103,F3,USB/USB+模塊特點(diǎn)和注意事項(xiàng) 符合USB2.0全速規(guī)可用資源:8個(gè)雙向端支持四種傳輸類支持USB設(shè)備的掛起和喚醒操作(控制寄存器可產(chǎn)生SOF脈注意事項(xiàng) STM32F0USB
USB模塊比USB的packetbuffermemory實(shí)現(xiàn)的SIE使用固定的48MHz為使USB正常工作,APBx時(shí)鐘有最低率限>>F103,>>F0,10MHz中斷mapperF1/F3,參看RM的所有USB事件(USB復(fù)位等只能被(喚醒USB掛起模式)的事件觸發(fā)mapper僅有USB全局中斷 STM32F103STM32F103的memory所所有USB(+)模塊的Packetbuffer的使用 每個(gè)雙向EP對(duì)應(yīng)兩個(gè)packetbuffer,分用于發(fā)送和接 因此該table的位置本身必須以8字節(jié)對(duì)齊,USB_BTABLE的低三位全部為length個(gè)數(shù)據(jù)放到該EP對(duì)應(yīng)的Packetbuffer中,硬@USB_BTABLE= =緩沖區(qū)描述表+用到的端點(diǎn)對(duì)應(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);}端點(diǎn)1的發(fā)送緩沖端點(diǎn)0的接收緩沖BufferDescriptionSTMSW-
TransmissionbufferforEndpoint0BufferTransmissionbufferforEndpoint0BufferDescription#define ReceptionbufferforEndpoint0/*ReceptionbufferforEndpoint0/*rx/txbufferbaseaddress#defineENDP0_TXADDR#define/*EP1/*txbufferbaseaddress
TransmissionTransmissionbufferEndpointReceptionReceptionbufferEndpoint#define /*EP2/*Rxbufferbaseaddress#define 9請(qǐng)參考具 的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中每個(gè)表項(xiàng)都是16位寄存器,USBlocal地址每個(gè)寄存器間隔2字節(jié);APB地址每個(gè)寄存器間隔4字節(jié)(總是word, 在初始化時(shí)設(shè)定各個(gè)EP硬件接收緩沖區(qū)的長(zhǎng)度@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);}
端點(diǎn)(EP)的初始 有8個(gè)雙向端名字叫做(每個(gè)端點(diǎn)的地址是軟件可配置的,4位地址(USB規(guī)范指定并非EP1的地址就一定要是1,可以是10或15,但是兩個(gè)方向的EP
端點(diǎn)地
物理上16個(gè)單向端
每?jī)蓚€(gè)端點(diǎn)共享同一端點(diǎn)地 對(duì)物理上這16個(gè)單向端(INpacket USB外設(shè)收到主機(jī)發(fā)送的PID為IN的令牌包USB硬件發(fā)送DATA0或DATA1的PID(根據(jù)USB硬件發(fā)送待發(fā)送的數(shù)USB硬件發(fā)送計(jì)算好的USB硬件不發(fā)送datapacket,而是根據(jù)STAT_TX@USB_EPnR發(fā)送NAK或STALL的握手USB外設(shè)收到主機(jī)返回的應(yīng)答(PID為ACK的握手包)toggleDTOGTX@USB硬件把該端點(diǎn)設(shè)置為invalid狀態(tài)硬件置位CTR_TX,產(chǎn)生中通過檢查EP_ID和DIR@USB_ISTR來(lái)識(shí)別是哪個(gè)端點(diǎn)上的響應(yīng)CTR_TX中斷更新COUNTn 軟件重新設(shè)置STAT_TX=VALID來(lái)重新把該EP設(shè)置到發(fā)送valid狀I(lǐng)Ntransfer實(shí)例 OUT/SETUPpacket USB外設(shè)收到主機(jī)發(fā)送的PID為OUT/SETUP的令牌包及后續(xù)數(shù)據(jù)USB硬件接收數(shù)據(jù)到硬件緩沖區(qū)USB硬件核對(duì)收到的CRC無(wú)誤,就發(fā)出ACK握手如果CRC有誤,就不會(huì)發(fā)出ACK握手包,并置位ERR@USB_ISTR;一般USB模塊會(huì)自恢復(fù)來(lái)準(zhǔn)備接收下一次傳如果收到的數(shù)據(jù)長(zhǎng)度超過了分配的空間,硬件回復(fù)STALLUSB硬件根據(jù)STAT_RX@USB_EPnR發(fā)送NAK或STALLUSB外設(shè)發(fā)送給主機(jī)回復(fù)的應(yīng)答(PID為ACK的握手包)toggleDTOGRX@USB硬件把該端點(diǎn)設(shè)置為invalid狀態(tài)硬件置位CTR_RX,產(chǎn)生中通過檢查EP_ID和DIR@USB_ISTR來(lái)識(shí)別是哪個(gè)端點(diǎn)上的響應(yīng)CTR_RX中斷軟件軟件重新設(shè)置STAT_RX=VALID來(lái)重新把該EP設(shè)置到接收valid狀OUTtransfer實(shí)例 PresentationTitleSETUP/OUTtransaction流程 在數(shù)據(jù)包結(jié)束后回復(fù)CRC正確||其它錯(cuò)誤硬件回復(fù)硬件翻轉(zhuǎn)Datatoggle硬件修改該接收端點(diǎn)狀態(tài)為硬件置位CTR_RX,產(chǎn)生中硬件置位硬件回復(fù)控制傳輸組
Controltransfer
一個(gè)Setuptransaction0個(gè)或多個(gè)同方向的datastage一個(gè)status硬件把TX和RX的狀態(tài)都設(shè)置成以免主機(jī)過早結(jié)束傳輸,device可在status階段返回STALL應(yīng)以免主機(jī)在最后一次datastage后立馬開始statusstage時(shí),device可在處理完所有數(shù)據(jù)前NAK
Out
Out
IN
ISR中軟件修Rx=Valid來(lái)使Tx=Nak來(lái)延遲
In
In
TTControltransfer 使能控EP_TYPE= @EP_KIND=“DBL_BUF”@當(dāng)某個(gè)BULK類型的EP被使能“雙緩沖”作為接收方向:STAT_TX被設(shè)置成作為發(fā)送方向:STAT_RX被設(shè)置成一個(gè)被USB硬件使用另一個(gè)就可被軟件使接收:由DTOR,DTOTSWBU當(dāng)前哪個(gè)mm正在被ictins/PresentationTitle雙緩沖下的流控機(jī) 描述【假設(shè)該EP是OUT方向的BULK,即接收數(shù)01s/w初始化。那么1st數(shù)據(jù)將放到#0buf111st數(shù)據(jù)到了,置位CTR_Rx,硬件toggleDTOG成為1,EP的STAT仍然是10CTR對(duì)應(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ù)來(lái)了,發(fā)DTOG=SW_BUF,知道發(fā)生了,因此EP的STAT被置成 需要固定和精確數(shù)據(jù)同步EP的定= PresentationTitle 設(shè)備檢測(cè)到連續(xù)3個(gè)SOF包都沒有收置位 TR:激活UB外設(shè)的掛起模式(SO和擬收發(fā)塊的態(tài)功還)關(guān)閉或降低除USB之外的其他外設(shè)的靜態(tài)功 設(shè)備的喚硬件清 觸發(fā)WKUP中軟件置 TR,持續(xù)1ms~15ms后,SW再?gòu)?fù)位打開HSE、PLL恢復(fù)正常系統(tǒng)時(shí)復(fù) 還可通過RXDP和RXDM位來(lái)識(shí)別resumetriggeringPresentationTitle 設(shè)備檢測(cè)到總線上沒有通信的情況長(zhǎng)達(dá)r未收到主機(jī)應(yīng)答、CRC校驗(yàn)錯(cuò)誤、比特填充錯(cuò)誤、檢測(cè)到 有USBPMAPMA支持&集成NNY1*16bit/YN-Y2*16bit/YNY無(wú)需晶1024,后256節(jié)和CAN共2*16bit/YY無(wú)需晶
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類實(shí)根據(jù)所選擇的USB類協(xié)議,完成描述符以及對(duì)該類特定命令的響初始化所使用的端點(diǎn):配置端點(diǎn)的傳輸類型、方向、初始狀態(tài);設(shè)端點(diǎn)對(duì)應(yīng)發(fā)送/接收緩沖區(qū)的地接收端 發(fā)送端
USBD_HIDdemoonSTM32072B-EVAL USBD_HIDdemoonSTM32072B-項(xiàng)目結(jié)【Application/User文件夾】【MiddlewareClassHID文件夾】【MiddlewareClassHID文件夾】初始化:端點(diǎn)、收、發(fā)緩配置三個(gè)端點(diǎn)的硬件緩沖區(qū)起始配置雙向0端點(diǎn)(包長(zhǎng)、傳輸類型、端點(diǎn)初始狀態(tài)→配置IN端點(diǎn)1(包長(zhǎng),傳輸類型,端點(diǎn)初始狀態(tài)
PresentationTitleUSBD_HIDdemoonSTM32072B-控制傳完整的Setuptransaction觸發(fā)中斷:USBD_ParseSetupRequest→。。完整的Setuptransaction觸發(fā)中斷:USBD_ParseSetupRequest→。。?!?gt;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()累計(jì)到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. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- D打印技術(shù)在家具設(shè)計(jì)制造的優(yōu)勢(shì)考核試卷
- 伐區(qū)作業(yè)環(huán)境保護(hù)措施實(shí)施考核試卷
- 娃娃玩具生產(chǎn)設(shè)備選型與優(yōu)化策略分析考核試卷
- 孤殘兒童收養(yǎng)案例分析與處理考核試卷
- 建筑消防工程安全管理考核試卷
- 農(nóng)產(chǎn)品加工設(shè)備在農(nóng)業(yè)現(xiàn)代化中的角色考核試卷
- 互聯(lián)網(wǎng)平臺(tái)個(gè)人信息安全保護(hù)考核試卷
- 現(xiàn)代企業(yè)管理在白水泥產(chǎn)業(yè)集群中的應(yīng)用
- 現(xiàn)代物流業(yè)的政策支持與發(fā)展環(huán)境分析
- 2025-2030年故事講述機(jī)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- Unit 2 We're going to do some research(教案)-2023-2024學(xué)年湘少版(三起)英語(yǔ)五年級(jí)下冊(cè)
- 緊密型縣域醫(yī)療衛(wèi)生共同體慢病管理中心運(yùn)行指南試行等15個(gè)指南
- 基金應(yīng)知應(yīng)會(huì)專項(xiàng)考試題庫(kù)(證券類190題)附有答案
- 快速入門穿越機(jī)-讓你迅速懂穿越機(jī)
- 水利安全生產(chǎn)風(fēng)險(xiǎn)防控“六項(xiàng)機(jī)制”右江模式經(jīng)驗(yàn)分享
- 幼兒園衛(wèi)生保健開學(xué)培訓(xùn)
- 食材配送服務(wù)售后服務(wù)方案
- 新目標(biāo)(goforit)版初中英語(yǔ)九年級(jí)(全一冊(cè))全冊(cè)教案-unit
- 《如何做一名好教師》課件
- 2016-2023年婁底職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 貴陽(yáng)市2024年高三年級(jí)適應(yīng)性考試(一)一模英語(yǔ)試卷(含答案)
評(píng)論
0/150
提交評(píng)論