📄 tidtv_msp34x0g.c
字号:
/*******************************************************************************
* @ModuleName :: TiDTV_MSP34x0G.c
*
* @Copyright :: Copyright 2005- Texas Instruments, Inc.
*
* @Description :: Software driver for MSP34x0G Multistandard Sound Processor
*
* @History ::
*---------------------------------------
* 08-16-2005 W.Shi Created
*******************************************************************************/
#include <stdio.h>
#include "ucos_ii.h"
#include "TvpDefs.h"
#include "TvpError.h"
#include "TiDTV_DataType.h"
#include "TiDTV_SysCtrl.h"
#include "TvpI2c.h"
#include "TVP9K_I2C_Def.h"
#include "TiDTV_SysCtrl.h"
#include "TiDTV_UserApi.h"
#include "TiDTV_MSP34x0.h"
//---------------------------------------------------------------------
#define msp3410_ID 0x80
#define msp3410_I2C_CHANNEL TVP_I2C_0
AUDIO_CHANNEL_ StoredAudioData;
UCHAR UserPrefmNicamEnable;
static WORD Cfg_VolumeTable[101] = {
0x0000, /* 0 */ //mute
0x5200, /* 1 */ //-19 dB
0x5500, /* 2 */
0x5600, /* 3 */
0x5700, /* 4 */
0x5740, /* 5 */ //------->1
0x5770, /* 5 1 */
0x5810, /* 6 */
0x5840, /* 7 */
0x5850,//0x5400, /* 8 */
0x5860,//0x5800, /* 9 */
0x5870,//0x6000, /* 10 *///------->20
0x5900,//0x6440, /* 11 */
0x5970,//0x6500, /* 12 */
0x6030,//0x6540, /* 13 */
0x6100,//0x6600, /* 14 */
0x6140,//0x6640, /* 15 */
0x6200,//0x6700, /* 16 */
0x6240,//0x6700, /* 17 */
0x6300,//0x6740, /* 18 */
0x6340,//0x6800, /* 19 */
0x6400,//0x6840, /* 20 */
0x6500,//0x6900, /* 21 */
0x6600,//0x6940, /* 22 */
0x6700,//0x6940, /* 23 */
0x6800,//0x6a00, /* 24 */
0x6840,//0x6a40,
0x6900,//0x6a40, /* 25 */
0x6940,//0x6b00,
0x6a00,//0x6b00, /* 26 */
0x6a40,//0x6b40,
0x6b40, /* 27 */
0x6b00,//0x6c00, /* 28 */
0x6b40,//0x6c00, /* 29 */
0x6c00,//x6c40,
0x6c40, /* 30 */
0x6d00,
0x6d00, /* 31 */
0x6d40,
0x6d40, /* 32 */
0x6e00,
0x6e00, /* 33 */
0x6e40, /* 34 */
0x6e40,
0x6f00, /* 35 */
0x6f00, /* 36 */
0x6f40,
0x6f40, /* 37 */
0x7000,
0x7000, /* 38 */ //--------------
0x7040, /* 39 */
0x7040, /* 40 */
0x7100, /* 41 */
0x7100, /* 42 */
0x7140, /* 43 */
0x7140, /* 44 */
0x7200, /* 45 */
0x7200, /* 46 */
0x7240, /* 47 */
0x7240, /* 48 */
0x7300, /* 49 */ //0 dB
0x7300, /* 50 */ //0 dB
0x7340, /* 51 */
0x7340, /* 52 */
0x7400, /* 53 */
0x7400, /* 54 */
0x7440, /* 55 50 :2/3 */
0x7440, /* 56 50 :2/3 */
0x7500, /* 57 */
0x7500, /* 58 */
0x7540, /* 59 */
0x7540, /* 60 */
0x7600, /* 61 */
0x7600, /* 62 */
0x7640, /* 63 */
0x7640, /* 64 */
0x7700, /* 65 */
0x7700, /* 66 */
0x7740, /* 67 */
0x7740, /* 68 */
0x7800, /* 69 */
0x7800, /* 70 */
0x7840, /* 71 */
0x7840, /* 72 */
0x7900, /* 73 */
0x7900, /* 74 */
0x7940, /* 75 *///------>64
0x7940, /* 76 */
0x7a00, /* 77 */
0x7a00, /* 78 */
0x7a40, /* 79 */
0x7a40, /* 80 */
0x7b00, /* 81 */
0x7b00, /* 82 */
0x7b40, /* 83 */
0x7b40, /* 84 */
0x7c00, /* 85 */
0x7c00, /* 86 */
0x7c40, /* 87 */
0x7c40, /* 88 */
0x7d00, /* 89 */
//0x7d00, /* 90 */
//0x7d40, /* 91 */
//0x7d40, /* 92 */
//0x7e00, /* 93 */
//0x7e00, /* 94 */
//0x7e40, /* 95 */
//0x7e40, /* 96 */
//0x7f00, /* 97 */ //+12 dB
//0x7f00, /* 98 */ //+12 dB
//0x7f00 /* 99 */ //+12 dB
};
static WORD Cfg_BassTrebleTable[25] = {
0xa000, /* 0 */ //-12 dB
0xa800, /* 1 */
0xb000, /* 2 */
0xb800, /* 3 */
0xc000, /* 4 */
0xc800, /* 5 */
0xd000, /* 6 */
0xd800, /* 7 */
0xe000, /* 8 */
0xe800, /* 9 */
0xf000, /* 10 */
0xf800, /* 11 */ //-1 dB
0x0000, /* 12 */ //0 dB
0x0800, /* 13 */ //+1 dB
0x1000, /* 14 */
0x1800, /* 15 */
0x2000, /* 16 */
0x2800, /* 17 */
0x3000, /* 18 */
0x3800, /* 19 */
0x4000, /* 20 */ //+8 dB
0x4800, /* 21 */
0x5000, /* 22 */
0x5800, /* 23 */
0x6000, /* 24 */ //+12dB
};
static WORD Cfg_BalanceTable[25] =
{
0x8100, /* 0 */ //Left = 100% and right = muted
//0x8800, /* 1 */
//0x9000, /* 2 */
//0x9800, /* 3 */
//0xa000, /* 4 */
0xa800, /* 5 */
0xb000, /* 6 */
0xb800, /* 7 */
0xc000, /* 8 */
0xc800, /* 9 */
0xd000, /* 10 */
0xd800, /* 11 */
0xe000, /* 12 */
0xe800, /* 13 */
0xf000, /* 14 */
0xf800, /* 15 */
0x0000, /* 16 */ //Left = 100% and right = 100%
0x0800, /* 17 */
0x1000, /* 18 */
0x1800, /* 19 */
0x2000, /* 20 */
0x2800, /* 21 */
0x3000, /* 22 */
0x3800, /* 23 */
0x4000, /* 24 */
0x4800, /* 25 */
0x5000, /* 26 */
0x5800, /* 27 */
//0x6000, /* 28 */
//0x6800, /* 29 */
//0x7000, /* 30 */
//0x7f00, /* 31 */
0x7f00 /* 32 */ //Left = muted and right = 100%
};
//***************************************************************************8
void gm_WriteI2C(BYTE B_DevAddress, UCHAR *Bp_Buffer,
BYTE B_Length, BYTE B_Stop );
void gm_ReadI2C(UCHAR B_DevAddress, UCHAR *Bp_Buffer,
BYTE B_Length, BYTE B_Stop );
void Msp3410ReadSubI2C( int TxDataSize, UCHAR *pTxDataBuf,
int B_Length, UCHAR *Bp_Buffer);
//******************************************************************************
// FUNCTION : void dev_msp3410ControlWrite(WORD wrdata)
// USAGE : this fucntion does a write to the msp
// INPUT : addr,data
// OUTPUT : None
// GLOBALS : None
// USED_REGS : None
//******************************************************************************
void dev_msp3420ControlWrite(WORD wrdata)
{
UCHAR temparray[3];
temparray[0] = 0x00;
temparray[1] = wrdata >> 8;
temparray[2] = (BYTE)wrdata & 0xff;
gm_WriteI2C(msp3410_ID,&temparray[0], 3, 1);
}
//******************************************************************************
// FUNCTION : WORD dev_msp3410ControlRead()
// USAGE : this fucntion does a read from the msp
// INPUT : addr
// OUTPUT : data
// GLOBALS : None
// USED_REGS : None
//******************************************************************************
WORD dev_msp3420ControlRead()
{
UCHAR sub_addr[2];
WORD rdata;
WORD temp;
sub_addr[0] = msp3410_ID;
sub_addr[1]=0x00;
//gm_WriteI2C(msp3410_ID,&sub_addr, 1, 0);
//gm_ReadI2C(msp3410_ID, (BYTE *)&temp, 2, 1);
Msp3410ReadSubI2C(2, &sub_addr[0], 2, (UCHAR *)&temp);
rdata = (temp << 8) & 0xff00;
rdata = rdata | ((temp >>8) & 0x00ff);
return rdata;
}
//******************************************************************************
// FUNCTION : void dev_msp3410DspWrite(WORD wraddr,WORD wrdata)
// USAGE : this fucntion does a write to the dsp block of the msp
// INPUT : addr,data
// OUTPUT : None
// GLOBALS : None
// USED_REGS : None
//******************************************************************************
void dev_msp3420DspWrite(WORD wraddr,WORD wrdata)
{
UCHAR temparray[5];
temparray[0] = 0x12;
temparray[1] = wraddr >> 8;
temparray[2] = (UCHAR)wraddr & 0xff;
temparray[3] = wrdata >> 8;
temparray[4] = (UCHAR)wrdata & 0xff;
gm_WriteI2C(msp3410_ID,&temparray[0], 5, 1);
}
//******************************************************************************
// FUNCTION : WORD dev_msp3410DspRead(WORD raddr)
// USAGE : this fucntion does a read to the dsp block of the msp
// INPUT : addr
// OUTPUT : data
// GLOBALS : None
// USED_REGS : None
//******************************************************************************
WORD dev_msp3420DspRead(WORD raddr)
{
WORD rdata;
UCHAR temp[2];
UCHAR temparray[5];
rdata=0;
temparray[0] = msp3410_ID;
temparray[1] = 0x13; //I2C Bus sub-addr.=>read address Dsp(see msp3450 datasheet page 17)
temparray[2] = raddr >> 8;
temparray[3] = (UCHAR)raddr & 0xff;
temparray[4] = msp3410_ID |0x01;
//gm_WriteI2C(msp3410_ID,&temparray[0], 3, 0);
//gm_ReadI2C(msp3410_ID, (BYTE*)&temp, 2, 1);
TiDTV_I2cReadAfterWrite(msp3410_I2C_CHANNEL, 1, 5, temparray,
2, temp, OS_TICKS_PER_SEC / 2);
rdata = temp[0];
rdata &= 0x00ff;
rdata <<= 8;
rdata &= 0xff00;
rdata = rdata | temp[1];
return rdata;
}
//******************************************************************************
// FUNCTION : void dev_msp3410DemodWrite(WORD wraddr,WORD wrdata)
// USAGE : this fucntion does a write to the demodulator block of the msp
// INPUT : addr,data
// OUTPUT : None
// GLOBALS : None
// USED_REGS : None
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -