这几天在试一个stm32f407的板子,硬件用的是外部的HS ULPI PHY,软件上用的是有专用DMA的端点1进行数据收发,USB库的版本是V2.1.0, 板子作为USB device使用。先前在板子和PC之间互相只传递RAM里面的数据已经成功了, 而且比较稳定,连续传输几百兆字节都没问题。
现在希望在EPIN1中断里面数据发送给PC之前,符合条件的某些情况下先进行一些处理(比较耗时间,大概会有毫秒级别),然后再发送。这样改动之后,发现数据传递了300KB左右的时候,PC就收不到板子的数据了。测试过多次,都是一样的现象,就是在300KB左右的时候停下了。检查代码,确认了EPIN1中断处理中的DCD_EP_Tx()函数是调用过的。目前搞不明白什么原因导致PC收不到数据,只是感觉在EPIN1里面等待的时间长了,可能会导致后续数据发布出来??
刚接触stm32f407,手册还不熟悉。香主和各位高手帮帮忙,看看下一步该怎么调,有没有什么数据发送的标志位可以检查下? 多谢啦! |