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

📄 pt2314.c

📁 关于收音功能代码,并且显示在OSD和VFD上
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************/
/***************           MTK CONFIDENTIAL            ****************/
/***************                                       ****************/
/***************   Description : PT2314 control        ****************/
/***************                                       ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer :                             ****************/
/**********************************************************************/

#pragma NOAREGS

#include "general.h"
#include "pt2314.h"
#ifdef PT2314
//#define PLAYER_DEBUG
#ifdef PLAYER_DEBUG
extern xdata DWRD _dCreatedWB ;
extern void DRS232LogS(char *pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#endif
//for I2C control related function declaration
extern BOOL fgI2CStart(BYTE bDevice) large;
extern BOOL fgI2CSend(BYTE bValue) large;
extern void vI2CStop(void) large;
extern void vI2CDelay2us(BYTE bValue) large;
extern structFlagI2C xdata sFlagI2C;
#ifdef MCU_ENCRYPT
extern BOOL fgDDCSend(BYTE bValue) large;
extern void vDDCRead(BYTE *prValue, BOOL fgSeq_Read) large;
extern BOOL fgDDCStart(BYTE bDevice) large;
extern void vDDCStop(void) large;
#endif

code BYTE _bVolImageTable[] = {
#ifdef AV_CENTER
0x3f,0x2b,0x26,0x20,0x1e,0x1a,0x18,0x16,0x14,0x12,0x10,0xf,0xe,0xd,0xc,0x0a,0x08,0x06,0x03,0x01,0x00
#else
0x3f,0x2e,0x2b,0x29,0x26,0x23,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x14,0x12,0x10,0xf,0xe,0xd,0xc,0xb,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00
#endif
}; 
#ifdef YXT_LOST_PATCH
BYTE xdata _rewrite1;
BYTE xdata _rewrite2;
BYTE xdata _rewrite3;
BYTE xdata _rewrite4;
BYTE xdata _rewrite5;
BYTE xdata _rewrite6;
#endif
/************************************************************************
     Function : vPT2314Write(BYTE bData)
  Description : 
    Parameter : 
    Return    : 
************************************************************************/
#if 0//def  PT2314

/************************************************************************
     Function : BOOL fgI2CStart(BYTE bValue, BOOL fgRead)
  Description : Start Routine
                timing : SCL ^^^^|___|^|___|^|__~__|^|___|^|___|^|__~
                         SDA ^^|____/A6 \_/A5 \_~_/A0 \_/R/W\_/ACK\_~
                              (S)
                               |<--- start condition
    Parameter : bDevice(7-bit slave address) + fgRead(R/W bit)
    Return    : TRUE  : successful with ACK from slave
                FALSE  : bus (SCL = 0) or ACK failure
************************************************************************/
BOOL fgI2CStart_PT2314(BYTE bDevice) large
{
  BYTE bBusDelayTemp = BUS_DELAY;

  HI_SDATA_PT2314();            // make sure SDA released
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
  HI_SCLK_PT2314();            // make sure SCL released
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
#ifdef PT2314
ACK_SCLK_PT2314();
#ifdef PLAYER_DEBUG
 DRS232LogB((bReadBIM(BIM_RIODIH)&IOH_SDATA1), 0, 0, 0);
#endif
while((!bReadBIM(BIM_RIODIH)&IOH_SDATA1)&&(--bBusDelayTemp))
#else
  while((!SCL) && (--bBusDelayTemp))
#endif  	
  {
    ;  // simple bus abritration
  }

  if(!bBusDelayTemp)
  {
    return(FALSE);           // time out protection & timing delay
  }

//    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
  LO_SDATA_PT2314();          // start condition here
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
  LO_SCLK_PT2314();          // ready for clocking
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us

  return(fgI2CSend_PT2314(bDevice));// slave address & R/W transmission
}
/************************************************************************
     Function : BOOL fgI2CSend(BYTE bValue)
  Description : Send Routine
                timing : SCL ___|^|___|^|__~__|^|___|^|__
                         SDA __/D7 \_/D6 \_~_/D0 \_/ACK\_
    Parameter : bValue(8-bit output data)
    Return    : TRUE  : successful with ACK from slave
                FALSE  : bus (SCL = 0) or ACK failure
************************************************************************/
BOOL fgI2CSend_PT2314(BYTE bValue) large
{
  BYTE bBitMask = 0x80;

// step 1 : 8-bit data transmission
  while(bBitMask)
  {
    if(bBitMask & bValue)
    {
      HI_SDATA_PT2314();
    }
    else
    {
      LO_SDATA_PT2314();
    }

    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
    HI_SCLK_PT2314();                    // data clock in
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
    LO_SCLK_PT2314();                    // ready for next clock in
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
    bBitMask = bBitMask >> 1;   // MSB first & timing delay
  }

  // step 2 : slave acknowledge check
  HI_SDATA_PT2314();                      // release SDA for ACK polling
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
  HI_SCLK_PT2314();                      // start ACK polling
  bBitMask = ACK_DELAY;         // time out protection
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us

  if(!sFlagI2C.ADAC)            // ADAC don't care about ACK
  {
	#ifdef  PT2314
  	ACK_SDATA_PT2314();
	#ifdef PLAYER_DEBUG
 DRS232LogB((bReadBIM(BIM_RIODIH)&IOH_SDATA2), 0, 0, 1);
#endif

	while((bReadBIM(BIM_RIODIH)&IOH_SDATA2)&&(--bBitMask))
	#else	
	while(SDA && --bBitMask)
	#endif	
    {
      ;  // wait for ACK, SDA=0 or bitMask=0->jump to this loop
    }
  }

//    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
  LO_SCLK_PT2314();                     // end ACK polling
    vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us

  if(bBitMask)
  {
    return(TRUE);              // return TRUE if ACK detected
  }
  else
  {
    return(FALSE);             // return FALSE if time out
  }
}

/************************************************************************
     Function : void vI2CStop(void)
  Description : Stop Routine
                timing : SCL ___|^^^^^
                         SDA xx___|^^^
                                 (P)
                                  |<--- stop condition
    Parameter : NONE
    Return    : NONE
************************************************************************/
void vI2CStop_PT2314(void) large
{
  LO_SDATA_PT2314();          // ready for stop condition
  vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
  HI_SCLK_PT2314();          // ready for stop condition
  vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
  HI_SDATA_PT2314();          // stop condition here
  vI2CDelay2us(1);
//    SRVDelay10us();             // timing delay 2us
}

#endif
/************************************************************************
     Function : vPT2314Write(BYTE bData)
  Description : 
    Parameter : 
    Return    : 
************************************************************************/
#ifdef   MCU_ENCRYPT
BOOL vPT2314Write(BYTE Data) large
{
  sFlagI2C.fgBusBusy = 1;
  if(!fgDDCStart(PT2314_ADDR))     // Write Command
  {
    sFlagI2C.fgBusBusy = 0;
    return(FALSE);
  }
  if(!fgDDCSend(Data)) // Data Content Write
  {
    sFlagI2C.fgBusBusy = 0;
    return(FALSE);
  }
  vDDCStop();
  sFlagI2C.fgBusBusy = 0;
  return(TRUE);
}
#else
BOOL vPT2314Write(BYTE Data) large
{
  sFlagI2C.fgBusBusy = 1;
  if(!fgI2CStart(PT2314_ADDR))     // Write Command
  {
    sFlagI2C.fgBusBusy = 0;
    return(FALSE);
  }
  if(!fgI2CSend(Data)) // Data Content Write
  {
    sFlagI2C.fgBusBusy = 0;
    return(FALSE);
  }

⌨️ 快捷键说明

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