1、/Set Request Delay_28us(); if(MISC&0X40!=0) FIFO_FLAG=0x0f;/READY0x80! FIF0_FLAG&=0xf0;/Len0 Detected=0xfe;/clear REQ return FIFO_FLAG;BYTE FIFO_WR_CHECK(BYTE num)/后4位表示Ready位,前四位表示Len0位的状态是否有被设置 MISC|=0X02;void Read_FIFO(BYTE *Fifo_Addr,BYTE Fifo_Size,BYTE *buffer) int i=0; MISC|=0x01; for(i=0;idat
2、a_start0)/请求的数据超出ROM数据 data_count=buffer6;0x40!=0)/是控制指令 if(data_count=0) Send_Hand_Shake(); /开始真正的control_read if(bFlag_RD_HTable=0)/Read Low Byte bFlag_RD_HTable=1; bufferi=(BYTE )*rom_dataptr;/取其低位 i+; data_count-;/全局变量,要发送的总长度 if(data_count8;/取其高位 rom_dataptr+;/将ROM指针前移 if(bufferi=0x3f) if(i+1=8
3、) /填充完毕,结束循环,开始向FIFO发送数据 if(Check_Real_Cmd()=TRUE) if(FIFO_WR_CHECK(0)&0xff=0) continue; Write_FIFO(Fifo_0_Addr,0x02,buffer); SetAddress(): 重新设定Endpoint地址函数void SetAddress(BYTE *buffer) BYTE Dev_Addr; Dev_Addr=buffer2/FIFO_OUT3,FIFO_WVALUEL SIES|=0x01;/主机从设备读操作后将更新在AWR中的地址,否则为0则立即更新 Dev_Addr& USB_AW
4、R=Dev_Addr; SetConfiguration(): 设置配置函数void SetConfiguration(BYTE *buffer,BYTE *USB_Configuration) USVC|=0x80; PGA_CTRL|=0x80; *USB_Configuration=buffer2;/FIFO_WVALUEL STALL&=0x00;/设置好以上的寄存器 ClearFeature(): 清徐Feature函数void ClearFeature(BYTE *buffer) BYTE temp; temp=buffer2;/FIFO_wValueL if(temp=0x01)
5、 STALL0|=0x01;/SendStall0();void ClearFeature_Endpoint(BYTE *buffer) temp=buffer4;/FIFO_wIndexL if(bFlag_SetConfiguration_Ready=TRUE);/表明已经配置过了 temp=GetPipeBit(temp);/获取对应位 temp=temp;/取反 STALL=temp&STALL;/与STALL寄存器相与,将需要的位置0 SetFeature(): 设置Feature函数 包括Endpoint部分void SetFeature(BYTE *buffer) BYTE FI
6、FO_wValueL=buffer2; BYTE FIFO_wValueH=buffer3; if(FIFO_wValueH=0x00) if(FIFO_wValueL=0x01) else if(FIFO_wValueH=0X81 0010 0000B if(temp&STALL=TRUE)/要检测的位置1 buffer0=1; else buffer0=0; buffer1=0; GetConfiguration(): 设置配置的函数void GetConfiguration(BYTE *buffer,BYTE USB_Configuration) BYTE FIFO_SendLen; buffer0=USB_Configuration; FIFO_SendLen=0x01; if(Check_Real_Cmd()=TRUE) return;=0)/Fifo Ready GetInterface(): 获取Interface接口的函数/*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1