AVR ATtiny V-USB 应用指南(第一部分)

来源:互联网 发布:js null.type 编辑:程序博客网 时间:2024/05/20 04:25

原文见:http://codeandlife.com/2012/01/22/avr-attiny-usb-tutorial-part-1/

若有不准确之处,请指证。

    自从知道AVR单片机构建USB装置是可行的,我一直想动手试一下,但无论是USBtiny还是V-USB,都缺乏入门指南,所以我决定自己写一个。

    指南的第1部分讲述如何搭建硬件平台,同时也作为作为第2部分的基础;第2部分介绍一个简单的例子,该例子将利用V-USB库和ATtiny2313实现USB通信。

    准备工作如下:

·        USB线缆和公头

·        面包板及跳线

·        LED和330欧电阻

·        低压差调整器,比如 LD1086V33或者 LE33CZ

数据线

    第一件要做的事是找根USB数据线并剪短,留下个电脑连接的那一截,并将4条线和排针焊接起来,方便插在面包板上,4根线的焊接顺序见下:

引脚------颜色--------功能

1----------------------Vcc

2----------------------D- (USB通信用)

3-----------绿-----------D+ (USB通信用)

4----------------------Gnd

注意:不是所有的线遵从下面的颜色规定,最好用万用表检查一下。

    下图是焊接好后的样子,当去除导线外皮时,小心不要损伤导线,并保证相互之间不能接触,防止短路电脑或HUB的端口。


    如果想多了解USB接口及电气特性方面的只是,推荐看下Beyond Logic 写的USBin a NutShell  或者USB 2.0协议规范,对这篇指南来说,知道USB能在5v电压下最大提供500ma电流就足够了。

用面包板简单测试

    现在验证一下制作的USB数据线是否成功,可以将数据线连接到HUB,并用万用表测试VCC(红色)和GND(黑色)之间的电压,我测量的结果是5.18V。接着就可以将排针插到面包板上,用跳线分别将VCC和GND接到面包板的电源列上,并将LED和电阻串联接到电路,看是否工作。

    恭喜!如果你想要的只是USB供电,现在你可以搭建任何5V电路了,但要保证所需电流不大。如果LED发光暗淡,检查下是否接错线,或者是否是焊接问题等等。

准备USB通信---获取3.3V电压

    虽然USB供电是5V,但D+和D-接口使用的却是3.3V电压。虽然部分电脑的D+和D-端口也能容忍5V电压,但并不是全部电脑都能接受5V电压。

    为了保证USB通信的可靠性,我们有3个方案可供选择:

1、 将USB的供电电压转换为3.3V

2、 采用外部3.3V供电

3、 用电阻、二极管或者稳压二极管将5V逻辑电压转换为3.3V

    在这里我选择第一种方案。

    第二种方案实现方法很多,比如用9V层叠电池加电压调整器;或者利用手机充电器,调整其输出电压;甚至3个AA电池加一个或2个二极管降压。

    第三种方案可以Google下” zener diode usb”,会发现很多文章(指南的第六部分会讲到这种方案,V-USB项目的wiki对此也有不错的介绍,详见http://vusb.wikidot.com/hardware)。

    在这个指南中,我使用LD1086V33作为低压调整器,查看datasheet可知:脚1接地,脚2输出,脚3输入,输出和输入分别用10uF电容接地,见下图:

    从下面的面包板电路可以看出连接方法,LD1086V33的输入和接地分别连接面包板的电源和地,输出端接LED及电阻,具体见下图:

    上面这个电路看起来也能工作,但任何小的电压脉冲都需要调整器去补偿,这可能导致持续的振荡。因此最好将2个10uF的电容加上去,5V和地之间以及3.3V和地之间。

确保电容的极性连接正确。最终效果见下图:

 

    现在准备用3.3V电压来驱动AVR芯片,用万用表再次检查,确保调整器的输入端对地电压是5V,输出端对地电压3.3V。

 


原创粉丝点击