//*****************************************************************************
// File Name: KT_WirelessMicTxdrv.c
// Function: KT Wireless Mic Transmitter Products Driver For Customer
// (KT064xM)
//*****************************************************************************
// Revision History
// Version Date Description
// V0.1 2016-04-26 For KT0646M_VX
// V0.2 2016-06-01 增加VX和VX2的编译选项
// V0.3 2016-08-18 For KT0646M_VX4
// V0.3.1 2016-08-24 删除KT_WirelessMicTx_Init程序内一些重复配置
// V0.4 2016-08-26 修正了XTAL_DUAL问题
// V0.5 2016-10-11 修改了初始化函数中的一些配置,把0x25,0x26寄存器的配置加到了初始化函数里面,
// 在初始化函数里面set pilot frequency
// V0.5.1 2016-10-17 重新修改了一下里面的宏定义,定义了RXISKT0616M就用BPSK的旧模式,然后再根据
// 是否是双晶振把KT0616M选晶振的程序加进去。
// V0.5.2 2016-11-15 在tune台前把lo_fine_vref_sel改为3,tune完后改成0.
// V0.5.3 2016-12-15 在初始化中把lo_fine_vref_sel改为3,不用在tune台的时候再来回修改了.为了温度
// 变化不锁定的问题,详见被宏DOUBLE_KVCO包围的代码
// V0.6 2017-02-08 格式规范化整理
// V1.1 2017-04-27 删除了一些初始化函数里面没用的东西,把有些用小写字母定义的宏定义改成了大写的字母
// V1.2 2017-05-24 初始化中,把HARD_LIMIT从14改成了15,COMPANDOR_TC改成了3,即48ms。
// V1.3 2017-09-18 COMPEN_GAIN由3改成1,MIC_SENS_GAIN由9改成5,COMPANDOR_TC_48ms改成COMPANDOR_TC_12ms
// V1.4 2017-10-10 echo关闭的时候,不真正关echo而是把Echo_Ratio写成0,soft_rst不是在寄存器0x3e的bit15了,而是在0x1e的bit4.
// V1.5 2017-12-14 根据接收是KT0616M时,把BPSK_NEW_MODE改成0,否则为1
// V1.6 2018-12-11 在tune完台通过操作bpsk_dat_en(先写0再写1),可以使RX正常接收到数据,redmine 11433
// 压扩功能开启或关闭封成了一个函数,KT_WirelessMicTx_COMPANDOR_Dis(BOOL COMP_Dis),传入的参数为1则关闭,否则开启
//*****************************************************************************
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "KT_WirelessMicTxdrv.h"
#include <math.h>
//-----------------------------------------------------------------------------
//函 数 名:KT_Bus_Write
//功能描述:总线写程序
//函数说明:
//全局变量:无
//输 入:UINT8 Register_Address, UINT16 Word_Data
//返 回:无
//设 计 者:Kang Hekai 时间:2014-02-13
//修 改 者: 时间:
//版 本:V1.0
//-----------------------------------------------------------------------------
void KT_Bus_Write(UINT8 Register_Address, UINT16 Word_Data)
{
I2C_Word_Write(KTWirelessMicTxw_address,Register_Address,Word_Data);
}
//-----------------------------------------------------------------------------
//函 数 名:KT_Bus_Read
//功能描述:总线读程序
//函数说明:
//全局变量:无
//输 入:UINT8 Register_Address
//返 回:I2C_Word_Read(KTWirelessMicTxr_address, Register_Address)
//设 计 者:Kang Hekai 时间:2014-02-13
//修 改 者: 时间:
//版 本:V1.0
//-----------------------------------------------------------------------------
UINT16 KT_Bus_Read(UINT8 Register_Address)
{
return( I2C_Word_Read(KTWirelessMicTxr_address, Register_Address) );
}
//-----------------------------------------------------------------------------
//函 数 名:KT_WirelessMicTx_PreInit
//功能描述:芯片工作始化程序
//函数说明:判断是否芯片是否正常上电,I2C总线是否读写正常
//全局变量:INIT_FAIL_TH
//输 入:无
//返 回:正确:1 错误:0
//设 计 者:Kang Hekai 时间:2014-02-13
//修 改 者: 时间:
//版 本:V1.0
//-----------------------------------------------------------------------------
BOOL KT_WirelessMicTx_PreInit(void)
{
UINT16 regx;
UINT8 i;
for (i = 0; i < INIT_FAIL_TH; i++)
{
regx = KT_Bus_Read(0x01); //Read Manufactory ID
Delay_ms(10);
if (regx == 0x4B54)
return(1);
}
return(0);
}
//-----------------------------------------------------------------------------
//函 数 名:KT_WirelessMicTx_Init
//功能描述:芯片初始化程序
//函数说明:
//全局变量:无
//输 入:无
//返 回:正确:1 错误:0
//设 计 者:Zhou Dongfeng 时间:2016-04-26
//修 改 者:Zhou Dongfeng 时间:2016-08-26
//版 本:V0.4
//版 本:V1.2 HARD_LIMIT从14改成了15,COMPANDOR_TC改成了3,即48ms
// V1.6 压扩功能开启或关闭封成了一个函数
//-----------------------------------------------------------------------------
BOOL KT_WirelessMicTx_Init(void)
{
UINT16 regx;
Delay_ms(50);
regx = KT_Bus_Read(0x03);
KT_Bus_Write(0x03, (regx & 0xfffe) | PA_SEL);
regx = KT_Bus_Read(0x24);
KT_Bus_Write(0x24, (regx & 0xEFFF) | (BATTERY_METER_ENABLE << 12));
//ref_vtr_vth_sel = 1
regx=KT_Bus_Read(0x47);
KT_Bus_Write(0x47,(regx | 0x0200));
//vref_mon_en=1
regx = KT_Bus_Read(0x0a);
KT_Bus_Write(0x0a, regx | 0x0200);
regx = KT_Bus_Read(0x1C);
KT_Bus_Write(0x1C, (regx & 0xF1E1)|( FDEV_MONITOR_TC_250ms << 10)|( PRE_EMPHASIS_ENABLE << 9 )|( COMPANDOR_TC_12ms << 1 ));
KT_WirelessMicTx_COMPANDOR_Dis(0);//1 disable COMPANDOR; 0 enable COMPANDOR
KT_WirelessMicTx_Mic_Sens(MIC_SENS_GAIN_5);
//cic overflow detect enable
regx = KT_Bus_Read(0x1e);
KT_Bus_Write(0x1e, (regx & 0xffdf)|(1<<5));
regx=KT_Bus_Read(0x30);
KT_Bus_Write(0x30, ( regx & 0x8000 ) | (AGC_VHIGH << 11) | (AGC_VLOW << 7) | (AGC_ATTACK << 4) |
(AGC_RELEASE << 1) | AGC_DIS );
regx=KT_Bus_Read(0x31);
KT_Bus_Write( 0x31, ( regx & 0xff00 ) | (GAIN_SEL << 6) | (COMPEN_GAIN << 4) |
(BLANK_EN << 3) | BLANK_TIME );
评论0