我整理的USB.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
我整理的USB

USB必须按照一定的关系把不同的包组织成事务才能传输。事务通常有两个或者三个包组成:令牌包、数据包、和握手包。令牌包用来启动一个事务,总是由主机发送。令牌包有4种分别为:OUT IN SETUP SOF同步域8位包标识PID7位地址4位端点号5位CRC5校验EOP同步域是一串0,位填充之后就成了电平翻转,当检测到一个位的数据未发生翻转后就认为标识符PID开始了。包标识符是用来标识一个包的类型:(圈圈教你玩USB P15 有详细的列表)包结束符EOP全速/低速设备的EOP是一个大约为2个数据为宽度的单端)(SE0)信号;SE0的意思是D+和D-同时为低电平。数据包传送数据,可以从主机到设备,也可以从设备到主机,方向由令牌包来指定。同步域8位包标识PID字节0~N16位CRC16校验EOP握手包的发送者通常为数据的接受者,当数据接收正确好发送握手包。同步域包标识PIDEOPUSB协议规定了四中传输类型:批量传输、等时传输、中断传输和控制传输。批量传输:同步域IN PID7位地址4位端点号5位CRC5校验EPO主机发送同步域8位包标识PID字节0~N16位CRC16校验EOP设备返回同步域ACK PIDEOP主机应答一次正确的批量输入事务同步域OUT PID7位地址4位端点号5位CRC5校验EPO主机发送同步域8位包标识PID字节0~N16位CRC16校验EOP主机发送同步域ACK PIDEOP设备应答一般的USB接口芯片会完成如CRC检验、位填充、PID识别、数据包切换、握手等协议,我们只要根据芯片提供的一些标志,准备要发送的数据到端点,或者从端点读取接受数据。我们所用到的芯片是PDIUSBD12;我们采用了数据手册中提供的典型连接电路。我们选用批量传输(传输数据多,对实时要求不是很高)。端点描述PDIUSBD12 的端点适用于不同类型的设备, 例如图像打印机海量存储器和通信设备端点可通过Set Mode 命令配置为4 种不同的模式分别为设置模式命令F3h 处理写2 字节设置模式命令后跟2 个写入的数据第一个字节包含配置字节信息第二个字节是时钟分频因素字节配置字节时序图解释:CS是信号(硬件连接为使能),A0为1表示操作的是命令,A0为0表示操作的是数据。WR是写信号,表示WR的上升沿将数据写入到芯片中。数据必须在上升沿的前后稳定的保持一段时间才能可靠。RD是读选通信号,再度数时应先将RD置低,等待tRLDD时间后,数据将出现在数据总线上,这时可以读取数据。读完之后将RD置高,数据中线上的数据将在tRHDZ时间后消失。写命令函数:Void D12WriteCommand(uint8 Command){ D12SetCommandAddr(); //A0=1,设置为命令地址 D12ClrWr(); //WR置低D12SetPortOut(); //将数据口设置为输出状态D12SetData(Command); //写命令 D12SetWr();D12SetPortIn(); //将数据口设为输入状态,以备后面输入使用 }只要将A0设置为0此函数就变成写数据函数。写数据函数Void D12WriteByte(uint8 Value){ D12SetCommandAddr(); //A0=1,设置为命令地址 D12ClrWr(); //WR置低D12SetPortOut(); //将数据口设置为输出状态(单片机连接数据总线的IO口为输入)D12SetData(Value); //写数据D12SetWr();D12SetPortIn(); //将数据口设为输入状态,以备后面输入使用(单片机IO口设置为输出) }要建立一个鼠标通信过程需要以下步骤(枚举过程)。插上usb线后,软件模拟断开连接,(实质上是通过设置模式命令来完成的)软件模拟连接。连接之后,主机对设备进行了几次复位,然后往端点0发送了数据。(究竟发送了什么数据)。读取端点0缓冲区,(根据USB标准请求判断为何种请求)主机发送了设备描述符请求)。设备描述符返回(了解设备描述符的组成,设备描述符如何返回给主机,何时返回)。读取端点0缓冲区,(根据USB标准请求判断为何种请求)主机发送了设置地址请求。设置地址(写端点0缓冲区)。读取端点0缓冲区,(根据USB标准请求判断为何种请求)主机发送了配置描述符请求。配置描述符集合返回。所谓配置描述符集合就是配置描述符,接口描述符,端点描述符HID描述符。(接口描述符,端点描述符不能单独返回必须附着在配置描述符后一并返回。鼠标是USB HID类,在配置符中还需要一个HID描述符。它应该跟在设备描述符后面)接着实现,字符串及语言

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档