part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第1頁(yè)
part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第2頁(yè)
part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第3頁(yè)
part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第4頁(yè)
part3-usb ip介紹cube庫(kù)鼠標(biāo)設(shè)備例程_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論