Ув. коллеги! Камень STM32L152RB. Застрял в самом начале, получаю SET_ADDRES, вбиваю в регистр и... получаю RESET. Так четыре или пять раз и хост отваливает железку. Вывод printf-а:
************************
******* Main **********
************************
USB_HwReset
USB_HwReset
Request 80 6 100 0 40
USB_HwReset
Request 0 5 2 0 0
SetDADDR 2
USB_HwReset
Я догадываюсь что надо что то еще сделать, но что не понятно. Еще зачем _ToggleDTOG_RX(ENDP0) - без установки этого бита не принимает ничего. Из даташита понял что это для точек с двойной беферизацией, непонятно нах здесь этот бит нужен.
Код
if (usb_req.bRequest == 0x05)
{
printf("SetDADDR %X \n", usb_req.wValue);
_ClearEP_CTR_RX(ENDP0);
_ToggleDTOG_RX(ENDP0);
_SetEPRxStatus(ENDP0, EP_RX_VALID);
_SetDADDR(usb_req.wValue | 0x80);
}
Сообщение отредактировал svn79 - Dec 23 2011, 21:37