目前在调试一个stm32f405vg芯片,usb通过u盘进行IAP。使用的是官方例子改的,功能都正常,就是调试完成以后,发现超过48K的就会有问题,每次计数读取数据,都是只读到0xC000个数据,然后usb就不停的进入USB_OTG_USBH_handle_hc_n_In_ISR这个函数中的这一段:
else if (hcint.b.nak)
{
if(hcchar.b.eptype == EP_TYPE_INTR)
{
UNMASK_HOST_INT_CHH (num);
USB_OTG_HC_Halt(pdev, num);
CLEAR_HC_INT(hcreg , nak);
}
else if ((hcchar.b.eptype == EP_TYPE_CTRL)||
(hcchar.b.eptype == EP_TYPE_BULK))
{
/* re-activate the channel */
hcchar.b.chen = 1;
hcchar.b.chdis = 0;
USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[num]->HCCHAR, hcchar.d32);
}
pdev->host.HC_Status[num] = HC_NAK;
}
请教香主,遇到过这个问题么?因为不太懂USB,不知道如何调试。 |