- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
机器人小组资料 AVR 软件USB使用方法简述 作者:haihuawu 略有 ...
AVR 软件USBAVRUSB技术探讨》作者:邵子扬、王育强、吕益光
《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》。#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_BIT USB数据线D-使用的引脚。 USB_CFG_DPLUS_BIT USB数据线D+使用的引脚。因为D+要求同时连接到INT0上,所以一般情况下需要使用3个IO口。如果D+使用的引脚就是INT0,那么可以少使用一个IO端口。 USB_CFG_VENDOR_ID 设备生产商的ID号 USB_CFG_DEVICE_ID 设备的产品ID号。这两个参数就是Windows识别USB设备的主要参数。需要注意的是,这两个参数都是低字节在前,高字节在后。 USB_CFG_DEVICE_VERSION 设备的版本号次版本号在前,主版本号在后。在Windows的设备管理中可以看到这个版本号 USB_CFG_VENDOR_NAME 设备生产商的名称,它在Windows的设备管理中可以看到。这里一般写入的是网址。 USB_CFG_VENDOR_NAME_LEN 设备生产商名称的长度。 USB_CFG_DEVICE_NAME 设备的名称,它在Windows的设备管理中可以看到。设备名称和生产商的名称都是以字符的方式定义的,它们目前不支持中文。 USB_CFG_DEVICE_NAME_LEN 设备名称的长度。 ? VID PID 控制类 0x16C0 0x05DC CDC类 0x16C0 0x05DF HID类 0x16C0 0x05E1 int main(void)
{
//这里可以初始化一些用户函数
usbInit(); //初始化USB函数
sei(); //允许中断
while(1)
{
usbPoll(); //这个必须在主循环内,而且被调用的时间间隔不能大于//50ms
//其它用户函数
}
}
usbMsgLen_t usbFunctionSetup(uchar data[8])
{
//这里处理USB请求
}
下面介绍一下另一个接口函数
usbMsgLen_t usbFunctionSetup(uchar data[8])的用法。
当单片机收到电脑发来的请求时,如果不是总线默认的请求类型,就会调用这个函数。单片机所收到的请求参数会放在一个8字节的数
您可能关注的文档
- 晶体的电畴结构和单畴化方法-无机材料学报.PDF
- 晶体管式封装功率无感电阻器TO-220(RMG35).PDF
- 晶体管多回路长时间继电器-电力系统保护与控制.PDF
- 晶体管的特征频率fT.PDF
- 智能型带式输送机保护装置-山西兰花科技创业股份有限公司.PDF
- 智能式数字视频监控系统的研究与实现.pdf (618.5Kb) - 厦门大学学术 ....PDF
- 智能分布式IO选型手册 - 四川零点自动化系统有限公司.PDF
- 智能材料与结构实验室设备清单使用单位号单位名称仪器编号仪器.doc
- 智能心音检测仪.doc - 上海交通大学仪器科学与工程系.DOC
- 智能温度传感器DS18B20的原理与应用.doc.doc
文档评论(0)