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

📄 tsc_ssp.c

📁 为TI的TSC2301音频芯片所设计的嵌入式linux驱动程序源代码
💻 C
📖 第 1 页 / 共 3 页
字号:




/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
///// Start of functions to control the TSC2200 /////
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////

// I've tried to ensure that nothing below here is
// platform specific.



// Bg - 1/10/02
void TSC2200Reset(void)
{
	unsigned __int16 iData, iData2;

	//iData = 0x0880; // Write to reset Register
	iData = (TSC_CMD_WRITE | TSC_CMD_RESET);
	iData2 = RESET_RESET; // Reset command

	TwoWordSPITransaction(&iData, &iData2);

}




// Bg 1/10/02
unsigned __int16 TSC2200ReadADCReg(void)
{
	unsigned __int16 iTempData = 0, iTempData2 = 0;

	iTempData = (TSC_CMD_READ | TSC_CMD_ADC);
	iTempData2 = 0x0000;
	
	TwoWordSPITransaction(&iTempData, &iTempData2);

//RETAILMSG(1,(TEXT("TSC2200ReadADCReg:%X"), iTempData2));

	return iTempData2;

}


// Bg 20FEB02
void TSC2200WriteADCReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 = 0;
	unsigned __int16 iTempData = 0;
	unsigned __int16 iTempData2 = 0;

//RETAILMSG(1,(TEXT("TSC2200WriteADCReg:%X"), newValue));

	iData = (TSC_CMD_WRITE | TSC_CMD_ADC);	// 0x0800 - Write to ADC control Register
	iData2 = newValue;
	TwoWordSPITransaction(&iData, &iData2);


}



// Bg 1/10/02
void TSC2200ReadXY(unsigned __int16 *pXdata, unsigned __int16 *pYdata)
{
	BOOL bRetVal = FALSE;
	unsigned __int16 iData = 0, iData2 = 0, iData3 = 0;
	unsigned __int16 iDummyData	= 0;
	unsigned __int16 iDummyData2	= 0;
	unsigned __int16 iDummyData3	= 0;
	unsigned __int16 iDummyData4	= 0;
	unsigned __int16 iXdata		= 0;
	unsigned __int16 iYdata		= 0;

	//iData = 0x8000;	// read page 0 addr 0 (X Reg)	
	iData = (TSC_CMD_READ | TSC_CMD_X);

	ThreeWordSPITransaction(&iData, &iData2, &iData3);

	*pXdata = iData2;
	*pYdata = iData3;
	bRetVal = TRUE;

}




// Bg 1/10/02
unsigned __int16 TSC2200ReadKPDataReg(void)
{
	unsigned __int16 iData = 0, iData2 = 0;
	unsigned __int16 iTempData = 0;
	unsigned __int16 iTempData2 = 0;

	iData = (TSC_CMD_READ | TSC_CMD_KPDATA);	// read from KPData
	iData2 = 0x0000;
	TwoWordSPITransaction(&iData, &iData2);
	return iData2;

}




// Bg 14FEB02
unsigned __int16 TSC2200ReadKeyReg(void)
{
	unsigned __int16 iData = 0, iData2 = 0;

	//iData = 0x8820;	// read from KEY Reg
	iData = (TSC_CMD_READ | TSC_CMD_KEY);
	iData2 = 0x0000;
	TwoWordSPITransaction(&iData, &iData2);

	return iData2;
}


// 20FEB02
void TSC2200WriteKeyReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 = 0;

	// Bg 20FEB02 - in order to avoid the bug mentioned in the REV B. Errata for the TSC2200
	//				we must make sure that the internal clock is running when we write to this reg.

	// so, we'll start a long slow port scan.
	// we want to do this before we grab the mutex - so that the other function can grab it
	TSC2200WriteADCReg(PORT_SCAN_VALUE);

	// write to the keypad control register
	// iData = 0x0820;
	iData = (TSC_CMD_WRITE | TSC_CMD_KEY);
	iData2 = newValue;

	TwoWordSPITransaction(&iData, &iData2);

	// Bg 20FEB02 - now that we have written to the KEY REG we can shut down the port scan.
	//				and we do this after we have release the mutex so the other func can grab it
	TSC2200StopConversions();
}


// Bg 14FEB02
unsigned __int16 TSC2200ReadKeyMaskReg(void)
{
	unsigned __int16 iData = 0, iData2 = 0;
	unsigned __int16 iTempData = 0;
	unsigned __int16 iTempData2 = 0;

	//iData = 0x8A00;	// read from KEY MASK Reg
	iData = (TSC_CMD_READ | TSC_CMD_KPMASK);
	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	return iData2;
}


// 20FEB02
void TSC2200WriteKeyMaskReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 = 0;

	// Bg 20FEB02 - in order to avoid the bug mentioned in the REV B. Errata for th TSC2200
	//				we must make sure that the internal clock is running when we write to this reg.

	// so, we'll start a long slow port scan.
	// we want to do this before we grab the mutex - so that the other function can grab it
	TSC2200WriteADCReg(PORT_SCAN_VALUE);


	//iData = 0x0A00;	// write to the keypad mask register
	iData = (TSC_CMD_WRITE | TSC_CMD_KPMASK);
	iData2 = newValue;

	TwoWordSPITransaction(&iData, &iData2);

	
	// Bg 20FEB02 - now that we have written to the KEY REG we can shut down the port scan.
	//				and we do this after we have release the mutex so the other func can grab it
	TSC2200StopConversions();

}



// Bg 18FEB02
void TSC2200StopConversions(void)
{

	unsigned __int16 iData = 0, iData2 = 0;

	//iData = 0x0800;	// write to ADC
	iData = (TSC_CMD_WRITE | TSC_CMD_ADC);
	iData2 = ADC_STOP_CONVERSIONS;

	TwoWordSPITransaction(&iData, &iData2);
		
}



// Bg 18FEB02
void TSC2200StartConversions(void)
{

	unsigned __int16 iData = 0, iData2 = 0;
	unsigned __int16 iTempData = 0;
	unsigned __int16 iADCData = 0;

//RETAILMSG(1, (TEXT("TSC2200StartConversions\r\n")));	

	//iData = 0x0800;	// write to ADC
	iData = (TSC_CMD_WRITE | TSC_CMD_ADC);
	iData2 = ADC_SETUP_VALUE;

	TwoWordSPITransaction(&iData, &iData2);

}



// Bg 20FEB02
void TSC2200WriteDACReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2=0;

	//iData = 0x0840; // Write to DAC control Register
	iData = (TSC_CMD_WRITE | TSC_CMD_DACCTL);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);

}


// Bg 20FEB02
void TSC2200WriteREFReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 =0;

	//iData = 0x0860; // Write to REF control Register
	iData = (TSC_CMD_WRITE | TSC_CMD_REF);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);
	
	
}



// Bg 20FEB02
void TSC2200WriteCFGReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 = 0;

	//iData = 0x08A0; // Write to CFG control Register
	iData = (TSC_CMD_WRITE | TSC_CMD_CFG);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);
	
}




// Bg 20FEB02
unsigned __int16 TSC2200ReadDACReg(void)
{
	unsigned __int16 iData = 0, iData2 =0;

	//iData = 0x8840;	// read from DAC
	iData = (TSC_CMD_READ | TSC_CMD_DACCTL);

	iData = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	return iData2;
}




// Bg 20FEB02
unsigned __int16 TSC2200ReadREFReg(void)
{
	unsigned __int16 iData = 0, iData2 = 0;

	//iData = 0x8860;	// read from REF
	iData = (TSC_CMD_READ | TSC_CMD_REF);
	iData2 = 0x0000;
	
	TwoWordSPITransaction(&iData, &iData2);

	return iData2;
}



// Bg 20FEB02
unsigned __int16 TSC2200ReadCFGReg(void)
{
	unsigned __int16 iData = 0, iData2 =0;

	//iData = 0x88A0;	// read from CFG
	iData = (TSC_CMD_READ | TSC_CMD_CFG);
	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	return iData2;
}



// Bg 12SEP02
unsigned __int16 TSC2200ReadCFG2Reg(void)
{
	unsigned __int16 iData = 0;
	unsigned __int16 iData2 =0;

	iData = (TSC_CMD_READ | TSC_CMD_CFG_2);
	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	return iData2;
}



// Bg 12SEP02
void TSC2200WriteCFG2Reg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0;
	unsigned __int16 iData2 =0;

	iData = (TSC_CMD_WRITE | TSC_CMD_CFG_2);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);
	
}



///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///// Start of AUDIO functions to control the TSC2301 /////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////

// Bg 18JUL02
void TSC2301WriteAudioControlReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 =0;

	//RETAILMSG(1, (TEXT("TSC2301WriteAudioControlReg(%X);\r\n"), newValue));

	iData = (TSC_CMD_WRITE | TSC_AUDIO_CONTROL);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);

	
}



// Bg 18JUL02
unsigned __int16 TSC2301ReadAudioControlReg(void)
{
	unsigned __int16 iData = 0, iData2 =0;


	iData = (TSC_CMD_READ | TSC_AUDIO_CONTROL);

	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	//RETAILMSG(1, (TEXT("TSC2301ReadAudioControlReg() = %X;\r\n"), iData2));

	return iData2;
}


// Bg 18JUL02
void TSC2301WriteAudioByPassReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 =0;

	//RETAILMSG(1, (TEXT("TSC2301WriteAudioByPassReg(%X);\r\n"), newValue));

	iData = (TSC_CMD_WRITE | TSC_AUDIO_BYPASS);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);
	

	
}



// Bg 18JUL02
unsigned __int16 TSC2301ReadAudioByPassReg(void)
{
	unsigned __int16 iData = 0, iData2 =0;

	iData = (TSC_CMD_READ | TSC_AUDIO_BYPASS);

	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	//RETAILMSG(1, (TEXT("TSC2301ReadAudioByPassReg() = %X;\r\n"), iData2));

	return iData2;
}


// Bg 18JUL02
void TSC2301WriteAudioADCVolumeReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 =0;

	//RETAILMSG(1, (TEXT("TSC2301WriteAudioADCVolumeReg(%X);\r\n"), newValue));

	iData = (TSC_CMD_WRITE | TSC_AUDIO_ADC_VOLUME);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);
	
	
}


// Bg 18JUL02
unsigned __int16 TSC2301ReadAudioADCVolumeReg(void)
{
	unsigned __int16 iData = 0, iData2 =0;

	iData = (TSC_CMD_READ | TSC_AUDIO_ADC_VOLUME);

	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	//RETAILMSG(1, (TEXT("TSC2301ReadAudioADCVolumeReg() = %X;\r\n"), iData2));

	return iData2;
}


// Bg 18JUL02
void TSC2301WriteAudioDACVolumeReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 =0;

	//RETAILMSG(1, (TEXT("TSC2301WriteAudioDACVolumeReg(%X);\r\n"), newValue));

	iData = (TSC_CMD_WRITE | TSC_AUDIO_DAC_VOLUME);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);
	
	
}



// Bg 18JUL02
unsigned __int16 TSC2301ReadAudioDACVolumeReg(void)
{
	unsigned __int16 iData = 0, iData2 =0;

	iData = (TSC_CMD_READ | TSC_AUDIO_DAC_VOLUME);

	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	//RETAILMSG(1, (TEXT("TSC2301ReadAudioDACVolumeReg() = %X;\r\n"), iData2));

	return iData2;
}


// Bg 18JUL02
void TSC2301WriteAudioKeyClickReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 =0;

	//RETAILMSG(1, (TEXT("TSC2301WriteAudioKeyClickReg(%X);\r\n"), newValue));

	iData = (TSC_CMD_WRITE | TSC_AUDIO_KEYCLICK);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);
	
	
}



// Bg 18JUL02
unsigned __int16 TSC2301ReadAudioKeyClickReg(void)
{
	unsigned __int16 iData = 0, iData2 =0;

	iData = (TSC_CMD_READ | TSC_AUDIO_KEYCLICK);

	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	//RETAILMSG(1, (TEXT("TSC2301ReadAudioKeyClickReg() = %X;\r\n"), iData2));

	return iData2;
}


// Bg 18JUL02
void TSC2301WriteAudioPowerReg(unsigned __int16 newValue)
{
	unsigned __int16 iData = 0, iData2 =0;

	//RETAILMSG(1, (TEXT("TSC2301WriteAudioPowerReg(%X);\r\n"), newValue));

	iData = (TSC_CMD_WRITE | TSC_AUDIO_POWER);
	iData2 = newValue; 

	TwoWordSPITransaction(&iData, &iData2);
	
	
}



// Bg 18JUL02
unsigned __int16 TSC2301ReadAudioPowerReg(void)
{
	unsigned __int16 iData = 0, iData2 =0;

	iData = (TSC_CMD_READ | TSC_AUDIO_POWER);

	iData2 = 0x0000;

	TwoWordSPITransaction(&iData, &iData2);

	//RETAILMSG(1, (TEXT("TSC2301ReadAudioPowerReg() = %X;\r\n"), iData2));

	return iData2;
}


// Bg 18JUL02

⌨️ 快捷键说明

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