资源描述:
《【精品】USB通信协议.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、做了一•段时间的USB方面的开发,虽然是现成的方案,我们只需要搞清楚它的架构,再添加我们的代码就行了。空闲之余,研究了一下USB通信过程,也把82A851R部分的汇编代码重新用C语言描述了一篇(仅是描述,不代表能真正运行)。发现汇编代码条理性太在太差了,不好读。一把C语言的代码一写,马上觉得清楚很多。废话少说,开始贴图,贴代码。4rtfO.TTTtzMnW.TWUMw>ifoarmxti■8tf"".rm■饨4rtfO.TTTtzMnW.TWUMW■8nvoM4tf>ifoarmxti■14m.trwu»»Tm«nTm«nCB4)MIIMICM1
2、M11WC»€SM>Mt11F»^«tvOIf”55«•・・—・•.VOIWMy。kw*CMJMMWcucumwtrwAltb-MlI—••亠11nwgem”rit0IMRCHitl9190■■■V*ri>oMMCttHfl9Qgsm”l-{-=4H-f药・U_1H-■4"bf-J+-Erni^QinvOPfflltf================下面是将一些函数重新用C语言描述了一・遍===========#defineBYTEunsignedchar//*****★*舟*舟舟舟舟*************舟*舟舟*************舟
3、***水**//基本定义函数//*******舟*舟*舟舟**比**********舟*舟舟**比**********舟*****比BYTEFlFO_RD_CHECK(BYTEnum){BYTEFIFO_FLAG=0;UCC
4、=num;//选择Endpoint,0,1,2,3,4,MlSC&=0xf8;//低3位置0MISCI=0X00;//TX位置0;Delay_3us();MISC
5、=0X01;//SetRequestDelay_28us();if(M-SCQO0X40T0)F-FO—FLAGHifv'READYif(M-sceo0x80lr
6、0)F-FO—FLAGeoHoxfov'LenoDe-eciedM-scQOHoxfe八/o-earREQreiurnF-FO—FLAG八F-FO—WR—CHECK(BYTEnum)BYTEF-FolFLAG"07、可4妄如刃Ready之乏匡妄煤刃LenO亠SKS班存芳少器总scoo-"num<、廉«EndpoinioL-2W4M-scf0xf8v、M;3som-sctoxon/、txwm5?De-ay—3us()八M-sc-H0X01V/S2-RequesiDe-ay—28us()八if(M-scco0x40T0)F-FO—FLAGnlfv、R
7、EADYif(M-scoo0x80lr0)F-FO—FLAGQOHoxfov'LenoDeieciedM-scguoxfev/c-earREQreiurnF-FO—FLAG八Read—F-FO(BYTE*Fifo——AdRBYTEFio—sizpBYTE*buffer)M-sc-H0x0二、/SeiRequesiforuHOHAFifo—size=++)亠buffer三HFio—Addro一三歹F_FOaDe_ayl28us()_if(M-scco0x40;0)breakV/N2-ReadyM-sc>H0X027、治焜TX0憲De-ay—3us(
8、)八M-scQO=0XFEV/c-earRequesidWme—F一FOBYTE*Fio—AdRBYTESendLesmBYTE*buffer)in二H0八M-SCTOXOwseiRequesiforuHO八icsendLenih=++)亠Fio—AddroTbuHer三V、讀m沱廉巨鏗蛊富知盘目旨Fio-£De_ay—28us()八if(MISC&0x40==0)break;//NotReady}MlSCJ0X02;//改变TX位状态Delay_3us();MlSC&=0XFE;//ClearRequestBOOLCheck_Real_Cmd(
9、){BYTEbRag_Real_Cmd=FALSE;if(MISC&0X20!=0)bHag_Real_Cmd=TRUE;if(MlSC&0X80!=0)bFag_Real_Cmd=TRUE;returnbRag_Real_Cmd;voidSend_hand(){BOOLlsRealCmd,Status_Flag;while(1){lsRealCmd=Check_Real_Cmd();if(lsRealCmd==TRUE)return;else{Status_Flag=FlFO_WR_CHECK(0);if(Status_Flag&0x0f!=0
10、)//Fifo_Readybreak;elsecontinue;}}MISC
11、=0x01;//SetRequsetMISCJ0X02;/