阅读:844回复:1
[救命贴]ISP1581关于切换端点后的延时?
我用44b0接ISP1581,通用处理器模式,有nWAIT等待,所以访问周期可以保证〉80ns
ADDR有效和CS拉低同时发生 15ns后RD或者WR拉低,低电平维持31ns再拉高 15ns后CS再拉高,同时ADDR无效 32MHz系统时钟下正常 64MHz就不正常了: 在收到第一个Setup包后是这样 void USB_Setup(void) { INT16U temp; int i; ISP1581_SetEndpointIndex(0x20); // 选择端点0的SETUP缓冲区 temp=ISP1581_GetDataPort(); USB_DEVICE_REQUEST.bmRequestType=temp; // 低8位 USB_DEVICE_REQUEST.bRequest=temp>>8; // 高8位 USB_DEVICE_REQUEST.wValue=ISP1581_GetDataPort(); .......... 问题出来了,我刚切换端点到EP0SETUP,马上读的时候居然读出来一个随机值,接着才是0x0680 假如在ISP1581_SetEndpointIndex(0x20)后写几个nop类似语句,那么就正常了 大家帮帮我啊,我真不希望恢复32M的慢速度去,难道一个写接着一个读,访问时间大于200ns? |
|
沙发#
发布于:2005-06-20 10:52
你要按照datasheet上的时序要求,至少留出30%的余量
小于80ns我也是过,60个左右也可以,再小很可能会出问题 对于高速的情况,你可以加延时来做 |
|