利用USB控制器设计的Windows音量控制器
关键词 USB SPI HID Windows
USB技术在现代电子系统中应用得越来越广泛。很多计算机上甚至去掉了传统的串口,全部改用USB口的鼠标、键盘,甚至风扇。传统的USB控制器在使用时,需要大量的与主控机相连的接口连线,占用了大量的CPU I/O口资源。随着电子技术的高速发展,USB控制器向小体积、低功耗的方向发展。本文介绍如何使用MAX3420进行Windows系统HID设计的过程。
本设计的首要目的就是,寻找一种快捷的方法来调整音量或者暂停播放,而不需要移动鼠标来寻找Windows Media Player窗口。该系统插在USB端口上,只有一个旋钮起主要作用。旋转这个按钮可以调节音量。按一次旋钮暂停播放,再按一次开始播放。由于该旋钮掌控主要的Windows音量控制,因此,它可以调节任何当前播放声音的音量,例如,电子邮件提示音或者是游戏声音。该音量控制器即使在Windows播放器不是当前操作窗口的情况下也仍然对其有效。为了省去设计底层驱动程序的工作,把该器件设计成USB人机接口设备(HID)。把HID接入Windows系统,它就可以工作了。
1 低成本的USB系统
系统设计中最重要的一点是,选择一种低成本的微控制器和USB解决方案。ATtiny13型微控制器本身并不含有USB控制器,所以使用Maxim公司的 MAX3420E型USB控制器,而且仅需要一些用于普通的串行外围接口设备(SPI)的指令就可以与任何微处理器联合使用。与MAX3420E对话,会占用ATtiny13中5个I/O引脚中的4个。
这里简单介绍一下MAX3420。它是Maxim公司推出的一种全速USB(12 Mbps)外设控制器,支持USB2.0协议。MAX3420内建全速收发器,支持±15 kV的ESD保护,可以编程控制USB总线的连接和断开;内含的串行接口引擎可以控制底层的USB协议细节,如错误校验和总线重连接。MAX3420通过SPI接口操作其内部寄存器,工作频率为26 MHz,任何支持SPI主模式的CPU只使用3~4根线便可增加USB功能。
图1是本系统的电路原理。U1是USB控制器MAX3420E。U2是MAX6349TL,它可提供3.3 V、150 mA的输出,具有上电复位(POR)电路,可直接与MAX3420E的RES引脚连接。在USB外设这样的热插拔设计中,良好的外部POR电路非常重要。与USB连接头上的 VBUS5 V信号相连接,并且将其调整至MAX3420E和ATtiny13所需的3.3 V。旋转编码器和发光二极管与MAX3420E的通用I/O引脚相连接。连接器J2用于ATtiny的调试和编码输入。电阻R1将编程/输入复位同系统复位隔开。上拉电阻R2确保当编程器或ICE使用调试连接器J2时,MAX3420E的SPI端口不被选中。
ATtiny13在管理MAX3420E的SPI端口时采用半双工模式,只使用一个双向数据引脚。电阻R3可避免在使用这种方式读取MAX3420E寄存器数据时的争用问题。在第8个SCLK信号上升沿到来时,MAX3420E的SPI开始对命令字节的第8位进行采样,并在第1个数据位到来后立即驱动数据引脚。
2 对话式SPI[1]
ATtiny13并不包含有SPI硬件单元。MAX3420E的SPI比较简单,且可以任意速率运行,可以对ATtiny13的I/O引脚进行位响应。
MAX3420E在三线、四线或五线SPI情况下都可以工作。另外还有几个不可省去的信号:串行时钟信号(SCLK)、从器件选择(SS)以及双向数据引脚的主控制器输出从机输入/主控制器输入从机输出 (MOSI/MISO)信号。本设计中用一条4位的引线把ATtiny13的一个输入引脚同MAX3420E的INT引脚连接起来,以便节约码字空间并使得SPI总线通信量最小。
图1 音量控制器的电路原理图 3 HID基础 |
- USB设备的调试与测试技巧(11-11)
- USB系统结构与应用设计(01-18)
- 基于C8051F320 USB接口的数据采集存储电路(01-18)
- 基于USB的CAN总线适配器设计(01-21)
- 带USB接口的短信收发最小系统设计(01-23)
- 基于USB总线和Aduc831单片机的数据采集系统的设计(01-25)