liaron01
驱动牛犊
驱动牛犊
  • 注册日期2009-11-25
  • 最后登录2010-05-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1308回复:0

请教,关于设备端点程序

楼主#
更多 发布于:2010-05-04 00:09
今天在研究S3C2410的USB固件程序,有个问题请教各位:
为什么UsbState==0x01234567才能执行PrepareEp1Fifo(void)呢,这个0X0124567是从哪里来的,
另外各位能向我解释一下USB固件程序怎么才能实现大量数据的传输,如果是在中断方式下,需要一个PACKET接一个PACKET的由程序执行吗? 教程上面IN端点1的代码如下。

U8 ep1Buf[EP1_PKT_SIZE];
int transferIndex=0;
void PrepareEp1Fifo(void)
{
    int i;
    U8 in_csr1;  
    
    rINDEX_REG=1;
    in_csr1=rIN_CSR1_REG;
    
    for(i=0;i<EP1_PKT_SIZE;i++)ep1Buf=(U8)(transferIndex+i);
    WrPktEp1(UsbTxAddr, EP1_PKT_SIZE);
    UsbTxAddr   += EP1_PKT_SIZE;
       UsbInLength -= ((UsbInLength>EP1_PKT_SIZE)?EP1_PKT_SIZE:UsbInLength);
       if(!UsbInLength)
           UsbState = 0;
    SET_EP1_IN_PKT_READY();
}


void Ep1Handler(void)
{
    U8 in_csr1;
    
    rINDEX_REG = 1;    
    in_csr1 = rIN_CSR1_REG;  

    if(in_csr1 & EPI_SENT_STALL)
    {  
           CLR_EP1_SENT_STALL();
           return;
    }    

       transferIndex++;        
    if(UsbState==0x01234567)    
    PrepareEp1Fifo();
                    
      return;
}  
游客

返回顶部