MP3解码器一旦开始工作,就会一直向 CPU请求数据,直至歌曲结束。只有用键盘操作才能中断CPU。键盘操作总共4个按键(Menu/Previous/Next/Play)。Menu负责功能切换,共有5项功能:歌曲音量控制、高音调节、低音调节、麦克风音量控制和歌曲选择。在不同功能下Previous和Next分别代表不同的含义。在音量控制上为加/减音量,在歌曲选择上为上一首/下一首歌曲。LCD在显示歌词的同时实时显示键盘操作状态,以便用户操作。
USB海量存储设计
主处理器让USB海量存储设备在批量传输方式下工作,这样共需要3个端点。
0端点:控制端点。用于控制传输,PC机通过与端点0相对应的管道来读取设备描述符,完成对设备地址的设置,并完成配置。此端点为双向数据传输端点。
两个非0端点:批量传输端点。这种端点为单向数据传输端点,分别为批量输入端点和批量输出端点。
主处理器通过一个端点中断寄存器(UEPINT)和PC机通信。如果某个端点完成了相应的操作,就会引发中断。U盘主程序流程图如图4所示。
当USB设备插入到PC机时,PC机一旦检测到设备后,就会通过控制管道向默认地址发送USB标准请求,进入设备配置阶段,即PC机向设备索取各种描述符的过程,如Get Descriptor、Set Address、Set Configuration等。每当设备收到主机发送的数据后,便会触发端点中断寄存器中端点0所代表的位。此时,应读取端点0的数据缓冲区,对照USB标准设备请求的数据格式,对请求类型进行识别,然后转向相应的标准请求处理函数。配置完成后,主机便使用在描述符中所选定的命令块向批量传输端点发送控制消息和数据。
在批量传输方式下,有3种类型的数据在USB和设备之间传送:CBW、CSW和普通数据。因此,批量传输阶段程序设计的任务就是要识别来自批量输出端点的CBW与数据,进行相应的处理,然后通过批量输入端点向主机回传相应的CSW或数据。PC机依次向设备发出Inquiry、Read Capacity、UFI Mode Sense、Read Format Capacity等请求,这几个命令用于告知PC这个设备的存储器情况,PC基于此创建一个存储器设备,即在浏览器中生成一个移动盘符,并可以复制、删除或创建文件等。系统自动将这些命令都转换成Read或Write两种命令,通过USB的READ或WRITE命令块描述符从Flash中相应扇区读取数据,或是将特定长度的数据写入Flash相应簇中。文件在U盘中按Fat16协议存储。由于PC对存储器的读写是按扇区(512字节/扇区)为最小单位进行的,但Bulk端点的最大传输能力为64字节。因此,主机读写操作的数据传输过程要分多次才能完成。而写操作比读操作更加繁琐一些,这是因为Flash在对某扇区进行写之前,必须要将其擦除,而擦之前存在已有数据的保存问题。为了加快主机与U盘之间数据传输率,读写操作的代码改用汇编来编写。测试表明,U盘的读写速度可达到450Kbps。
结束语
本系统采用LM4832、LMV722和LM4838的巧妙结合作为立体声音频功率放大器,并利用U盘存储技术来存储歌曲,使得整个系统不仅拥有优质的视听效果,而且体积仅有180mm 70mm 100mm这么大。实验表明,本移动卡拉OK系统不仅具有数控音质音量、立体声音频功率放大和超强3D音响效果的特点,而且功耗低、用户界面友好、便于携带。同时它也可作为MP3播放器或U盘使用,功能齐全。