|
发表于 2025-3-17 14:01:45
|
显示全部楼层
//===========================================================================
void Si7432_POWER_UP(void) //上电指令;CTS无中断、GPIO2失效、正常启动、用外晶振、FM模式;模拟音频输出
{
OpenIIC();
IICsendByte(RDA_WRITE); //发送芯片地址 方向为写0x22
IIC_Wait_Ack();
IICsendByte(POWER_UP); //发送寄存器地址
IIC_Wait_Ack();
IICsendByte(0x10); //CTS无中断(7)、GPIO2失效(6)、正常启动(8)、用外晶振(4)、FM模式(3~0)
IIC_Wait_Ack();
IICsendByte(0x05); //模拟音频输出
IIC_Wait_Ack();
CloseIIC();
}
//===========================================================================
void Si7432_FM_TUNE_FREQ(void)
{
OpenIIC();
IICsendByte(RDA_WRITE); //发送芯片地址 方向为写0x22
IIC_Wait_Ack();
IICsendByte(FM_TUNE_FREQ); //发送寄存器地址
IIC_Wait_Ack();
IICsendByte(0x00); //ARG1=0x00 永远为0
IIC_Wait_Ack();
IICsendByte(0x23); //ARG2=0x23 90.1=9010=0x2332->0x23+0x32
IIC_Wait_Ack();
IICsendByte(0x32); //ARG3=0x32
IIC_Wait_Ack();
IICsendByte(0x05); //ARG4=0x00 将天线调谐电容设为自动
IIC_Wait_Ack();
CloseIIC();
}
//===========================================================================
void Si7432_FM_Freq_Set(Uint freq) //设置频率
{
Uchar freqH,freqL; //将频率拆分为高低字节
freqH = freq>>8;
freqL = freq;
OpenIIC();
IICsendByte(RDA_WRITE); //发送芯片地址 方向为写0x22
IIC_Wait_Ack();
IICsendByte(FM_TUNE_FREQ); //发送寄存器地址
IIC_Wait_Ack();
IICsendByte(0x00); //ARG1=0x00 永远为0
IIC_Wait_Ack();
IICsendByte(freqH); //ARG2=0x23 90.1=9010=0x2332->0x23+0x32
IIC_Wait_Ack();
IICsendByte(freqL); //ARG3=0x32
IIC_Wait_Ack();
IICsendByte(0x05); //ARG4=0x00 将天线调谐电容设为自动
IIC_Wait_Ack();
CloseIIC();
}
//===========================================================================
void Si4732_FM_Seek_Up(void) //向上搜台
{
OpenIIC();
IICsendByte(RDA_WRITE); //发送芯片地址 方向为写0x22
IIC_Wait_Ack();
IICsendByte(FM_SEEK_START); //发送寄存器地址
IIC_Wait_Ack();
IICsendByte(0x0C); //ARG1=0x0C 7:4=0000,SEEKUP=1向上、SEEKUP=1向下[3],WRAP=1启动,1:0=00
IIC_Wait_Ack();
CloseIIC();
}
//===========================================================================
void Si4732_FM_Seek_Down(void) //向下搜台
{
OpenIIC();
IICsendByte(RDA_WRITE); //发送芯片地址 方向为写0x22
IIC_Wait_Ack();
IICsendByte(FM_SEEK_START); //发送寄存器地址
IIC_Wait_Ack();
IICsendByte(0x04); //ARG1=0x0C 7:4=0000,SEEKUP=1向上、SEEKUP=1向下[3],WRAP=1启动,1:0=00
IIC_Wait_Ack();
CloseIIC();
}
//=========================================================================== |
|