微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 利用USB控制器设计的Windows音量控制器

利用USB控制器设计的Windows音量控制器

时间:11-20 来源:作者: 哈尔滨工程大学 于蕾 杨莘元 点击:
摘要 介绍一种使用MAX3420作为USB控制器、ATtiny 13作为微处理器设计的Windows音量控制器。该音量控制器利用硬件SPI接口,对Windows系统的音量进行控制。详细介绍设计系统过程中,选择设计方案,完善程序代码,最终实现USB接口控制的详细过程。

关键词 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 HID规范的主要思想是要定义一个可以和应用程序联合应用的传感器、按钮和LED的广泛的类型范围。"USB器件使用者论坛"的"通用串行总线HID用法表"中详述了数百种用法。HID协议是双方面的协议,HID器件和Windows应用都必须同意使用HID规范中的特定码符。HID文件是概念性的但却有相当复杂的说明。

  HID外部设备通过发送报告与Windows进行通信。HID设计的主要任务是要创造出一种可以传达对操作系统控制意图的报告格式。对于此项设计,需要对以下几项进行控制:音量加、音量减、暂停、播放、下一曲目和上一曲目。这几项中的每一项在HID用法表中都有一个描述项。

  下面的程序是HID报告描述符。它是用从网站www.usb.org.上得到的HID工具程序构建的。

  .DB 0x05,0x0C
  ;使用页面(用户).DB 0x09,0x01
  ;远程控制.DB 0xA1,0x01.DB 0x15,0x00
  ;Logical Minimum = 0.DB 0x25,0x01
  ;Logical Maximum = 1.DB 0x09,0xE9
  ;VOL+.DB 0x09,0xEA
  ;VOL-.DB 0x09,0xB1
  ;Pause.DB 0x09,0xB0
  ;Play.DB 0x09,0xB5;检测下一次
  .DB 0x09,0xB6;检测前一次
  .DB 0x75,0x01;描述符报告大小
  .DB 0x95,0x06;描述符报告数量
  .DB 0x81,0x02;输入描述符报告
  .DB 0x75,0x01;描述符报告大小
  .DB 0x95,0x02;描述符报告数量
  .DB 0x81,0x01.DB 0xC0

  当主机发出"获取描述符报告"要求时,ATtiny13将该表返回给主机。报告描述符的格式是单字节报告,以使用(VOL+)行开头的描述符将二进制数据集合到一个以LSB开头的字节内。控制项只需要6位,所以该字节内的最后两位被赋予0值。描述符报告格式如下:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top