STC89C52控制TEA5767 I2C收音机模块的C51程序与PLL设置

1 下载量 121 浏览量 更新于2024-08-31 收藏 39KB PDF 举报
本文档详细介绍了如何使用单片机STC89C52控制TEA5767收音机模块,该模块支持I2C通信。TEA5767是一款高度集成的广播接收模块,它具有PLL(锁相环)调节功能,用于调谐FM无线电频率。程序中定义了两个关键函数:`radio_write` 和 `radio_read`。 首先,`radio_write` 函数用于向TEA5767发送数据,包括PLL参数等。它使用I2C协议进行通信,通过调用`iic_start()`、`iic_write8bit()`和`iic_ack()`等函数,以五个字节(0x29, 0xc2, 0x20, 0x11, 0x00)的形式将数据写入模块。这些数据可能包含PLL设置,具体格式需参照TEA5767的数据手册。 另一个重要部分是`radio_read` 函数,用于从模块读取状态并将其转换为频率。该函数的作用是获取模块接收到的频率信息,但实际实现没有在提供的代码片段中给出。通常,读取数据后,可能需要解析接收到的字节序列,提取PLL参数,并根据手册中的结构计算出相应的频率值。 此外,程序中还提及了使用1K EEPROM来存储电台的预设频率,以便在掉电后仍能保持收听设置。默认存台的PLL设置为0x29c2,对应87.8MHz,而其他频率对应的PLL值也有所提及,如108MHz时为0x339b。这表明该系统具备灵活的频率选择和记忆功能。 1602LCD显示则用于实时反馈用户操作和接收状态,例如显示当前频率或错误信息。整个控制过程围绕着I2C通信进行,确保了与TEA5767模块的有效交互。 总结起来,本文档展示了在C51环境下通过STC89C52单片机控制TEA5767收音机模块的基本步骤,包括数据的写入和读取,以及频率设置的管理。开发者可以根据这些代码片段作为基础,进一步开发自己的应用项目。同时,理解TEA5767的数据结构和I2C通信规范是关键,以确保程序的正确性和性能。
2021-04-21 上传
可能感兴趣的项目设计:基于51单片机的FM收音机制作原理图,源代码 (链接:https://www.cndzz.com/diagram/4234_4235/197369.html) Si4745概述: Si4745芯片是Silicon Labs公司面向车载收音机市场推出的一款DSP(Digital Signal Processor)收音芯片。极小的4*4 mm 24脚QFN封装,由于使用了先进的CMOS技术,就这么一个小小的芯片可以实现完整的全波段收音功能。为应对车内复杂的电磁环境,抗干扰能力较强。 芯片支持以下频率范围:FM波段:64-108MHZ;AM波段:520-1710KHZ;LW波段:153-288KHZ;SW波段:2.3-30MHZ。还支持RDS接收。可以直接通过总线输出信号质量指示、信噪比、频率偏移等数值。 工作电压:3.0-3.6V;典型工作电流: FM波段:26ma; AM波段:19ma; 待机模式:6ua。 FM接收灵敏度: 2uV; THD:0.1% Si474X系列的管脚和方框图: Si4745通讯管脚由SDIO、SCLK、SEN、RST构成。在RST的上升沿对GPO1和GPO2的电平进行采样确定工作于哪种模式。 有三种控制总线方式可以选择: 2线模式(兼容I2C) 3线模式 SPI模式 因为GPO1内部集成上拉电阻,GPO2/INT集成下拉电阻。所以芯片默认工作于2-wire(I2C)模式。在3-wire和SPI模式下,总线由SDIO、SCLK和SEN组成。而I2C模式只使用SDIO和SCLK进行通讯,SEN的电平高低决定了I2C的操作地址。其对应关系如下: SEN电平 写地址 读地址 SEN=0 0x22 0x23 SEN=1 0xc6 0xc7 以前玩过一些I2C总线的芯片,SPI和3线没有接触过,决定使用I2C方式来驱动。测量后发现,楼主手里的模块SEN接地,所以I2C的写入地址为0x22,读取地址是0x23。 I2C通讯协议: 起始信号(START):在SCL为高电平期间,SDA从高到低的跳变; 终止信号(STOP):在SCL为高电平期间,SDA从低到高的跳变; 应答信号(ACK):发送或接收完8bit数据后,在下一个时钟周期(SCL=1),SDA=0为应答(ACK),SDA=1为非应答(NACK); 写入流程:MCU发送起始信号,接下来发送器件地址(0x22),接收应答信号,再发送N字节的8位数据,每发送一个字节后都要读应答信号,最近发送终止信号,释放总线。 读取流程:MCU发送起始信号,接下来发送器件地址(0x23),接收应答信号,开始接收N字节的8位数据,每读取一个字节后都要读应答信号。如果器件非应答,就发送终止信号,结束读取过程。最后释放总线。 本制作主要用了下面几条操作命令: 0x01: POWRE_UP 此命令主要设置CTS中断使能、GPO2 输出使能、晶振、接收波段和音频输出选择等功能。 0X11: POWER_DOWN 发送本命令让芯片进入待机模式 0X12:SET_PROPERTY 设置属性命令 0X14:GET_INT_STATUS 获取中断状态,主要用于判断搜索是否完成。 0X20:FM_TUNE_FREQ 写入指定的频率(64-108mhz) 0X21:FM_SEEK_START 开始搜索电台。可以设置搜索方向和到达搜索终点时是否循环。 0X22:FM_TUNE_STATUS 调谐状态,本例中用于获取当前电台的频率。 0X23:FM_RSQ_STATUS 接收信号质量。RSSI:信号质量,单位为dBuV。SNR:信噪比,单位dB. Si4745的常用属性: 0X1100:FM_DEEMPHASIS 去加重时间常数设置,默认值为0x0002(75us)。要设置为我国使用的50us,需要将值设为0x0001; 0X4000:RX_VOLUME 音量设置,范围从0x00-0x3f,共64级,每级步进1dB。默认值为0X3f即最大音量。 其余属性值在本制作中全部使用了默认值,也就是不去操作这些寄存器。 先用STC15L104W单片机做了一个测试小板,电路够简单,程序才是本制作的难点 电路采用STC89LE52单片机做主控,模拟I2C协议控制DSP收音模块。MicroUSB提供5V电源,经1117-3.3降压后供DSP模块和MCU使用。加了一级TDA1308组成的音频放大,可直接驱动耳机。 视频演示: 原文出处:https://www.crystalradio.cn/thread-1331951-1-1.html