by Guido Socher (homepage)
关于作者:
Guido likes Linux because it is a paradise for people who
want to develop their own software and hardware.
目录:
|
Linux环境下使用USB的LCD(带监视狗与按钮)
摘要:
本文是就以前我写过的一篇硬件文章的强烈反馈而作的.LinuxFocus
的读者真的很厉害!一些人想要知道如何连接USB总线.这里有一份很
好的解决方案 .我们使用2002
年5月的文章中提到的LCD显示器并让USB使之工作.全部设备
都可以由USB总线来供电.所以你不需要任何的外接电源.
使用本文中的实例,你需要至少安装部分的Linux AVR开发环境.具体
的设置详见: Programming
the AVR Microcontroller with GCC.
.
_________________ _________________ _________________
|
简介
USB的神奇在于它是现代化的接口并通过USB总线直接给设备供
电.它的接口轻巧并能使大量数据在其中传输.这些都是它的优点.
缺点是硬件的设计因为高频率和复杂的协议而变得困难.
先看看这些说明(
http://www.usb.org/developers/, 你需要的是1.1的版本的说明)
你会对于它327页的篇幅和内容的晦涩难懂而大吃一惊。不要对U
SB设备有如此多的执行问题而奇怪. 一个更易懂得说明在
http://www.beyondlogic.org/
但是还是复杂.
该如何是好?我们如何把我们的微控制器(Microcontroller)与USB总
线连上?FTDI,一个苏格兰的公司,有了解决的办法(
http://www.ftdichip.com).
他们提供了一种实现USB串连的芯片.FT232BM芯片一边是RS232,
另一边是USB.换一句话说,你只是将原来需要外加电源的MA
X232转化成了带RS232转换线的FT232BM芯片.
驱动程序
FT232BM是真正的跨平台的解决方案.有适合各种操作系统的版本,
为Linux内核准备的是ftdi_sio并且源代码开放.它是Linux内核的一部
分.FT232BM不仅提供了USB到RS232的连接.它的Linux下的内核模
块仍在继续开发之中以扩充所有的函数功能.USB到RS232的部分已
经做好了,而且我用的是标准的Red Hat 7.3版的内核(2.4.18),
没有经过任何重新编译或修改.只是简单地把它加了进去...
ftdi_sio 在http://ftdi-usb-sio.sourceforge.net/开发.
我的Red Hat 7.3会在我插上USB设备的时候自动的加载所有的
内核模块.如果在你使用的发行版上无法工作,就请检查一下这些
模块:(针对USB-UHCI)
/sbin/lsmod usb-uhci
/sbin/lsmod usbcore
/sbin/lsmod usbserial
/sbin/lsmod ftdi_sio
The device file to communicate with the hardware is
/dev/ttyUSB0
ftdio_sio的开发者建议至少使用2.4.20版的内核,但你
可以看到在2.4.18也可以工作(至少我们这里需要的那
些函数可以的)
电路图
正前方的是电路.你只是将FT232BM插入到微控制器(Microcontroller)
与USB 连接器中间的Rx/Tx线之间.还需要一个6MHz的晶体检波器
还有其他一些在设计书中描述到的部件.磁性微粒状的(ferrite bead)
(在电路图的右侧)是一个小小的能滤去高频信号的线圈(USB总线要
在48MHz下运行),你还可以把一个1k的电阻缠上10圈的的细电线,将
它作为一个同样的线圈来使用.
一个需要注意的问题是电力的消耗,如果你设计了一个总线供电的设
备,必须让它小于100mA.你的设备还必须支持USB挂起模式(Suspend).
当一个"sleep"引脚位于低电位时,设备的耗电量必须小于0.5mA.后一
个要求使设计变得更加的困难.AVR支持一种"Idle"模式的(耗电少于
2mA)和"Power down"模式(耗电少于20uA).看起来把微控制器从idle
模式唤醒还是很容易的.虽然这会违反一点USB的标准,我还是决定
使用idle模式.显示器上的背景灯此时会关闭,整个电路的耗电量就
为3mA.这比0.5mA要大。但USB主控制器不会灵敏到能检测出来。
它应该会继续工作。
说了这么多,我必须承认我没有支持挂起的电脑,所以我不能测
试这个部分。如果你有电脑,最好是现代化的膝上式电脑,就请
测试一下,并把结果告诉我。
电路的其它部分在2002年的
5月的一篇文章里提到过了. 。所以对此我就不多做解释了
通过点击图例,可以看到放大了的图,所有的文件都已打包,可在文章的末尾下载。
板是单面的,蓝面的蚀刻层,红色的就是电线。
你需要的USB B型连接器的引脚如下图所示。
用SMD芯片工作
SMD芯片有很好的机械与电气性能,但对电子爱好者来说
却是一种噩梦。你需要很高的焊接技巧,至少板上的SMD
芯片必须做到不仅高质量而且干净。这是初学者所不具备
的。如果你没有把握来蚀刻电路板,焊接芯片,看看“可
供选择的其他方案”部分。
在你增加其它部分之前,把SMD芯片焊接到电路板上.
先弄一点焊锡在垫子上,然后在SMD芯片焊锡面上粘上一层
焊锡膏(一些人因为这很像蜂蜜而称它为焊锡蜜)。一家叫
做"Kontakt化学"的德国公司制造的一种似清漆状的"Lötlack" 喷雾
你可以使用它去代替焊锡蜜。
清洁一下你的烙铁,上面不因该有任何的焊锡留下,然后准
确的放置FT232BM。用烙铁尖轻轻的压一下每个针脚。不要
再增加焊锡了。
这样一来的话这个方案就很好了。你如果有一个小号的烙铁也没
有多大的关系。只要用一个适合的且确保在接触引脚前是干净的。
我不建议使用厨房烘烤机或其他野蛮的方法。用其它的方法很可
能会损坏芯片的。
测试
我建议分两步测试此电路。第一步不将其连接到AVR微控制器的插座上。
linux会认出FTDI芯片,你应该可以在/proc/bus/usb/device中看到如下内容:
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2
Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=
1
P: Vendor=0403 ProdID=6001 Rev= 2.00
S: Manufacturer=FTDI
S: Product=USB <-> Serial
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 90mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff
Driver=serial
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
之后加入AVR微控制器并且装载一个能使LED灯闪烁的程序,
解开linuxusblcd软件包(在文章的末尾有下载),键入:
make testload0
编程下载线与USB转接器都应该插上。
如果测试成功那么你可以肯定微控制器就可以工作了。
之后你就可以把所有软件下载到微控制器中:
make load
现在你就可以使用"ttydevinit /dev/ttyUSB0" 来初始化USB串行连接,
并且用"cat>/dev/ttyUSB0"来与设备对话。
ttydevinit /dev/ttyUSB0
cat > /dev/ttyUSB0
D=hello world
这将显示"Hello world"于显示屏上。详细的内容见2002年5月
号的文章。那篇文章里提到一个叫llp.pl的程序,具有通过LC
D显示器上的两个按钮以交互式的方式与计算机对话的功能。
这里你也可使用它们。
这是一幅工作的图(当拍此照时,按钮并没有连上去,FT232BM在板的下面):
可供选择的其他方案
虽然这里的电路很简单,但对初学者来说,由于必须具备焊
SMD芯片的技术而难以实现。如果你没有把握,考虑一下商
业化的成品。缺点是你通常不会得到像监视狗,LED和按钮等
额外的设备。你只得到LCD显示器。这些的价格也很合理。
带LCD的设备只需30欧元。
不幸的是,大部分的商业产品都有制造商的序列号,就算是基于ftdi芯片的产品。
这样的话内核不会识别它们,因为USB驱动程序依赖于这些数字.你需要修改内核,
重新编译。如果其他人已经更新了这些代码,也许后续的版本就支持新的芯片了。
- http://www.matrixorbital.com/ 他们使用ftdi 232BM,但有自己的产品
ID号。这个显示器叫做LK202-24-USB.
- http://www.usblcd.de/ 这个方案有他自己的内核驱动。
他是标准Linux内核的一部分,在任何的2.4.x版的内核下都
能正常运行,这可是一个好方案
- http://crystalfontz.com/ 他们的USB显示屏(632 和634)
用有自己的产品ID的FT232AM.
- http://www.cwlinux.com/eng/products/products_lcd.php
我也刚发现这个站点不久,他们有自己的
带键盘的LCD出售。不过这比本文的解决方案要贵两倍。
参考文献:
对这篇文章发表评论
每篇文章都有各自的反馈页面。在这个页面里,您可以提交评论,也可以查看其他读者的评论:
2005-01-12, generated by lfparser version 2.51