USB通信协议源代码.docx

上传人:lao****ou 文档编号:260905 上传时间:2023-07-04 格式:DOCX 页数:25 大小:135.50KB
下载 相关 举报
USB通信协议源代码.docx_第1页
第1页 / 共25页
USB通信协议源代码.docx_第2页
第2页 / 共25页
USB通信协议源代码.docx_第3页
第3页 / 共25页
USB通信协议源代码.docx_第4页
第4页 / 共25页
USB通信协议源代码.docx_第5页
第5页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《USB通信协议源代码.docx》由会员分享,可在线阅读,更多相关《USB通信协议源代码.docx(25页珍藏版)》请在第一文库网上搜索。

1、做了一段时间的USB方面的开发,虽然是现成的方案,我们只需要弄清晰它的架构,再添加我们的代码就行了。空闲之余,研究了一下USB通信过程,也把82A851R部分的汇编代码重新用C语言描述了一篇(仅是描述,不代表能真正运营)。发现汇编代码条理性太在太差了,不好读。一把C语言的代码一写,立即觉得清晰诸多。废话少说,开始贴图,贴代码。二=下面是将某些函数重新用C语言描述了基本定*A义函数I*aBYTEFIFO_RD_CHECK(BYTEnum)aBYTEFIFO_F1AG=O;UCCI=num;/选择Endpoint,Oz1,2,3,4,MISC&=0xf8;低3位置0MISCI=OX00;/TX位置

2、0;ADe1ay_3us();M1SCI=OXO1;/SetReqUeSMDe1ay_28us()if(MISC80X40!=0)FIFO_F1AG=OxOf;/READYif(MISC&0x80!=0)FIFO.F1AG&=0xf0;/1e0DetectcaMISC&=0xfe;/c1earREQreturnFIFO_F1AG;aaBYTEFIFO_WR_CHECK(BYTEnum)(BYTEFIFO_F1AG=0;/后4位表达R号。dy位,前四位表达1en0位的状态与否有被设立AUCC|=num;选择Endpoit0,1,2z3,4,MISC&=OXf8;低3位置OAMISCI=OXO2;

3、/TX位置0;De1ay_3us();MISCI=0X01;/SetRequestDeIay_28us();if(MISC&0x80!=O)FIFO_F1AG&=OXfO;/1e1oDetectedMISC&=Oxfe;/c1erREQareturnF1FC1F1AG;AvoidRead_FIFO(BYTE*Fifo_AddrzBYTEFifo_Size,BYTE*buffer)(inti=0;MISCI=OxO1;/SetRequestafor(i=0;iFifo_Size;i+)abufferi=Fifo_Addr0;从FIFO地址取值DeIay_28US();Aif(MISC&0x40=

4、O)break;/NotReady)MISC=0X02;变化TX位状态DeIay_3US();AMISC&=0XFE;/CIearRequesbavoidWrite_FIFO(BYTE*Fifo.AddrzBYTESend1enth,BYTE*buffer)aainti=0;MISCI=OXO1;/SetRequeshfor(i=Ojidata_start0)/祈求的数据超过ROM数据return;data_count=buffer6;if(MISC&0x40。0)/是控制指令return;Aif(data_count=0)ASend_Hand_ShQke();Areturn;a/开始真正的c

5、ontro1_reacAwhi1e(1)aaif(bF1ag_RD_HTab1e=O)Read1owBytea*rom_dataptr;取其低位Ai+;data_count;/全局变量,要发送的总长度if(dota_cout8;/(其高位Arom_dataptr+;将ROM指针前移if(bufferi=0x3f)cotinue;e1saai+;if(dta_cout=0X81=0X84)aaif(FIFO_wVa1ue1=0x00)aSene1HQnC1ShQke()?)e1seSTA11O=Ox01;/SendSta1I0();Aae1seSTA11O=0x01;/SendStaII0();

6、)voidSetFeatre-Edpoint(BYTE*buffer)ABYTEtemp;Atemp=buffer4;/FIFO_w1ndex1if(bFIag_SetConfiguration_Ready!=TRUE)return;/有无被SetConfiguration。设立ternp&=Ox7f;temp=GetPipeBit(temp);获取相应位STA11=tempSTA11;将指定的Enpoint置IASend_HQnC1Shke()淮)*A/Set1nterface():设立InterfaCe函数A/*aBOO1SetInterface(BYTE*bufferzBYTE*USBnterfa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服