FmM5181.h
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:4k
源码类别:

压缩解压

开发平台:

C++ Builder

  1. /*==========================================================================
  2. Copyright (c) 2004 ALi Corporation. All Rights Reserved
  3. Target : FM
  4. Applying Source File : FmM5181.c
  5. content: 
  6. History: 
  7. Modified by Dennis Shih 2006/01/16
  8. ==========================================================================*/
  9. #ifdef _FM_M5181_H_
  10. #define EXTERN
  11. #else
  12. #define EXTERN extern
  13. #endif
  14. #define _32KHz_   // M5181 use the oscillator be a clock source. 
  15. #define USE_I2C 1
  16. #define VCO_DELAY_TIME 30 //VCO Delay Time >= 25
  17. #define I2C_WRITE_SPEED 2  // I2C Writed Delay Control >=2
  18. #define FM_POWERON_DELAY 20 // Power On Reset Delay Time for Fm 
  19. #define PILOT_TONE  7  // Seting the CW(21,1) Register CW(21,1) = 0xh (DREF); 
  20. #define VOLUME_LEVEL 3 //Set Volume level
  21. //M5181 define
  22. /* General propose constant */
  23. #define PRESET_IF             140   /// Preset IF: 140 khz
  24. #define FM_TUNER_GRID         10 //Dennis060517#1
  25. #define SET_FREQ_FAIL         0xFF
  26. #define RSSI_CHECK_FAIL       2
  27. #define M5181                96    /// Device ID of M5181 = 96
  28. #define OP_WRITE              0     /// Write to M5181
  29. #define OP_READ               1     /// Read from M5181
  30. #define M5181_WRITE          192
  31. #define M5181_READ           193
  32. #define LO_INJECTION          0
  33. #define HI_INJECTION          1
  34. #define FM_STEP_AWAY_SIZE     40 //Dennis060517#1
  35. #define IF_MEASURE_COUNT_EXP  3     /// 2^3=8
  36. //Dennis060517#1 start
  37. #define PilotThreshold   3 ///Auto Search Pilot TilotThreshold 
  38. #define UpLimit 31 ///30 //Auto Search IF Count Upper Limit
  39. #define LowerLimit 31 //Auto Search IF Count Lower Limit
  40. //Dennis060517#1 end
  41. #define MeanLevel 274 //Auto Search IF Mean Level      
  42. #define CriterienHigh TRUE 
  43. #ifdef  _32KHz_ 
  44.  #define REF_CLK_32K
  45.  //#define REF_CLK_26M
  46.  #define PRESET_IF_CNT         274   /// 140000 * 64 / 32768 = 273.4375
  47.  #define PRESET_IF_DELTA       30
  48.  #define PRESET_IF_SWING       40
  49.  #define IF_CONVERT_FACTOR     512   /// 32768 / 64 = 512
  50. #else
  51. // #define REF_CLK_32K
  52.  #define REF_CLK_26M
  53.  #define PRESET_IF_CNT        265   /// 140000 * 49152 / 26000000 = 264.66
  54.  #define PRESET_IF_DELTA       29
  55.  #define PRESET_IF_SWING       39
  56.  #define IF_CONVERT_FACTOR     529   /// 26000000 / 49152 = 529
  57. #endif //_32KHz_
  58. /* M5181 Control Word */
  59. #define CW(_A,_B)  (const)(BYTE)((_A << 1) + _B)
  60. #define POWER_OFF_COMMAND_COUNT  10
  61. typedef struct {
  62.    BYTE addr;
  63.    BYTE value;
  64. } ctrl_word_setting;
  65. typedef struct {
  66.    BYTE addr;
  67.    BYTE and;
  68.    BYTE or;
  69. } ctrl_word_operation;
  70. EXTERN API BOOL gfStereoSet; //Walace060217#1
  71. EXTERN API BOOL gfRealStereo;
  72. EXTERN API const ctrl_word_setting code PowerOnSetting[];
  73. //EXTERN API const ctrl_word_setting code PowerOffSetting[];
  74. EXTERN API ctrl_word_operation xdata PowerOffProc[];
  75. EXTERN API const ctrl_word_operation code CalPLLProcess[];
  76. EXTERN API const ctrl_word_operation code CalDemodIProcess[];
  77. EXTERN API const ctrl_word_operation code CalDemodQProcess[];
  78. EXTERN API const ctrl_word_operation code CalPilotProcess[];
  79. EXTERN API bit M5181_FmInit(void);
  80. EXTERN API bit M5181_FmSetFreq(void);
  81. EXTERN API BOOL M5181_FmSearch(BOOL fSearchUp, XBYTE signalvl, XWORD IF_Mean, XBYTE IF_Swing_High, XBYTE IF_Swing_Low, BOOL Criterian_High);
  82. //EXTERN API bit M5181_FmCheckStereo(void);
  83. EXTERN API void M5181_FmSetStereo(BOOL fStereo); //Walace060217#1
  84. EXTERN API void M5181_FmEnd(void);
  85. EXTERN API void M5181_FmSetMute(void);
  86. EXTERN API BOOL M5181_WriteByte(BYTE CW, BYTE bData) large;
  87. EXTERN API BOOL M5181_ReadByte(BYTE CW, BYTE *rdata) large;
  88. EXTERN API void FMDrv_PowerOnReset(void) large;
  89. #if 0 //Chris change from #if(0) ->#if 0 for Source Insight view
  90. EXTERN API void FMDrv_SetVolumeLevel(BYTE level) large;
  91. #endif
  92. EXTERN API BYTE FMDrv_GetSigLvl(WORD TmpFreq ) large;
  93. EXTERN API LONG M5181_GetCurIFCnt(BYTE count_index) large;
  94. EXTERN API BOOL FMDrv_ValidStop(XWORD freq, XBYTE signalvl, XWORD IF_Mean, XBYTE IF_SWing_High, XBYTE IF_Swing_Low,BOOL Criterion_High) large;
  95. EXTERN BYTE M5181_GetCurRSSI(void) large;
  96. EXTERN void kal_sleep_task(DWORD dwMSec);
  97. #if 0 //Chris change from #if(0) ->#if 0 for Source Insight view
  98. EXTERN void M5181_WrReDelay (XDWORD DelayDist,XDWORD DelayOrd) large;
  99. #endif
  100. //-----------------------------------------------------
  101. EXTERN void ReadRssiIFCnt(void) large;
  102. #undef EXTERN