摘要:为了在电子产品中嵌入立体声FM数字收音机功能。采用单片机AT89S52和TEA5767HN为硬件核心,运用I2C总线通信方式进行软件设计,给出了实现手动搜台、自动搜台等功能的FM数字调频收音机的设计方法。该方法采用PT2257对音频进行处理,以实现立体声输出,因而具有轻巧、方便、频带范围宽、低功耗、高灵敏度等特点,并可以嵌入MP3、手机、便携式播放器等小型电子产品中。
关键词:单片机;AT89S52;TEA5767HN;PT2257
0 引言
在当前数字信息技术和网络技术高速发展的PC时代。嵌入式技术越来越同人们的生活紧密相关。其中掌上嵌入式电子产品更是给人们的生活带来了很大方便和很多快乐。尽管生活方式不断发生变化,但无线电仍然很流行。因此,本文针对TEA5767HN数字收音机芯片的控制机理,阐述了通过该芯片和C51单片机来将FM数字收音机嵌入智能电子产品的设计方法。
1 系统整体设计思路
本立体声FM数字收音机的设计目标是通过单片机AT89S52来控制FM接收芯片TEA5767HN,从而实现可自动搜索并存储10多个电台节目(也可手动搜索并存储电台节目)。所收听电台的频率和台号及时钟可在显示模块中的LCD上显示,音量则可通过音量加、减按键自主控制,并能存储关机时设定的数据以及闹钟功能。具体系统设计框图如图1所示。
本系统主要由单片机AT89S52控制模块、TEA5767HN收音模块、音量控制模块、ROM存储模块、显示模块、按键模块和电源模块七部分组成。本系统硬件设计的关键则在于FM接收、音频处理等模拟部分;软件设计的关键在于控制模块与收音模块之间的通信。
从图1中可以看出,控制模块仅仅通过I2C总线与收音模块连接并控制收音机工作。本设计使用单片机P3口的两个I/O脚来模拟I2C总线的SDA和SCL时序并与TEA5767HN通信;TEA5767HN输出的左右声道音频信号可通过音量控制模块进行前级放大及音量控制,然后输入到TDA7057进行后级功率放大,最后输出到扬声器。单片机可通过I2C总线进行音量调节;ROM存储模块主要用于存储电台数据、音量数据和时钟数据,为存储和读取数据带来方便。系统可通过按键进行操作,通过MCU检测按键信号并经单片机实现手动搜台、自动搜台、音量控制、时钟调整等功能,各项操作提示和操作结果均可通过LCD显示出来。稳压电源模块产生的5 V和3.3 V电压可分别为各个模块器件供电。
2 硬件系统电路设计
由于本系统硬件设计的关键在于FM接收、音频处理等模拟电路部分,其余电路均为常规电路,因而其硬件系统的设计着重分析收音模块、音量控制模块这两部分电路。
2.1 收音模块电路分析
FM接收电路是系统硬件电路中的核心部分之一,本硬件系统采用单芯片TEA5767HN作为FM接收电路的核心元器件。Philips公司提供的TE-A5767HN芯片为低电压、低功耗和低价位的全集成单芯片立体声无线电产品,它只需要极少的外围元件,并且基本上不需要外部对高频信号的手动调准。另外,其频带范围较宽,可以完全免费调到欧洲、美国和日本的调频波段。
图2所示为TEA5767HN的FM应用电路连接图。图中,VCC接稳压电源模块中的3.3 V电源,并通过磁珠FB及电容器进行干扰抑制。22μF的电容选用钽电容,两个0.1μF的电容可以选用介电常数高、高频性能好的陶瓷电容,以保证整个收音模块的电源系统更加稳定。R_OUT、L_OUT为FM的音频信号输出。DATA和CLK为I2C通信的数据线和时钟线,系统的MCU通过I2C接口来对FM Module进行控制。芯片上的W/READ引脚在本系统中没有使用,故空接。CLK、DATA用于与系统的MCU实现串行通信。BUS-ENABLE为总线使能信号,当BUS-ENABLE为低时,芯片上的FM-Mod-ule引脚进入省电模式,所以采取空接方式。RF为FM收音模块的天线接口,即射频信号输入脚。
2.2 音量控制模块
音量控制电路使用的单芯片PT2257是由CMOS技术制造而成的2声道音量控制IC,可采用I2C控制,具有0~79 dB的衰减范围,而且噪音低、立体声分离度高、使用外围元件少,是较为流行的AV视频产品音量控制元件。
音量控制电路采用I2C控制方式,其音量大小由MCU控制,因而省去了电位器,避免了电位器产生的杂音干扰音频信号。但其不足之处是该IC过载能力较差,不能带动功率稍大的喇叭,所以,本设计把音量控制电路放置在前置信号输入端,然后再接入TDA7057进行后级放大。
3 系统软件设计
基于AT89S52单片机控制平台的TEA5767HN数字收音机的软件设计主要包括六个部分:I2C总线通信协议、TEA5767HN收音模块控制、PT22 57音量控制、时钟闹钟模块的中断服务、AT24C02存储模块控制、键盘扫描及状态显示。本文的软件系统设计应当着重分析TEA5767HN收音模块控制、PT2257音量模块这两部分的工作原理以及编程思路。
本系统程序使用C语言编写,主程序由启动、初始化、键盘扫描、按键处理、液晶显示等5大模块组成。其中系统初始化包括AT89S52的初始化、TEA5767HN的初始化和LCD的初始化;按键处理通过调用函数的方法实现按键复用功能,可实现手动搜台、自动搜台、音量控制、时间调整、闹钟调整等操作;显示模块可显示系统的各个工作状态。
3.1 TEA5767HN模块的软件设计
3.1.1 TEA5767HN读写寄存器
TEA5767HN有5个写寄存器和5个读寄存器,每个寄存器可存储8位数据。
写寄存器可以存储控制信息,包括软件静音、模式选择、PLL可编程计数器的设置、向上向下搜索模式选择、静左/右音频、可编程端口的设置、待机节能模式、欧洲/日本频段选择、晶振频率选择、ADC门限设置、去加重设置等。
读寄存器可检测接收电路状态,反馈控制信息,包括搜索到有效电台标志位、搜索到有效电台后PLL可编程计数器的状态、4 b ADC的输出、以及7 b IF中频输出等。
3.1.2 TEA5767HN的数据传输
TEA5767HN的数据顺序是:地址、字节1、字节2、字节3、字节4、字节5,数据传送必须按照这个顺序。每个字节将控制不同的功能。
每个字节的第七位为最高位,并作为字节的第一位传送。在时钟的下降沿,数据变为有效信号。在每一字节后面加停止信号可以缩短传送时间。在整个传输完成之前,发送一个停止条件,其保留的字节将包含以前的信息。如果一个字节没有传送完,新的字节将被使用,但新的调谐周期不会开始。
3.1.3 TEA5767HN的读写流程
根据TEA5767HN的读写协议,调用公用I2C驱动即可编写出TEA5767HN的读写函数:radio_write(),radio_read()。它们可为手动搜台、自动搜台等FM功能调用,以实现程序的模块化,优化程序结构。TEA5767HN的读写流程如图3所示。其中I2C_Start(FM)和I2C_Stop(FM)分别表示启动和停止I2C总线,Check_(FM)为应答信号。
3.1.4 收音模块的初始化
TEA5767HN在上电复位时,静音位设置为“1”,其他所有位设置为“0”。为了初始化集成块,所有位都必须重新设定。所以,上电后必须重新给TEA5767HN写入数据,以初始化收音模块。
TEA5767HN的初始化流程图如图4所示。图中的radio_write_data[]分别为要写入TEA5767HN的5个字节数据。本系统写入数据让TEA5767HN接收的频率为88100 kHz,选择欧洲制式和32.768 MHz晶振,同时采用立体声输出。函数get_pll()是根据当前频率计算出PLL值的函数。调用get_pll()函数计算出PLL值后,应再把PLL高6位送给字节1的低6位,接着把PLL的低8位送给字节2。频率显示则可直接调用fm_disp()函数来完成。
3.1.5 手动搜台
手动搜台主要由按键扫描和调用radio_write()等函数来完成。操作两个按键(down,up)可完成向下向上调台。当按下up键时,当前的频率将增加100 kHz,然后调用函数get_pll()将十进制的频率值转化为14位的PLL值,然后再将PLL值进一步转化为两个二进制分别写入TEA57 67HN的写寄存器的第一和第二个字节。频率显示可直接调用fm_disp()函数来完成。
3.1.6 自动搜台与读台
自动搜台主要使系统从最低频率87.5 MHz开始全频率搜索,每次步进100 kHz,如此不断地写入和读出,同时调用频率显示函数不断地刷新频率。当搜索到最高频率108MHz时,自动退出搜台模式。在自动搜台过程中,可通过读寄存器中的ADC与中频IF来辨别是否搜到有效电台。若ADC>3,同时中频IF在0x30~0x3E范围内,则说明搜到有效电台,此时读出TEA5767读寄存器中的字节1和字节2,然后将这两个字节的数据转化为PLL,最后通过写ROM把搜到的电台信息即PLL值存储到AT24C02的片地址中,以方便读台使用。
读台是一个读ROM和写TEA5767的操作。将ROM中的电台信息读取出来,然后将信息再一次写入TEA5767即可。在自动搜台中,由于存储的信息是14位的PPL值,所以还必须调用函数将PLL转化为十进制的频率frequency,然后再送进LCD显示。
3.2 PT2257的音量控制设计
本系统使用PT2257来控制收音机输出的音量,以实现数字化音量控制。PT2257的地址为88H。单片机可与PT2257通过I2C进行通信。PT2 257的写操作先由单片机发出启动信号写入PT2257的片地址0x88,然后,由PT2257送回应答信号,单片机收到应答信号后,即向PT2257发送音量衰减量数据,单片机再次收到应答信号后,即发出停止信号,如此即可完成一次控制过程。
PT2257衰减量数据Vol由十位和个位两部分组成。数据的传输顺序是先发送十位数据,再发送个位数据。写入的十位数据为(Vol/10)|TenDB,个位数据为(Vol%10)|OneDB。其中TenDB=0xe0,OneDB=0xd0。衰减量的大小为十位和个位值的合并,图5给出了PT2257的写流程和音量控制流程。
4 电路设计说明
本设计在硬件方面以经典电路为主,所以在常规电路设计方面不难。但是,由于本设计涉及到高频与低频信号的处理,所以要特别注重抗干扰电路的设计。在设计样品的调试过程中,为提高抗干扰能力,作者得出以下经验:
(1)I2C总线的布线技巧
在TEA5767HN收音模块设计时,由于I2C总线与32.768 kHz的布线靠得太近,信噪比和灵敏度都可能很差。因此,笔者在做PCB板时,把I2C总线通过跳线的方式走到下层。
(2)磁珠的应用
磁珠一般专门用于抑制信号线、电源线上的高频噪声和尖峰干扰,同时还具有吸收静电脉冲的能力。本设计中的磁珠用来吸收超高频信号(如一些RF电路、PLL、振荡电路、含超高频存储器电路等)。为了尽量减少电源对收音模块的干扰,本设计使用了特征频率为100 MHz的磁珠串接入3.3 V电路中。
(3)电路中“电流声”的处理
电路中经常会有“电流声”。这是因为电路产生了一定的振荡,电流只要有变化,就会有噪音,这样,根据电流声的频率就可以有针对性的进行处理。具体抑制措施有两个:一是用电感或电阻把干扰隔离在敏感区域外;另一方面,也可以用电容把噪音泄放到地。
因此,笔者根据设计实践和相关资料,归纳出提高电路抗干扰能力的三字诀,那就是“避”、“堵”、“疏”。其中的避,就是指合理布局,躲开敏感区,如设跳线或屏蔽敏感区等方式;堵,就是用电感/电阻把干扰隔离在敏感区域之外;疏,就是用电容把噪音释放到地。另外,还要遵循两大原则,分别是:“高频信号点触接地;低频信号处处接地。”
5 结语
以TEA5767HN和单片机为硬件核心的立体声FM数字收音机与传统收音机相比,其PCB板布局小,硬件调试较为简单,在音效处理和性能方面都更加可靠。通过软硬件的结合,本系统可实现手动搜台、自动搜台、数控音量和闹钟等功能。在软件设计上也可通过公用I2C使单片机与多个IC进行通信,并可通过软件实现按键复用功能,因而大大降低了产品体积。