#include "KT_TXdrv.h"
#include "I2C.h"
uchar IAL; // Input Audio Level
uchar TRL; // Transmission Range Level
void Delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void KT_Bus_Write(uchar Register_Address, uchar Byte_Data)
{
I2C_Byte_Write(KT_TXw_address,Register_Address,Byte_Data);
}
uchar KT_Bus_Read(uchar Register_Address)
{
return( I2C_Byte_Read(KT_TXr_address, Register_Address) );
}
//-----------------------------------------------------------------------------
// Initialization
//-----------------------------------------------------------------------------
uchar KT_TXPreInit(void)
{
uchar i,regx;
#ifdef PA_CTRL
regx=KT_Bus_Read(0x13);
KT_Bus_Write(0x13,regx | 0x04);
#endif
for (i=0;i<INIT_FAIL_TH;i++)
{
Delay_ms(5);
regx=KT_Bus_Read(0x22);
// if (regx!=0x01) continue;
break;
}
if (i==INIT_FAIL_TH) return(0);
#ifdef X32P768K
KT_Bus_Write(0x1E,0x40);
regx=KT_Bus_Read(0x17);
KT_Bus_Write(0x17,regx & 0xF7);
#endif
#ifdef X38K
KT_Bus_Write(0x1E,0x80);
regx=KT_Bus_Read(0x17);
KT_Bus_Write(0x17,regx & 0xF7);
regx=KT_Bus_Read(0x1F);
KT_Bus_Write(0x1F,regx & 0xFC);
KT_Bus_Write(0x20,0x01);
regx=KT_Bus_Read(0x21);
KT_Bus_Write(0x21,regx & 0xFC | 0x02);
KT_Bus_Write(0x22,0x40);
#endif
#ifdef X7P6M
KT_Bus_Write(0x1E,0x42);
regx=KT_Bus_Read(0x17);
KT_Bus_Write(0x17,regx | 0x08);
#endif
#ifdef R7P6M
KT_Bus_Write(0x1E,0x62);
#endif
#ifdef R7P6MPIN2
regx=KT_Bus_Read(0x17);
KT_Bus_Write(0x17,regx | 0x08);
KT_Bus_Write(0x1E,0x42);
regx=KT_Bus_Read(0x0D);
KT_Bus_Write(0x0D,regx | 0x02);
#endif
#ifdef R12M
KT_Bus_Write(0x1E,0x63);
#endif
#ifdef R12MPIN2
regx=KT_Bus_Read(0x17);
KT_Bus_Write(0x17,regx | 0x08);
KT_Bus_Write(0x1E,0x43);
regx=KT_Bus_Read(0x0D);
KT_Bus_Write(0x0D,regx | 0x02);
#endif
#ifdef R24M
KT_Bus_Write(0x1E,0x67);
#endif
return(1);
}
uchar KT_TXInit (void)
{
uchar i,regx;
for (i=0;i<INIT_FAIL_TH;i++)
{
Delay_ms(500);
regx=KT_Bus_Read(0x0F); //Read power-up indicator
if ((regx&0x50)!=0x50) continue;
break;
}
if (i==INIT_FAIL_TH) return(0);
/* old patch
KT_Bus_Write(0x0A, 0x9F);
reg9 = KT_Bus_Read(0x09);
KT_Bus_Write(0x09, reg9 | 0x30);
reg4 = KT_Bus_Read(0x04);
KT_Bus_Write( 0x04, reg4 | 0x0C);
reg10 = KT_Bus_Read( 0x10);
KT_Bus_Write( 0x10, (reg10 & 0xE7) | 0x10);
regF = KT_Bus_Read(0x0F);
if ((regF & 0x40) != 0x40) // check PLL lock
{
reg7 = KT_Bus_Read(0x07);
KT_Bus_Write( 0x07, (reg7 & 0xF9) | 0x02);
KT_Bus_Write( 0x07, (reg7 & 0xF9));
}
*/
regx = KT_Bus_Read( 0x10); // PGA Mode = 1dB step
KT_Bus_Write( 0x10, (regx & 0xFE) | 0x01);
KT_TXMono(STEREO);
KT_TXPETCS(75); // Pre-Emphasis Time-Constant is 75us
KT_TXAudio_PGA(IAL); // Audio PGA is -15dB
KT_TXRFGAIN(TRL,PA_BIAS); // RF Gain is Max level
return(1);
}
uchar KT_TXStandby(void)
{
uchar regB;
regB = KT_Bus_Read (0x0B);
KT_Bus_Write(0x0B, regB | 0x80);
return(1);
}
uchar KT_TXWakeUp(void)
{
uchar regB;
regB = KT_Bus_Read (0x0B);
KT_Bus_Write(0x0B, regB & 0x7F);
return(KT_TXInit());
}
//-----------------------------------------------------------------------------
// KT_TXMute
//-----------------------------------------------------------------------------
//
void KT_TXMute (void)
{
uchar reg2;
reg2 = KT_Bus_Read( 0x02);
KT_Bus_Write( 0x02, reg2 | 0x08);
}
//-----------------------------------------------------------------------------
// KT0806 Mute Disable
//-----------------------------------------------------------------------------
//
void KT_TXUnMute (void)
{
uchar reg2;
reg2 = KT_Bus_Read( 0x02);
KT_Bus_Write( 0x02, reg2 & 0xF7);
}
//-----------------------------------------------------------------------------
// KT_TXPETCS
//-----------------------------------------------------------------------------
//Pre-Emphasis Time-Constant Set
//
void KT_TXPETCS (uchar Pre_Emphasis_Value) // KT0806 Pre-Emphasis Time-Constant Set
{
uchar reg2;
reg2 = KT_Bus_Read( 0x02);
if( Pre_Emphasis_Value == 50 )
{
KT_Bus_Write( 0x02, reg2 | 0x01); // Pre-Emphasis Time-Constant = 50us
}
if( Pre_Emphasis_Value == 75 )
{
KT_Bus_Write( 0x02, reg2 & 0xFE); // Pre-Emphasis Time-Constant = 75us
}
}
//-----------------------------------------------------------------------------
// KT_TXFre
//-----------------------------------------------------------------------------
void KT_TXTune (uint Frequency) // Exemple :91.55MHz---> *Freqency = 9155;
{
uchar reg1,reg2;
Frequency = Frequency / 5;
KT_Bus_Write( 0x00, (Frequency & 0x01FE) >>1);
reg1 = KT_Bus_Read( 0x01);
KT_Bus_Write( 0x01, (reg1 & 0xF8 ) | ((Frequency & 0x0E00) >> 9) );
reg2 = KT_Bus_Read( 0x02);
if ( Frequency & 0x0001) // if frequency = XX.X5 MHz
{
KT_Bus_Write( 0x02, reg2 | 0x80);
}
else
{
KT_Bus_Write( 0x02, reg2 & 0x7F);
}
}
//-----------------------------------------------------------------------------
// KT_TXPGA
//-----------------------------------------------------------------------------
void KT_TXAudio_PGA (uchar PGA_Value) // Audio Gain range is 0-27
{
uchar reg1,reg4,temp;
if(PGA_Value <= 15)
{
temp = 15 - PGA_Value;
reg1 = KT_Bus_Read( 0x01);
KT_Bus_Write( 0x01, (reg1 & 0xC7) | ((temp & 0x1C) << 1));
reg4 = KT_Bus_Read( 0x04);
KT_Bus_Write( 0x04, (reg4 & 0xCF) | ((temp & 0x03) << 4));
}
else
{
temp = 4 + PGA_Value;
reg1 = KT_Bus_Read( 0x01);
KT_Bus_Write( 0x01, (reg1 & 0xC7) | ((temp & 0x1C) << 1));
reg4 = KT_Bus_Read( 0x04);
KT_Bus_Write( 0x04, (reg4 & 0xCF) | ((temp & 0x03) << 4));
}
}
//-----------------------------------------------------------------------------
// KT_TXRFGAIN
//-----------------------------------------------------------------------------
void KT_TXRFGAIN (uchar rf_gain, uchar pa_bias) // RF Gain range is 0-15
{
uchar reg1,reg2,regE,reg13;
regE = KT_Bus_Read( 0x0E);
KT_Bus_Write( 0x0E, (regE & 0xFD) | pa_bias<<1);
reg1 = KT_Bus_Read( 0x01);
KT_Bus_Write( 0x01, (reg1 & 0x3F) | ((rf_gain & 0x03) << 6) );
reg13 = KT_Bus_Read( 0x13);
KT_Bus_Write( 0x13, (reg13 & 0x7F) | ((rf_gain & 0x04) << 5));
reg2 = KT_Bus_Read( 0x02);
KT_Bus_Write( 0x02, (reg2 & 0xBF) | ((rf_gain & 0x08) << 3));
}
/*
//-----------------------------------------------------------------------------
// KT_TXBass
//-----------------------------------------------------------------------------
void KT_TXBass (uchar bass_value) // setting KT0806 Bass level (0-3)
{
uchar reg4;
reg4 = KT_Bus_Read( 0x04);
KT_Bus_Write( 0x04, (reg4 & 0xFC) | bass_value);
}
*/
//-----------------------------------------------------------------------------
// KT_TXMono
//-----------------------------------------------------------------------------
void KT_TXMono (uchar forcemono) // setting mono or stereo
{
uchar reg4;
reg4 = KT_Bus_Read( 0x04);
KT_Bus_Write( 0x04, (reg4 & 0xBF) | (forcemono<<6) );
}
//-----------------------------------------------------------------------------
// KT_TXPA_PowerDown
//-----------------------------------------------------------------------------
void KT_TXPA_PowerDown (void) // Power Amplifier Power Down
{
uchar regB;
regB = KT_Bus_Read( 0x0B);
KT_Bus_Write( 0x0B, regB | 0x20);
}
//-----------------------------------------------------------------------------
// KT_TXPA_PowerOn
//-----------------------------------------------------------------------------
void KT_TXPA_PowerOn (void) // Power Amplifier Power On
{
uchar regB;
regB = KT_Bus_Read( 0x0B);
KT_B
FM模块发射模块KT0803L IIC驱动工程
5星 · 超过95%的资源 需积分: 10 197 浏览量
2014-01-08
13:28:17
上传
评论 8
收藏 55KB RAR 举报
李友一
- 粉丝: 38
- 资源: 2
最新资源
- 奥迪A8D4仪表开机报文
- apache-skywalking-java-agent 8.8.0-9.2.0,一共12个版本
- DTS7001-VB一款SOT23封装P-Channel场效应MOS管
- ZTE-C300 OLT常用命令
- 6666666666666666
- DTS6410-VB一款SOT23封装N-Channel场效应MOS管
- SpyGlass-PowerVerifyMethodology-GuideWare2.0-UserGuide
- DTS6401-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 基于树莓派、OpenCV及Python语言的人脸识别-i
- 游戏开发 UE蓝图 分支(Branch)节点和源码.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页