⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drv_dsp_ctrlspeed.c

📁 ROHM 公司BU9432:application:应用范围
💻 C
字号:
//乷
// 	To SDC
//		俼俷俵埑弅僱僞
//		俠俢俢俙俤俽俹僆僼傪巇條偐傜敳偔応崌
//		倃侾俶傊偺慗堏偼偁傝摼側偄偱偡丅
//		偝偔偭偲嶍偭偰壓偝偄丅
// 乸


/******************************************************************************/
/*	[NAME]   :Drv_DSP_CtrlSpeed.c											  */
/*	[OUTLINE]:																  */
/*	[HISTORY]:																  */
/*	[NOTE]   :TAB=4															  */
/******************************************************************************/
//#include <machine.h>  /*  Z80梡   */
#include "BU18703.h"			/*  CPU儗僕僗僞掕媊 */
#include "prototype.h"
#include "extern.h"
#include <string.h>
/*----------------------------------------------------------------------------*/

// 俠俢丂SERVO憌丅忢挀僪儔僀僶丅


// 僕儑僈僽儖帪丄VCO挷惍寢壥偵忋忔偣偡傞僥乕僽儖
const UINT08 TABLE_VCO_OFFSET_JOGGABLE[32]=
{
	0x0f,			// 000h
	0x10,			// 001h
	0x10,			// 002h
	0x10,			// 003h
	0x11,			// 004h
	0x11,			// 005h
	0x12,			// 006h
	0x12,			// 007h
	0x12,			// 008h
	0x13,			// 009h
	0x13,			// 00Ah
	0x14,			// 00Bh
	0x14,			// 00Ch
	0x15,			// 00Dh
	0x15,			// 00Eh
	0x16,			// 00Fh
	0x16,			// 010h
	0x17,			// 011h
	0x17,			// 012h
	0x18,			// 013h
	0x19,			// 014h
	0x1a,			// 015h
	0x1a,			// 016h
	0x1b,			// 017h
	0x1b,			// 018h
	0x1c,			// 019h
	0x1d,			// 01Ah
	0x1e,			// 01Bh
	0x1e,			// 01Ch
	0x1f,			// 01Dh
	0x1f,			// 01Eh
	0x1f			// 01Fh
};



const UINT08 CMD_SPEED_1N[5][2]=	//--- nomal *1.0 speed ---
{
	{0x50,0x80},	
	{0x70,0x1C},	
	{0x81,0x7A},	//Initial value for Rough
	{0x85,0x45},	//CLV Rough Gain
	{0x82,0x00}		//Traning on
};

// YTC008 20050110 >>>
const UINT08 Tbl_CLV_1W[][2] =
{
	{ 0x50, 0x80 },		// VCO-PCk娫暘廃斾/EFM暘廃斾 偙偙偱X1宯偵丅
	{ 0x81, 0x20 },		// CLV Wide Target
	{ 0x82, 0x20 },		// CLV Wide MODE
	{ 0x83, 0x01 },		// 敿攇俠俴倁夝彍
	{ 0x85, 0x34 }		// CLV Wide Gain
};

const UINT08 Tbl_CLV_2W[][2] =
{
	{ 0x50, 0x40 },		// 
	{ 0x82, 0x20 },		// CLV Wide mode
	{ 0x85, 0x34 }		// CLV Wide gain
};
// YTC008 20050110 <<<


void drvDSP_SetEcc( void );

/*----------------------------------------------------------------------------*/
//	俠俴倁夞揮懍搙儌乕僪傪愗懼偊傞丅
//
//	栚昗夞揮懍搙	gu08_kind_SPEED
//	(=慗堏屻偺懍搙)	0 X1N	堦攞懍normalCLV	(CDDA ESPoff)	崱夞偺僙僢僩偱偼偮偐傢側偝偘丅
//					1 X11W	堦攞懍WIDE		(MP3,ESP_SpeedDown)
//					2 X20W	俀攞懍WIDE		(ESP)
//					3 X26W	2.6攞懍WIDE		(JOGGABLE)
//					
//	慗堏梫媮		gu08_scc_Speed
//					0 梫媮柍偟
//					1 慗堏梫媮
//					2 慗堏幚峴拞丒丒丒
//					3 慗堏幚峴拞丒丒丒
//					4 
//					8 堦攞懍WIDE傊noBRAKE慗堏	(JOGGABLE/4MDRAM梡僷儚乕僙乕僽)
//					9 慗堏幚峴拞丒丒丒
//					10慗堏幚峴拞丒丒丒
//
/*----------------------------------------------------------------------------*/
/*	[NAME]     :DrvDSP_CtrlSpeed											  */
/*	[FUNCTION] :															  */
/*	[RETURN]   :void 														  */
/*	[PARAMETER]:void														  */
/*	[HISTORY]  :															  */
/*	[NOTE]     :															  */
/*----------------------------------------------------------------------------*/
void DrvDSP_CtrlSpeed( void )
{
	if(gu08_scc_speed==0)
	{
		return;	//->慗堏梫媮柍偟
	}
	else
	{	//梫媮桳傝丄慗堏幚峴拞
		switch(gu08_kind_SPEED)
		{
			case	0:	//X1N傊慗堏偟偰壓偝偄
				drvDSP_speed_ctrl_X1N();
				break;
			case	1:	//X1.1W傊慗堏偟偰壓偝偄
				drvDSP_speed_ctrl_X11W();
				break;
			case	2:	//X2.0W傊慗堏偟偰壓偝偄
				drvDSP_speed_ctrl_X20W();
				break;
			case	3:	//X2.6W傊慗堏偟偰壓偝偄
//				drvDSP_speed_ctrl_X26W();	// YTC_20041228
				drvDSP_speed_ctrl_X20W();	// YTC_20041228

				break;
		}
	}
}


/*----------------------------------------------------------------------------*/
/*	[NAME]     :DrvDSP_CtrlSpeed											  */
/*	[FUNCTION] :															  */
/*	[RETURN]   :void 														  */
/*	[PARAMETER]:void														  */
/*	[HISTORY]  :															  */
/*	[NOTE]     :															  */
/*----------------------------------------------------------------------------*/
void drvDSP_speed_ctrl_X1N()
{
//	UINT08	i;

	switch(gu08_scc_speed)
	{
		case	1:	//慗堏奐巒
#if	ROM	// SDC 20050205
			DrvDSP_BIOS_WriteReg( 0x9E, gu08_9E_VcoOffset);	//VCO僆僼僙僢僩栠偡丅(JOGGABLE_ESP->ESP_off偺偲偒(崱夞偺僙僢僩偱偼偁傝摼側偄偐傕))
#else
			DrvDSP_BIOS_WriteReg( 0x9E, gu08_Vco[VCO_OFFSET]);	//VCO僆僼僙僢僩栠偡丅(JOGGABLE_ESP->ESP_off偺偲偒(崱夞偺僙僢僩偱偼偁傝摼側偄偐傕))
#endif
// YTC008 20050110 >>>
//			for(i=0; i < 5; i++)	//0.1.2.3.4
//			{
//				DrvDSP_BIOS_WriteReg(CMD_SPEED_1N[i][0], CMD_SPEED_1N[i][1]);	//
//			}
			SendTable( (UINT08 *)CMD_SPEED_1N, sizeof(CMD_SPEED_1N) );	// YTC007 20050110
// <<<
			drvDSP_SetEcc();
			gu16_Timer_CLV_SPEED = CONST_TIMER_SPEED_X1N;
			gu08_scc_speed=2;
			break;

//		case	2:	//帪娫懸偪
		default:	//帪娫懸偪
			if(gu16_Timer_CLV_SPEED==0)
			{
				DrvDSP_BIOS_EndTraining(  );	//慗堏姰椆 (SERVO LOCK傑偱偼柺搢尒柍偄傛丅)
				gu08_scc_speed=0;				//
			}
			break;
	}
}


// 1.1攞懍儚僀僪儌乕僪傊慗堏
//	擖傝岥偑擇偮偁傝傑偡丅拲堄丅
//	侾丗懄嵗偵x1.1W偵慗堏
//	俉丗敿攇CLV傪巊偭偰x1.1W偵慗堏(JOGGABLE,4MDRAM巊梡帪)
/*----------------------------------------------------------------------------*/
/*	[NAME]     :DrvDSP_CtrlSpeed_X11W										  */
/*	[FUNCTION] :															  */
/*	[RETURN]   :void 														  */
/*	[PARAMETER]:void														  */
/*	[HISTORY]  :															  */
/*	[NOTE]     :															  */
/*----------------------------------------------------------------------------*/
void drvDSP_speed_ctrl_X11W()
{
	switch(gu08_scc_speed)
	{
		case	8:	//僷儚乕僙乕僽梡侾丏侾倂 擖傝岥
			//4bit斉偺堏怉
			DrvDSP_BIOS_HalfClv_On();			//DSP.8341
			DrvDSP_BIOS_WriteReg( 0x82, 0x20 );	//CLV Wide MODE
			DrvDSP_BIOS_WriteReg( 0x81, 0x20 );	//CLV Wide TARGET <X1.1W>
#if	ROM	// SDC 20050208
			DrvDSP_BIOS_WriteReg( 0x9E, gu08_9E_VcoOffset);	//X1.1晅嬤偺PLL捛廬惈岦忋	// YTC_20041228
#else
			DrvDSP_BIOS_WriteReg( 0x9E, gu08_Vco[VCO_OFFSET]);	//X1.1晅嬤偺PLL捛廬惈岦忋	// YTC_20041228
#endif
			gu16_Timer_CLV_SPEED = CONST_TIMER_SPPED_DOWN;
			gu08_scc_speed=9;
			break;

		case	9:	//慗堏姰椆懸偪
// YTC_20041228 >>>
			if(gu16_Timer_CLV_SPEED != 0)
			{	//尰嵼懍搙僠僃僢僋
				DrvDSP_BIOS_WriteReg( 0xFA, 0x80 );	//儌僯僞愗懼丅尰嵼CLV懍搙傪庢摼偟偨偄
													//儌僯僞愗懼偼栠偝側偄偱椙偄丅
				if(DrvDSP_BIOS_ReadReg( 0xEE ) >= CONST_SPEED_11W)
				{	// 懍搙偑棊偪愗傜偢丄偐偮丄帪娫傕傑偩偁傞
					break;
				}
				gu08_scc_speed=10;	//廩暘僗僺乕僪棊偪偨丅X11W妋掕張棟傊
			}
			else
			{	//TIMEOUT
				gu08_scc_speed=10;	//帪娫愗傟丅嫮惂揑偵x11W傊丅
			}
//			break;
// <<<
		case	1:	//嫮惂揑偵侾丏侾倂偵偡傞丅
		case	10:	//X1.1W妋掕
// YTC_20041228 >>>
			DrvDSP_BIOS_WriteReg( 0x60, gu08_sts_LON &=~BIT_RF_PH_CPS );		// RF_PH_CPS X1
//			DrvDSP_BIOS_WriteReg( 0x62, Tbl_EQ_1X[gu08_kind_Gain & 0x07] );		// X1 RF EQ	// YTC005 20050104
			DrvDSP_BIOS_WriteReg( 0x62, Tbl_EQ_1X[gu08_kind_Gain] );			// X1 RF EQ	// YTC005 20050104
// <<<
// YTC008 20050110 >>>
//			DrvDSP_BIOS_WriteReg( 0x50, 0x80 );	//VCO-PCk娫暘廃斾/EFM暘廃斾 偙偙偱X1宯偵丅
//			DrvDSP_BIOS_WriteReg( 0x81, 0x20 );	//CLV Wide Target
//			DrvDSP_BIOS_WriteReg( 0x82, 0x20 );	//CLV Wide MODE
//			DrvDSP_BIOS_WriteReg( 0x83, 0x01 );	//敿攇俠俴倁夝彍
//			DrvDSP_BIOS_WriteReg( 0x85, 0x34 );	//CLV Wide Gain
			SendTable( (UINT08 *)Tbl_CLV_1W, sizeof(Tbl_CLV_1W) );	// YTC007 20050110
// <<<
			drvDSP_SetEcc();
#if	ROM	// SDC 20050208
			DrvDSP_BIOS_WriteReg( 0x9E, gu08_9E_VcoOffset);	//VCO僆僼僙僢僩栠偡丅(JOGGABLE_ESP->MP3帪摍偁傝偆傞)
#else
			DrvDSP_BIOS_WriteReg( 0x9E, gu08_Vco[VCO_OFFSET]);	//VCO僆僼僙僢僩栠偡丅(JOGGABLE_ESP->MP3帪摍偁傝偆傞)
#endif
			gu08_scc_speed = 0;	//慗堏廔椆
			break;
	}
}


/*----------------------------------------------------------------------------*/
/*	[NAME]     :DrvDSP_CtrlSpeed_X20W										  */
/*	[FUNCTION] :															  */
/*	[RETURN]   :void 														  */
/*	[PARAMETER]:void														  */
/*	[HISTORY]  :															  */
/*	[NOTE]     :															  */
/*----------------------------------------------------------------------------*/
void drvDSP_speed_ctrl_X20W()
{
// YTC_20041228 >>>
	UINT08 u08_VcoOffset;
	UINT08 u08_ClvTarget;

	DrvDSP_BIOS_WriteReg( 0x60, gu08_sts_LON |=BIT_RF_PH_CPS );			// RF_PH_CPS X2
//	DrvDSP_BIOS_WriteReg( 0x62, Tbl_EQ_2X[gu08_kind_Gain & 0x07] );		// X2 RF EQ	// YTC005 20050104
	DrvDSP_BIOS_WriteReg( 0x62, Tbl_EQ_2X[gu08_kind_Gain] );			// X2 RF EQ	// YTC005 20050104

// YTC007 20050110 >>>
//	DrvDSP_BIOS_WriteReg( 0x50, 0x40 );	//
//	DrvDSP_BIOS_WriteReg( 0x82, 0x20 );	//CLV Wide mode
//	DrvDSP_BIOS_WriteReg( 0x85, 0x34 );	//CLV Wide gain
	SendTable( (UINT08 *)Tbl_CLV_2W, sizeof(Tbl_CLV_2W) );	// YTC007 20050110
// <<<
	drvDSP_SetEcc();

	if( gu08_kind_SPEED == 2 )
	{	// X2.0W
		u08_ClvTarget =0x3D;											// X2.0 Speed
#if	ROM	// SDC 20050208
		u08_VcoOffset =gu08_9E_VcoOffset;								// Normal VCO Offset
#else
		u08_VcoOffset = gu08_Vco[VCO_OFFSET];							// Normal VCO Offset
#endif
	}
	else
//	else if( gu08_kind_SPEED == 3 )
	{	// X2.6W
		u08_ClvTarget =0x50;											// X2.6 Speed
#if	ROM	// SDC 20050208
		u08_VcoOffset =TABLE_VCO_OFFSET_JOGGABLE[gu08_9E_VcoOffset];	// Boosted VCO Offset
#else
		u08_VcoOffset =TABLE_VCO_OFFSET_JOGGABLE[gu08_Vco[VCO_OFFSET]];	// Boosted VCO Offset
#endif
	}
	DrvDSP_BIOS_WriteReg( 0x81, u08_ClvTarget );
	DrvDSP_BIOS_WriteReg( 0x9E, u08_VcoOffset );

	gu08_scc_speed=0;
// <<<
}


// YTC_20041228 >>>
///*----------------------------------------------------------------------------*/
///*	[NAME]     :DrvDSP_CtrlSpeed_X26W										  */
///*	[FUNCTION] :															  */
///*	[RETURN]   :void 														  */
///*	[PARAMETER]:void														  */
///*	[HISTORY]  :															  */
///*	[NOTE]     :															  */
///*----------------------------------------------------------------------------*/
//void drvDSP_speed_ctrl_X26W()
//{
//	drvDSP_speed_ctrl_X20W();	//婎杮偼X20W偱丄埲壓偺僐儅儞僪傪捛壛
//	DrvDSP_BIOS_WriteReg( 0x81, 0x50 );	//CLV Wide Target <X2.6W>
//	DrvDSP_BIOS_WriteReg( 0x9E, TABLE_VCO_OFFSET_JOGGABLE[gu08_9E_VcoOffset] );	//VCO僆僼僙僢僩偵壓懯
////	gu08_scc_speed = 0;	//柧帵 drvDSP_speed_ctrl_X20W偱幚巤偝傟偰偄傞
//}
// <<<


void drvDSP_SetEcc( void )
{
	UINT08 u08_Param =0;

	if( stInfoArea.PlayType == TYPE_MP3 )
			u08_Param =MODE_ROM;
//	else										u08_Param =MODE_DA;

	if( gu08_kind_SPEED==1 )
						u08_Param +=ECC_22;		// X1.1W
//	else										u08_Param +=ECC_24;	// X2W, X2.6W


	DrvDSP_BIOS_WriteReg( 0xA1, u08_Param );
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -