USB OTG FS: 16ms interval Interrupt transfer don't work (EP2 IN) on NUCLEO-F446ZE
Hello everyone,
I am using a NUCLEO-F446ZE board as a USB device.
I use EP1(IN/OUT) for bulk transfer and EP2 IN for Interrupt transfer.
USB firmware side(STM32F446ZE), I send EP2 data as below.
i call USBD_LL_Transmit(pdev, ep_addr, pbuf, size) then calls
HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum).
everything up to this step seems fine and EP2 IN data is stored in FIFO.
However when PC(host side) polls for EP2 IN data, PC can`t receive the data.
I use WinUSB to poll EP2 IN data.
WinUsb_ReadPipe(winusbHandle, ENDPOINT_INT, interruptBuffer, sizeof(interruptBuffer), &bytesRead, NULL);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
000058: Bulk or Interrupt Transfer (UP), 2025-05-07 09:50:43.1859061 +0.2135957. (1. Device: )
Status: 0xc0010000
Pipe Handle: 0x22737730 (Endpoint Address: 0x82)
Get 0x0 bytes from the device
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
and HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) has not been called at all.
I dont know why when PC polls for EP2 IN data it`s not getting anything.
USB device seems not responding to PC polling, is it possible that my interrupt for detecting PC polling is not properly set?
when PC polls for EP IN data what kinds of data format or request does it send and how shall I detect this poll request from my usb device firmware?
thank you very much!
