📄 tsc_ssp.c
字号:
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
///// 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 + -