доброго времени суток. прошу помощи - не получается никак с усб-контроллером на чипе STR912FA. осуществляю инициализацию регистров, в процессе работы устанавливается бит USB_ISTR_bit.RESET (I received bus reset), после что нужно сделать чтоб увидеть в буфере 0-й точки запрос SETUP reqeust? корректнее сконфигурировать 0-ю точку (как)? ответить на сигнал сброса установкой каких-то битов в каких-то регистрах (каких)?
========================== #include <iostr912f.h>
int main () { SCU_PRR0_bit.RST_USB = 0; //USB RESET enable SCU_PCGR0_bit.USB48M = 0; //1: 48 MHz USB clock stop SCU_PCGR0_bit.USB = 1; //1: USB peripheral clock running SCU_PRR0_bit.RST_USB = 1; //USB RESET disable SCU_PCGR1_bit.GPIO7 = 1; //GPIO7 ON SCU_PRR1_bit.RST_GPIO7 = 1; //GPIO7 RESET disable SCU_GPIOOUT7 = 0x5555; // GPIOOUT7 GPIO7_DIR = 0x01; // output GPIO7_DATA = 0xFE; // output SCU_CLKCNTR_bit.USBSEL = 0x1; //USB 48 MHz Clock Selection 00: fMSTR (default) USB_CNTR = 1; //1: Force a reset of the USB Peripheral, SCU_PCGR0_bit.USB48M = 1; //1: 48 MHz USB clock running // Init controls endpoints GPIO7_DATA = 0xFF; // output USB_CNTR_bit.FRES = 0; // Exit from suspend USB_CNTR_bit.ESOFM = 0; USB_CNTR_bit.RESUME = 0; USB_CNTR_bit.LP_MODE = 0; USB_CNTR_bit.FSUSP = 0; // Must be 0 USB_ISTR = 0; GPIO7_DATA = 0xFE; // output
m22: if (USB_ISTR_bit.RESET == 0)goto m22; USB_ISTR_bit.RESET = 0;
// настройка конечной точки 0 USB_BTABLE = 0x07E8; USB_DADDR_bit.EF = 1;
*((long*)0x700007E8) = 0x00080000; *((long*)0x700007EC) = 0x10080008; USB_EP0R_bit.EP_TYPE = 0x01; USB_EP0R_bit.EA = 0x00; USB_EP0R_bit.STAT_RX = 0x01; m23: if (USB_ISTR_bit.CTR == 0)goto m23; for(;;) ; } ============================================= ожидалось что после этого в ячейках памяти начиная с адерса 0х7000000 (буфера 0-й точки) обновится инфа (окажется запрос с хоста), но его там нету((
помогите плиз.
|