可能感兴趣的项目设计:基于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
1