- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机器人小组资料
作者:haihuawu
AVR 软件USB使用方法简述
作者:haihuawu
略有抄袭之处,请见谅,抄袭来源如下:
《AVRUSB技术探讨》作者:邵子扬、王育强、吕益光
《AVR309: Software Universal Serial Bus (USB)》作者:ATMEL
本文所述并不完整,仅入门用AVR单片机可以直接以IO口模拟USB端口,与电脑通讯。构成一个低成本的USB设备,不过有如下局限性:
1.只能模拟低速设备,带宽为1.5Mb/S。事实上通讯速度只有大概20KB/s。
2.USB通讯部分占用了单片机约90%的CPU资源。
虽然如此,但对一些小设备来说,用AVR单片机来实现USB通讯还是很有吸引力的,下面简单说一下使用方法。
首先说一下本文所使用的软件和编译环境。
计算机方面所用的是VC++ 6.0,单片机所使用的是GCC。考虑到大家所用的编译环境可能不同,本文所用的代码全部符合ANSI C标准。
AVR单片机与电脑之间主要采用控制传输通讯,有关控制传输的具体内容请参看《usb-in-a-nutshell》。
一:硬件电路
现在来看一下avr单片机作usb设备的硬件电路。USB共有四根线,两根5v电源,两根差分信号线D+、D-。由于是低速设备,D-必须要有1.5K的上拉电阻。对于3.3v供电的单片机,只要把D+和D-之间连在单片机的同一组IO上就可以了,同时还要把D-连在外中断INT0上。
对于5V供电的单片机,则需要有电平转化,最简单有效的是用3.6V稳压管。有关USB电压的具体内容,可以查看参考资料中的《usb-in-a-nutshell》。
仅从硬件电路来看,使用USB与电脑通讯比串口更简单。
二:单片机软件设计。
单片机方面的USB底层函数有两种,一种是ATMEL公司的“avr309”项目中的汇编函数。还有一种是名为V-USB的C语言函数。汇编函数比较难以看懂和使用,所以这里只介绍V-USB的是用方法。
V-USB可使用AVR GCC编译器或IAR C编译器。但是我用的是GCC,对IAR C不甚熟悉,所以这里使用的编译器是AVR GCC。
1.V-USB的用法
我们可以从网上下到V-USB。这是一个压缩包,在压缩包中有一个“usbdrv”文件夹,这个文件夹内就是单片机在USB通讯时所需要的底层函数。对于GCC编译器的使用者来说,要把这个文件夹复制到你编写的主函数同一文件夹内,然后添加如下文件到你的函数里。
#includeavr\interrupt.h //要使用中断,这个文件当然是必须的
#include usbdrv\usbdrv.h // usb驱动接口文件的头文件
#include usbdrv\usbdrv.c // usb驱动接口文件
然后是把“usbdrvasm.S”这个文件添加到你的工程里。这是一个用汇编编写的函数文件,添加起来比较困难,我是在makefile文件中加了:ASRC =usbdrv/usbdrvasm.S这样一句来实现的。
最后一步是修改配置文件,在USBDRV文件夹中一般都有一个usbconfig-prototype.h文件,这个文件是用户配置文件usbconfig.h的原始模板,我们需要将这个文件改名为usbconfig.h。
usbconfig.h中的主要参数
USB_CFG_IOPORTNAME定义USB数据线使用的端口。只要是通用的IO都可以,没有特殊的要求。USB_CFG_DMINUS_BITUSB数据线D-使用的引脚。USB_CFG_DPLUS_BITUSB数据线D+使用的引脚。因为D+要求同时连接到INT0上,所以一般情况下需要使用3个IO口。如果D+使用的引脚就是INT0,那么可以少使用一个IO端口。USB_CFG_VENDOR_ID设备生产商的ID号,VIDUSB_CFG_DEVICE_ID设备的产品ID号。这两个参数就是Windows识别USB设备的主要参数。需要注意的是,这两个参数都是低字节在前,高字节在后。PIDUSB_CFG_DEVICE_VERSION设备的版本号次版本号在前,主版本号在后。在Windows的设备管理中可以看到这个版本号USB_CFG_VENDOR_NAME设备生产商的名称,它在Windows的设备管理中可以看到。这里一般写入的是网址。USB_CFG_VENDOR_NAME_LEN设备生产商名称的长度。USB_CFG_DEVICE_NAME设备的名称,它在Windows的设备管理中可以看到。设备名称和生产商的名称都是以字符的方式定义的,它们目前不支持中文。USB_CFG_DEVICE_NAME_LEN设备名称的长度。每种USB
您可能关注的文档
最近下载
- [运维相]-IT运维服务.docx VIP
- 承历史之痛,立青春之志——以电影《南京照相馆》开启高中第一课-2025-2026学年高中主题班会优质课件.pptx VIP
- chap3 IS-LM模型习题.doc VIP
- 人教版初中英语八年级上册-Unit-6-大单元作业设计案例-.docx VIP
- 2025年中国急性肠系膜上动脉栓塞诊疗共识解读及实施策略PPT课件.pptx VIP
- 课件:产后大出血的护理.ppt VIP
- 古代汉语课件报任少卿书.pptx VIP
- 2025年江苏省职业院校技能大赛中职组(婴幼儿保育)参考试题(附答案) .pdf VIP
- 海洋环境工程技术导则公开课20220511.pdf VIP
- 年产1500吨果胶(第一条生产线)项目环境影响评价报告公示.doc
文档评论(0)