基于单片机的USB接口的设计.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机原理及系统课程设计报告 PAGE 5 - 单片机原理及系统课程设计 1 引言 本课程设计是在学习必修课《单片机原理与系统设计》之后,为加强对系统设计和应用能力的培养而开设的综合设计。本课程设计的题目为基于单片机的USB接口的设计。 2 设计方案 USB是近年来发展起来的一种快速、灵活的总线接口。它最大的特点是易于使用,可热插拔,接口连接灵活,并且能够提供外设电源[4],在嵌入式系统及智能仪表中获得广泛的应用。因此用51系列单片机实现USB主机接口,进而实现对USB外设的控制,对提高整个系统的数据存储、数据传输、设备控制等性能都有很大的作用。本文论述的方案基于压强测试仪的应用环境,在开发压强测试仪的过程中根据实际的需求,要求能够存储大量数据,以往的解决方案是RS232C接口,但由于传输速度慢,在高速采样系统容易导致数据丢失,而且必须有上位机的参与,这对于室外作业很不方便。测试仪器可以把采集到的数据保存到U盘,工作人员可以随时取下U盘,将数据拿到异地进行分析,另外笔者还开发了读写U盘的文件系统,存储的数据可以直接在PC机上打开,不需要编写其它的分析软件。 3 硬件设计 3.1 SL811HS概述 SL811HS是具有主/从两种工作模式的USB控制器[4],遵循USB1.1规范;可自动检测总线速率,支持全速12Mbps和低速1.5Mbps设备;具有8位双向的数据总线,易与单片机连接;片内256字节的SRAM(其中16字节为工作寄存器),用于数据传输;可自动产生SOF和CRC5/16,简化软件工作量;片内有根Hub;支持挂起/唤醒工作模式,减少功耗;支持地址自动加1功能,在连续读写过程中,只设置一次地址,其内部寄存器地址自动增加,在大容量数据通讯中非常必要的。 3.2 单片机与SL811HS接口设计 图3.1所示是AT89C51与SL811HS的硬件连接电路。在本设计中,由于所选用的单片机AT89C51及其外围元件的工作电压为5V,而SL811HS的工作电压为3.3V,所以系统应提供5V电压同时要进行电压转换。虽然SL811HS可以使用12MHZ晶振,但在实际使用过程中,如果晶振质量不太好,电路稳定性就会比较差,因此,设计时推荐使用48MHZ有源晶振。SL811HS的中断请求输出的是高电平,因此需要用反向器把它变换成低电平以满足AT89C51中断输入要求。此外,应注意SL811HS是低电平复位。为了便于调试,系统扩展了液晶显示器。硬件完成后要进行测试,先向SL811HS寄存器中写入数据,之后读出数据并在液晶显示器上显示,如果和写入的数据相同,说明SL811HS与单片机连接正确。再用示波器观察有源晶振是否起振,一切正常后便进入软件调试。 D0 D0—D7 AT89C51 A0 RST D0—D7 SL811H A0 图3.1 SL811HS与单片机的硬件连接图 4 软件设计 4.1. USB枚举过程: USB总线一般包含四种基本数据传输类型:控制传输、中断传输、批传输以及同步传输,本系统使用的是控制传输和批量传输[3]。最基本的函数就是对SL811HS寄存器的读写,代码可参照参考文献[5]。 读单个寄存器: BYTE SL811Read(BYTE a) { SL811H_ADDR=a; return (SL811H_DATA); } 写单个寄存器: void SL811Write(BYTE a,BYTE d) { SL811H_ADDR=a; SL811H_DATA= d; } 连续读SL811HS寄存器: void SL811BufRead(BYTE addr,BYTE *s,BYTE c) { BYTE c; SL811H_ADDR = addr; while (c--) *s++ =SL811H_DATA; } 连续写SL811HS寄存器: void SL811BufWrite(BYTE addr,BYTE *s,BYTE c) { BYTE c; SL811H_ADDR=addr; while (c--) SL811H_DATA =*s++; } 读写寄存器正常以后,便进入SL811HS底层函数的编写,具体的函数可参照CYPRESS公司提供的代码修改。在对U盘读写之前需正确配置SL811HS芯片,这部分工作通过枚举[3]来完成。枚举是对USB接口正确配置的过程,包括获取设备描述符、配置描述符、接口描述符、端点描述符,以及对接口、端点正确配置。 请求设备描述符的setup数据包[5]为 80h 06 00 01 00 00 12 00,通过读取设备描述符,可获得设备的子类。请求配置描述符的setup数据包为 80h 0

文档评论(0)

如果.可以. + 关注
官方认证
文档贡献者

坚持分享有价值的资源!

认证主体汉中恒朱网络技术有限公司
IP属地陕西
统一社会信用代码/组织机构代码
91610726MA6YWAFG7U

1亿VIP精品文档

相关文档