阅读:1352回复:0
请教,关于设备端点程序
今天在研究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; } |
|