论文部分内容阅读
自1906年美籍加拿大人R.A.Fessenden发明无线电广播至今,无线电广播已经有100多年的历史,而伴随无线电广播一起出现的收音机也得到了广泛的发展。随着科技的进步,数字化的浪潮已经席卷了全球,嵌入式产品已经占据了人们生活的方方面面,传统的模拟FM收音机逐渐向数字化的FM收音机靠拢。目前,市面上出现的数字USB FM收音机大多是Windows系统下的产品,随着Linux的日益普及,用户群的增加,研究USB FM在Linux的实现具有一定的实用价值。
本文首先介绍了USB FM设备端的硬件构成,包括微处理器、USB控制器、TEA5767收音模块及滤波电路,FM音频信号经过滤波电路滤除高频成分,然后被送到微处理器的AD中进行采样,采样生成的PCM音频数据被USB控制器以数据包的形式,通过USB总线送至主机端供播放使用。滤波电路的设计主要是为了弥补微处理器在采样速度方面的不足。
驱动程序是连接应用软件和底层硬件的桥梁。第三章详细讲述了Linux系统下USB设备驱动的结构、作用和USB驱动实现的细节,在介绍USB驱动程序实现I/O读写操作的时候,针对USB FM的特点,在从USB FM读取音频数据的时候运用带urb的传输,而在向USB FM设置频率的时候,则采用了适用于简单数据传输的消息传送机制。
在主机端播放软件设计上,采用Linux系统下的音频接口驱动ALSA,通过对声卡的配置编程,将从USB驱动程序读取采样后的PCM音频信号送入声卡,实现了对USB FM的实时播放。本系统同时具备录音功能,支持WAVE文件和MP3文件格式,其中的MP3文件格式采用当今被广泛使用的LAME进行压缩编码,能够取得很好的音质。局域网播放功能是本系统的另一大特色,同一个局域网内的主机能够共享一个USB FM设备,同时收听FM广播。