- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
初涉USB,初学者USB入门总结.
初涉USB,初学者USB入门总结(1)枚举
现在很多的主控上都带有USB的功能,但是对于初学者来说,这方面应用还是比较棘手,因为usb的不但固件程序需要编写,PC端的驱动也要编写,而且驱动写好了还要写个上位机才能看出效果。这样调试起来十分困难,建议从USB的键盘,鼠标开始做,了解清楚了,再做自己的协议就比较简单了。
USB的概念历史啥的这里就不说了。我们先不管具体的数据包格式,这一节先从整个包的层面上简单的说,过程是这样的,
---------------------------------------设备插入-------------------------------------------------------------
1)? USB端口,主机检测到D+与D-之间有电压差,就认为有新的设置接入。主机等待100ms后发出复位请求。设备接到复位请求后将产生一个外部中断信号。
---------------------------------------枚举过程------------------------------------------------------------
2)? 0,首先发送一个Get_deor(获取设备描述符)指令包,设备接到包后就开始解析包(其实就是你在固件程序里判断处理) ,然后按固定格式返回自己设备的设备描述符,这一步主要是主机知道你的USB设备的基础属性,比如支持的传输数据长度,电流负荷多少,支持那个USB版本,以及以后方便电脑找驱动的PID,VID。
3)?
4)? Get_configuration(要求固定返回9个设备配置字),你接到后就开始发送9字节的设备配置字,其中包括你的配置字的总长度,这样主机就知道你的配置到底有多长,然后再发一次设备配置请求,这时你就开始上传所有的配置字。这个时侯主机就已经很明白你的工作方式就各种特性,然后就可以正常工作了
5)?
6)?
---------------------------------------正常数据阶段------------------------------------------------------
7)?
?
以上是简单的描述,详细的后面章节再做介绍,学习一个东西关键是首先要知道这个东西是什么,简单的工作原理。对于USB的工作我这里做个比方,
???? 主机好比一个公司,你就是USB设备,要进入公司首先要面试(枚举),你到了面试现场(第一次插入设备),面试官首先了解到你的外表,性别已经你要应聘的岗位(设备描述符),然后给你一个号,以后就开始按号叫人,当你被叫到就开始问你的专业知识,性格等(配置描述符),如果你比较合适(通过了枚举)你就会录取了,并且注册一个你的信息到公司(驱动安装,并且写入注册表)。等你下次来公司,只要把工号(PID,VID)报上,就知道是你来了
初涉USB,初学者USB入门总结(2) 设备固件程序USB启动过程,我们可以用串口实时的跟踪各个USB中断。不过这里先不用串口进行测试,只是简单的用一组变量记录过程。测试程序如下(以下会有程序的说明):
?
?uchar test[100];//100长度的变量,记录过程
uchar conters=0;//记录计数值,
/*------------------------------------------------------------
?????? ?高校电子联盟--肖继达
???? QQ:258347765???
?-------------------------------------------------------------*/
?
void EXT_int(void)//USB中断响应函数
{
?? ?/*------------------------------------------------------------
?????? ?? Check interrupt status register to know interrupt
?????? source.
??? ------------------------------------------------------------*/
?
??? if (USB_BUSRESET_ASS_INT())
??? {?? /* USB bus reset */
??????? /*? for USB Rev.1.1
???????????????????? After USB bus reset released, 10msec recoverly time we have.
???????????????????? Follwing request m
您可能关注的文档
最近下载
- 人教新课标数学六年级下册《自行车里的数学》PPT课件.ppt
- 机电一体化毕业论文7000字.doc VIP
- 2023年4月河南省考公务员结构化面试真题试题试卷答案解析.doc VIP
- 《英语学术论文写作教程》教学课件 Unit 1 Writing Foundation.pptx VIP
- AI+智慧医疗整体解决方案 人工智能+智慧医疗整体解决方案.pdf VIP
- 中药制剂生产工艺流程.pptx VIP
- 口腔颌面部解剖(淋巴).ppt
- 9A文孟洪涛谈威科夫交易法.pdf
- GBZT201.2-2011 放射治疗机房的辐射屏蔽规范 第2部分:电子直线加速器放射治疗机房.pdf
- 详细解读2021年新修订《中华人民共和国科学技术进步法》PPT教学课件.pptx VIP
文档评论(0)