第十八章 金龙107——收音机
18.1、TEA5767简介:TEA5767是飞利浦公司生产的一款收音机芯片,很多手机,MP3、MP4里的收音机功能都是于他实现的,接收频率76MHz~108MHz(日本/美国/欧洲频段选择),中频频率225kHz,采用锁相环调谐系统,带有AGC电路,并可以使用软件进行静音和消除噪音。主要电性能指标:工作电压2.5V~5.0V,工作电流10mA,灵敏度15uA,立体声分离度30dB,信噪比60dB,输出信号电平75mV。总线通信可选IIC和3线总线,具有RF信号强度ADC输出,软件静音。
18.2、TEA5767读写:金龙107开发板通过IIC总线与TEA5767模块连接,其电路接口如下图,PB11为IIC数据线,PB10为IIC时钟线,T1连接外接天线,FM_OUTL和FM_OUTR为音频输出。
TEA5767的I 2C总线的地址是C0,是可收发的从器件结构,向TEA5767写入数据时,其低位地址为0即C0,从TEA5767读出数据时其低位地址为1即C1。
写时序:
其中传送数据中的bit位的含义可以参考芯片手册。
18.3、实验说明:实验中使用到了TEA5767收音机模块和WM8978芯片,这里主要是将WM8978作为功率放大器,因此这里不做说明。
如下是向TEA5767写入数据
static void tea5767_Write(uint8_t *_ucaBuf, uint8_t _count)
{
uint8_t i;
uint8_t ucAck;
i2c_Start();
i2c_SendByte(TEA5767_SLAVE_ADDRESS | I2C_WR);/*发送设备写地址 */
ucAck = I2C_WaitAck(); /*检测ACK*/
if (ucAck == 1)
{
goto err_quit;
}
for (i = 0; i < _count; i++)
{
i2c_SendByte(_ucaBuf);/*发送数据 */
ucAck = I2C_WaitAck();/*检测ACK*/
if (ucAck == 1)
{
goto err_quit;
}
}
err_quit:
i2c_Stop();
}
如下是从TEA5767读出数据
static void tea5767_Read(uint8_t *_ucaBuf)
{
uint8_t i;
uint8_t ucAck;
i2c_Start();
i2c_SendByte(TEA5767_SLAVE_ADDRESS | I2C_RD);/*发送设备读地址C1 */
ucAck = I2C_WaitAck();/*检测ACK */
if (ucAck == 1)
{
goto err_quit;
}
for (i = 0; i < 5; i++)
{
_ucaBuf = i2c_ReadByte(); //读取数据
if (i == 4)
{
i2c_Ack(); //发送ACK
}
else
{
i2c_NAck(); //发送NACK
}
}
err_quit:
i2c_Stop();
}
通过写入数据来设置TEA5767工作模式和调节频道,使用按键调节收音机音量频道等可以参考程序fm_radio.c文件。
18.4、实验现象:插上串口线设置波特率为115200,PB11即IIC数据线需用10K上拉电阻,下载程序后复位开发板,开发板自动搜索到一个电台后开始播放,串口打印出电台频率等信息。使用方向键上下可以调节音量,左右调节频道,按键S1控制静音等。