- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
FmM5181Adj.c
资源名称:SDK_M5661.rar [点击查看]
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:28k
源码类别:
压缩解压
开发平台:
C++ Builder
- /*==========================================================================
- Copyright (c) 2004 ALi Corporation. All Rights Reserved
- Target : FM
- Applying Source File : FmM5181.c, FmTEA5767.c
- content:
- History:
- Created by David Chiu 2004/4/27
- Modified by Dennis Shih 2006/01/16
- ==========================================================================*/
- #include <DP8051XP.H>
- #include "TypeDef.h"
- #include "Const.h"
- #include "Reg5661.h"
- #include "Common.h"
- #if(FM_MODULE==1) //Walace060126#2
- #if(_C_MODE_)
- #include "OLED.h"
- #include "OledString.h"
- #endif
- #include "FmM5181.h"
- #include "I2C.h"
- #define POWER_ON_COMMAND_COUNT 49
- const ctrl_word_setting code PowerOnSetting[POWER_ON_COMMAND_COUNT] = {
- { CW( 6, 1), 16 }, { CW( 7, 1), 0 },
- { CW( 0, 1), 1 }, { CW( 0, 0), 1 },
- //V3
- //{ CW( 14, 1), 7 }, { CW( 14, 0), 126 },
- { CW( 1, 1), 6 }, { CW( 1, 0), 0 },
- { CW( 2, 1), 12 }, { CW( 2, 0), 187 },
- //#if defined REF_CLK_32K //==============================================
- { CW( 3, 1), 32 }, { CW( 3, 0), 34 },
- /*#elif defined REF_CLK_13M
- { CW( 3, 1), 32 }, { CW( 3, 0), 66 },
- #elif defined REF_CLK_26M
- { CW( 3, 1), 32 }, { CW( 3, 0), 194 },
- #else
- //#error "Reference Clock Definition Error!"
- #endif *///=================================================================
- { CW( 4, 1), 194 }, { CW( 4, 0), 183 },
- { CW( 5, 1), 0 }, { CW( 5, 0), 255 },
- { CW( 8, 1), 70 }, { CW( 8, 0), 2 },
- { CW( 9, 1), 4 }, { CW( 9, 0), 2 },
- { CW( 10, 1), 48 }, { CW( 10, 0), 192 },
- { CW( 11, 1), 32 }, { CW( 11, 0), 0 },
- { CW( 12, 1), 49 }, { CW( 12, 0), 128 },
- { CW( 13, 1), 0 }, { CW( 13, 0), 3 },
- //#if defined( _32KHz_ )
- { CW( 14, 1), 3 }, { CW( 14, 0), 126 },
- /*#else /// power on internal DAC
- { CW( 14, 1), 0 }, { CW( 14, 0), 126 },
- #endif*/
- { CW( 15, 1), 138 }, { CW( 15, 0), 170 },
- { CW( 16, 1), 68 }, { CW( 16, 0), 68 },
- //{ CW( 16, 1), 0 }, { CW( 16, 0), 0 },
- { CW( 17, 1), 136 }, { CW( 17, 0), 136 },
- { CW( 18, 1), 135 }, { CW( 18, 0), 7 },
- { CW( 19, 1), 0 }, { CW( 19, 0), 170 },
- { CW( 20, 1), 0 }, { CW( 20, 0), 0 },
- { CW( 21, 1), PILOT_TONE}, { CW( 21, 0), 30 },
- { CW( 23, 1), 0 }, { CW( 23, 0), 0 },
- { CW( 24, 1), 1 }, { CW( 24, 0), 0 },
- { CW( 6, 1), 16 }, { CW( 7, 1), 0 },
- { CW( 7, 0), 7 },
- };
- /*
- #define POWER_OFF_COMMAND_COUNT 2
- const ctrl_word_setting code PowerOffSetting[POWER_OFF_COMMAND_COUNT] = {
- { CW( 1, 1), 32 }, { CW( 5, 0), 0 },
- };
- */
- #define POWER_OFF_COMMAND POWER_OFF_COMMAND_COUNT
- const ctrl_word_operation xdata PowerOffProc[POWER_OFF_COMMAND_COUNT] = {
- { CW( 1, 1), 0xDF, 0x20 }, /// CW1 [13:13] 1
- { CW( 5, 0), 0x00, 0x00 }, /// CW5 [7:0] 0
- { CW( 3, 0), 0xFE, 0x01 }, /// CW3 [0:0] 1
- { CW( 10, 0), 0xE0, 0x1F }, /// CW10 [4:0] 1
- { CW( 12, 0), 0xFE, 0x01 }, /// CW12 [0:0] 1
- { CW( 12, 1), 0xFD, 0x02 }, /// CW12 [9:9] 1
- { CW( 13, 0), 0xFE, 0x01 }, /// CW13 [0:0] 1
- { CW( 19, 1), 0xFE, 0x01 }, /// CW19 [8:8] 1
- { CW( 21, 0), 0xDF, 0x20 }, /// CW21 [5:5] 1
- { CW( 14, 1), 0x00, 0xFF }, /// CW14 [15:8] 1
- };
- #define CAL_PLL_COMMAND_COUNT 59
- const ctrl_word_operation code CalPLLProcess[CAL_PLL_COMMAND_COUNT] = {
- { CW( 1, 1), 0xDF, 0x00 }, /// CW1 [13:13] 0
- { CW( 3, 0), 0xDD, 0x22 }, /// CW3 [5:5] 1, /// CW3 [1:1] 1
- { CW( 3, 1), 0x1F, 0xE0 }, /// CW3 [15:13] 7
- { CW( 6, 1), 0x0F, 0x10 }, /// CW6 [15:12] 1
- { CW( 7, 1), 0xFC, 0x00 }, /// CW7 [9:8] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 3, 0), 0x1E, 0x20 }, /// CW3 [7:5] 1, /// CW3 [0:0] 0
- /*#elif defined REF_CLK_13M
- { CW( 3, 0), 0x1E, 0x40 }, /// CW3 [7:5] 2, /// CW3 [0:0] 0
- #elif defined REF_CLK_26M
- { CW( 3, 0), 0x1E, 0xC0 }, /// CW3 [7:5] 6, /// CW3 [0:0] 0
- #endif *///=================================================================
- { CW(103, 1), 0xF8, 0x04 }, /// CW103 [10:8] 4
- { CW(103, 0), 0xC0, 0x20 }, /// CW103 [5:0] 32
- { CW(101, 0), 0xF8, 0x04 }, /// CW101 [2:0] 4
- { CW( 12, 0), 0x9E, 0x60 }, /// CW12 [0:0] 0, /// CW12 [6:5] 3
- { CW( 12, 1), 0xFE, 0x01 }, /// CW12 [8:8] 1
- { CW( 14, 0), 0x6F, 0x10 }, /// CW14 [4:4] 1, /// CW14 [7:7] 0
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 6, 1), 0x00, 0x66 }, /// CW6 [15:8] 102
- { CW( 25, 1), 0xF0, 0x03 }, /// CW25 [11:8] 3
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x7A }, /// CW25 [7:0] 122
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #endif*/ //=================================================================
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif *///=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0, reset CW1_0
- { CW( 6, 1), 0x0F, 0x10 }, /// CW6 [15:12] 1
- { CW( 7, 1), 0xFC, 0x00 }, /// CW7 [9:8] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 3, 0), 0x1E, 0x20 }, /// CW3 [7:5] 1, /// CW3 [0:0] 0
- /*#elif defined REF_CLK_13M
- { CW( 3, 0), 0x1E, 0x40 }, /// CW3 [7:5] 2, /// CW3 [0:0] 0
- #elif defined REF_CLK_26M
- { CW( 3, 0), 0x1E, 0xC0 }, /// CW3 [7:5] 6, /// CW3 [0:0] 0
- #endif*/ //=================================================================
- { CW( 12, 0), 0x9E, 0x60 }, /// CW12 [6:5] 3, /// CW12 [0:0] 0
- { CW( 12, 1), 0xFE, 0x01 }, /// CW12 [8:8] 1
- { CW( 14, 0), 0x6F, 0x10 }, /// CW14 [4:4] 1, /// CW14 [7:7] 0
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 6, 1), 0x00, 0x76 }, /// CW6 [15:8] 118
- { CW( 25, 1), 0xF0, 0x03 }, /// CW25 [11:8] 3
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x7A }, /// CW25 [7:0] 122
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #endif*/ //=================================================================
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif *///=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0, reset CW1_0
- { CW( 6, 1), 0x0F, 0x10 }, /// CW6 [15:12] 1
- { CW( 7, 1), 0xFC, 0x00 }, /// CW7 [9:8] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 3, 0), 0x1E, 0x20 }, /// CW3 [7:5] 1, /// CW3 [0:0] 0
- /*#elif defined REF_CLK_13M
- { CW( 3, 0), 0x1E, 0x40 }, /// CW3 [7:5] 2, /// CW3 [0:0] 0
- #elif defined REF_CLK_26M
- { CW( 3, 0), 0x1E, 0xC0 }, /// CW3 [7:5] 6, /// CW3 [0:0] 0
- #endif *///=================================================================
- { CW( 12, 0), 0x9E, 0x60 }, /// CW12 [6:5] 3, /// CW12 [0:0] 0
- { CW( 12, 1), 0xFE, 0x01 }, /// CW12 [8:8] 1
- { CW( 14, 0), 0x6F, 0x10 }, /// CW14 [4:4] 1, /// CW14 [7:7] 0
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- { CW( 6, 1), 0x00, 0x56 }, /// CW6 [15:8] 86
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 25, 1), 0xF0, 0x03 }, /// CW25 [11:8] 3
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x7A }, /// CW25 [7:0] 122
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #endif *///=================================================================
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif*/ //=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0, reset CW1_0
- { CW( 14, 0), 0x6F, 0x80 }, /// CW14 [4:4] 0, [7:7] 1
- { CW( 12, 0), 0x1F, 0x80 }, /// CW12 [6:5] 0, /// CW12 [7:7] 1
- { CW( 12, 1), 0xDF, 0x00 }, /// CW12 [13:13] 0
- { CW( 13, 0), 0x7F, 0x00 }, /// CW13 [7:7] 0
- { CW( 23, 1), 0xE3, 0x00 }, /// CW23 [12:10] 0
- };
- #define CAL_DEMOD_I_COMMAND_COUNT 41
- const ctrl_word_operation code CalDemodIProcess[CAL_DEMOD_I_COMMAND_COUNT] = {
- { CW( 1, 1), 0xDF, 0x00 }, /// CW1 [13:13] 0
- { CW( 10, 0), 0xF7, 0x00 }, /// CW10 [3:3] 0
- { CW( 8, 1), 0xF7, 0x00 }, /// CW8 [11:11] 0
- { CW( 8, 1), 0xFE, 0x01 }, /// CW8 [8:8] 1
- { CW( 9, 1), 0xFE, 0x01 }, /// CW9 [8:8] 1
- { CW( 10, 0), 0xBF, 0x00 }, /// CW10 [6:6] 0
- { CW( 10, 0), 0xBF, 0x40 }, /// CW10 [6:6] 1
- //#if defined REF_CLK_32K //==============================================
- { CW( 3, 0), 0x1C, 0x22 }, /// CW3 [7:5] 1, /// CW3 [1:0] 2
- /*#elif defined REF_CLK_13M
- { CW( 3, 0), 0x1C, 0x42 }, /// CW3 [7:5] 2, /// CW3 [1:0] 2
- #elif defined REF_CLK_26M
- { CW( 3, 0), 0x1C, 0xC2 }, /// CW3 [7:5] 6, /// CW3 [1:0] 2
- #endif *///=================================================================
- { CW( 3, 1), 0xDF, 0x20 }, /// CW3 [13:13] 1
- { CW( 12, 1), 0xFD, 0x00 }, /// CW12 [9:9] 0
- { CW( 12, 0), 0xFE, 0x00 }, /// CW12 [0:0] 0
- { CW( 6, 1), 0x00, 0x1A }, /// CW6 [15:8] 26
- { CW( 7, 1), 0xFC, 0x00 }, /// CW7 [9:8] 0
- { CW( 98, 1), 0xE0, 0x00 }, /// CW98 [12:8] 0
- { CW( 98, 0), 0xF0, 0x00 }, /// CW98 [3:0] 0
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- { CW( 6, 1), 0x00, 0xAA }, /// CW6 [15:8] 170
- { CW( 25, 1), 0x00, 0x02 }, /// CW25 [15:8] 2+
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x22 }, /// CW25 [7:0] 34
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #endif *///=================================================================
- { CW( 98, 1), 0x00, 0x00 }, /// CW98 [15:8] 0
- { CW( 98, 0), 0x00, 0x00 }, /// CW98 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x22 }, /// CW25 [7:0] 34
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #endif *///=================================================================
- { CW( 6, 1), 0x00, 0xAA }, /// CW6 [15:8] 170
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif *///=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0: reset CW1_0
- { CW( 98, 0), 0x00, 0x00 }, /// CW98 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x22 }, /// CW25 [7:0] 34
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #endif *///=================================================================
- { CW( 6, 1), 0x0F, 0xB0 }, /// CW6 [15:12] 11
- { CW( 7, 1), 0x00, 0x03 }, /// CW7 [15:8] 3
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif *///=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0: reset CW1_0
- };
- #define CAL_DEMOD_Q_COMMAND_COUNT 41
- const ctrl_word_operation code CalDemodQProcess[CAL_DEMOD_Q_COMMAND_COUNT] = {
- { CW( 1, 1), 0xDF, 0x00 }, /// CW1 [13:13] 0
- { CW( 10, 0), 0xF7, 0x00 }, /// CW10 [3:3] 0
- { CW( 8, 1), 0xF7, 0x00 }, /// CW8 [11:11] 0
- { CW( 8, 1), 0xFE, 0x01 }, /// CW8 [8:8] 1
- { CW( 9, 1), 0xFE, 0x01 }, /// CW9 [8:8] 1
- { CW( 10, 0), 0xBF, 0x00 }, /// CW10 [6:6] 0
- { CW( 10, 0), 0xBF, 0x40 }, /// CW10 [6:6] 1
- //#if defined REF_CLK_32K //==============================================
- { CW( 3, 0), 0x1C, 0x22 }, /// CW3 [7:5] 1, /// CW3 [1:0] 2
- /*#elif defined REF_CLK_13M
- { CW( 3, 0), 0x1C, 0x42 }, /// CW3 [7:5] 2, /// CW3 [1:0] 2
- #elif defined REF_CLK_26M
- { CW( 3, 0), 0x1C, 0xC2 }, /// CW3 [7:5] 6, /// CW3 [1:0] 2
- #endif *///=================================================================
- { CW( 3, 1), 0xDF, 0x20 }, /// CW3 [13:13] 1
- { CW( 12, 1), 0xFD, 0x00 }, /// CW12 [9:9] 0
- { CW( 12, 0), 0xFE, 0x00 }, /// CW12 [0:0] 0
- { CW( 6, 1), 0x00, 0x1A }, /// CW6 [15:8] 28
- { CW( 7, 1), 0xFC, 0x00 }, /// CW7 [9:8] 0
- { CW( 99, 1), 0xE0, 0x00 }, /// CW99 [12:8] 0
- { CW( 99, 0), 0xF0, 0x00 }, /// CW99 [3:0] 0
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- { CW( 6, 1), 0x00, 0xCC }, /// CW6 [15:8] 204
- { CW( 25, 1), 0x00, 0x02 }, /// CW25 [15:8] 2
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x22 }, /// CW25 [7:0] 34
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #endif *///=================================================================
- { CW( 99, 1), 0x00, 0x00 }, /// CW99 [15:8] 0
- { CW( 99, 0), 0x00, 0x00 }, /// CW99 [7:0] 0
- /*#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x22 }, /// CW25 [7:0] 34
- #elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #endif *///=================================================================
- { CW( 6, 1), 0x00, 0xCC }, /// CW6 [15:8] 204
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif*/ //=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0: reset CW1_0
- { CW( 99, 0), 0x00, 0x00 }, /// CW99 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x22 }, /// CW25 [7:0] 34
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x11 }, /// CW25 [7:0] 17
- #endif*/ //=================================================================
- { CW( 6, 1), 0x0F, 0xD0 }, /// CW6 [15:12] 13
- { CW( 7, 1), 0x00, 0x03 }, /// CW7 [15:8] 3
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif *///=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0: reset CW1_0
- };
- #define CAL_PILOT_COMMAND_COUNT 37
- const ctrl_word_operation code CalPilotProcess[CAL_PILOT_COMMAND_COUNT] = {
- { CW( 10, 1), 0xFB, 0x00 }, /// CW10 [10:10] 0
- { CW( 10, 0), 0x6F, 0x80 }, /// CW10 [7:7] 1, [4:4] 0
- { CW( 11, 1), 0xDF, 0x00 }, /// CW11 [13:13] 0
- { CW( 11, 1), 0xDF, 0x20 }, /// CW11 [13:13] 1
- { CW( 1, 1), 0xDF, 0x00 }, /// CW1 [13:13] 0
- { CW( 10, 0), 0xF7, 0x00 }, /// CW10 [3:3] 0
- { CW( 8, 1), 0xF7, 0x00 }, /// CW8 [11:11] 0
- { CW( 8, 1), 0xFE, 0x01 }, /// CW8 [8:8] 1
- { CW( 9, 1), 0xFE, 0x01 }, /// CW9 [8:8] 1
- { CW( 10, 0), 0xBF, 0x00 }, /// CW10 [6:6] 0
- { CW( 10, 0), 0xBF, 0x40 }, /// CW10 [6:6] 1
- //#ifdef REF_CLK_32K //==============================================
- { CW( 3, 0), 0x1C, 0x22 }, /// CW3 [7:5] 1, /// CW3 [1:0] 2
- /*#elif REF_CLK_13M
- { CW( 3, 0), 0x1C, 0x42 }, /// CW3 [7:5] 2, /// CW3 [1:0] 2
- #elif REF_CLK_26M
- { CW( 3, 0), 0x1C, 0xC2 }, /// CW3 [7:5] 6, /// CW3 [1:0] 2
- #endif *///=================================================================
- { CW( 3, 1), 0xDF, 0x20 }, /// CW3 [13:13] 1
- { CW( 12, 1), 0xFD, 0x00 }, /// CW12 [9:9] 0
- { CW( 12, 0), 0xFE, 0x00 }, /// CW12 [0:0] 0
- { CW( 6, 1), 0x00, 0x1E }, /// CW6 [15:8] 30
- { CW( 7, 1), 0xFC, 0x00 }, /// CW7 [9:8] 0
- { CW( 97, 1), 0xE0, 0x00 }, /// CW97 [12:8] 0
- { CW( 97, 0), 0xF0, 0x00 }, /// CW97 [3:0] 0
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 6, 0), 0xFC, 0x01 }, /// CW6 [1:0] 1
- { CW( 6, 1), 0x00, 0xEE }, /// CW6 [15:8] 238
- { CW( 25, 1), 0x00, 0x03 }, /// CW25 [15:8] 3
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x7A }, /// CW25 [7:0] 122
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #endif *///=================================================================
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif *///=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0, reset CW1_0
- //#if defined REF_CLK_32K //==============================================
- { CW( 25, 0), 0x00, 0x7A }, /// CW25 [7:0] 122
- /*#elif defined REF_CLK_13M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #elif defined REF_CLK_26M
- { CW( 25, 0), 0x00, 0x5E }, /// CW25 [7:0] 94
- #endif *///=================================================================
- { CW( 6, 1), 0x0F, 0xF0 }, /// CW6 [15:12] 15
- { CW( 7, 1), 0xFC, 0x03 }, /// CW7 [9:8] 3
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0
- //#if defined REF_CLK_32K //==============================================
- { CW( 5, 0), 0xEF, 0x10 }, /// CW5 [4:4] 1
- /*#elif defined REF_CLK_13M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #elif defined REF_CLK_26M
- { CW( 5, 0), 0xEF, 0x00 }, /// CW5 [4:4] 0
- #endif *///=================================================================
- { CW( 6, 1), 0xFE, 0x01 }, /// CW6 [8:8] 1
- { CW(127, 1), 0x00, 0x01 }, /// <----------------- polling SARIFG
- { CW( 1, 0), 0x00, 0x00 }, /// CW1 [7:0] 0, reset CW1_0
- };
- /*--------------------------------------------------------------------------
- Desciption:
- Write 5 bytes to TEA5767HN chip ,no subaddress byte is needed
- Arguments:
- void
- Global arguments:
- xbFmWriteData[]: Data write to TEA5767 chip
- Returns:
- TRUE or FALSE
- --------------------------------------------------------------------------*/
- /* M5181 does not support sequential write. */
- BOOL M5181_WriteByte(BYTE CW, BYTE bData) large
- {
- BYTE bI, dataRead;
- BYTE i = 0;
- if (CW == 255)
- {
- do {
- kal_sleep_task(I2C_WRITE_SPEED);
- M5181_ReadByte(CW(1,0), &dataRead);
- if (i++ == 50) //error terminate
- return FALSE;
- // ASSERT(0);
- } while ((dataRead & bData)==0);
- return TRUE;
- }
- #if(USE_I2C)
- obCLKI2CMCTRL |= 0x80; //clock Enable //Renshuo050322#A
- obMODSEL2 |= 0x08; //I2CM Enable
- obI2CMAADDR = M5181_WRITE; // device ID
- obI2CSLADDR = CW; // control word
- obI2CFIFO = bData; // data to be written
- obI2CMACMD = (I2C_CMD_SINGLE | I2C_CMD_CURRENT | I2C_CMD_WRITE_MODE | I2C_CMD_DATA_LEN(1));
- bI = I2cWaitBusy();
- obMODSEL2 &= 0xF7; //I2CM Disable
- obCLKI2CMCTRL &= 0x7F; //clock Disable
- #elif defined USE_3_WIRE
- SerialCommTxByte(CW, bData);
- #else
- //#error "Must define USE_I2C or USE_3_WIRE"
- #endif
- return bI;
- }
- /*--------------------------------------------------------------------------
- Desciption:
- Read 5 bytes from TEA5767HN chip ,no subaddress byte is needed
- Arguments:
- void
- Global arguments:
- void
- Returns:
- TRUE or FALSE
- --------------------------------------------------------------------------*/
- BOOL M5181_ReadByte(BYTE CW, BYTE *bData) large
- {
- if (CW == 255) {
- *bData = 0;
- return TRUE;
- }
- #if(USE_I2C)
- //Renshuo050322#A
- obCLKI2CMCTRL |= 0x80; //clock Enable
- obMODSEL2 |= 0x08; //I2CM Enable
- obI2CMAADDR = M5181_WRITE;
- obI2CSLADDR = CW; // control word
- obI2CMACMD = ( I2C_CMD_SINGLE | I2C_CMD_RANDOM | I2C_CMD_READ_MODE | I2C_CMD_DATA_LEN(1));
- if(I2cWaitBusy())
- {
- *bData=obI2CFIFO;
- obMODSEL2 &= 0xF7; //I2CM Disable
- obCLKI2CMCTRL &= 0x7F; //clock Disable
- //Renshuo050322#A
- // obCLKI2CMCTRL |= 0x80; //clock Enable
- // obMODSEL2 |= 0x08; //I2CM Enable
- return TRUE;
- }
- else
- {
- obMODSEL2 &= 0xF7; //I2CM Disable
- obCLKI2CMCTRL &= 0x7F; //clock Disable
- return FALSE;
- }
- #elif defined USE_3_WIRE
- SerialCommRxByte(CW, bData);
- #else
- //#error "Must define USE_I2C or USE_3_WIRE"
- #endif
- }
- void FMDrv_PowerOnReset(void) large
- {
- BYTE tmp_reg;
- // int16 i;
- BYTE i;
- /* /// Rey: fix the Top 6227 noise affected by GPIO 54.
- GPIO_WriteIO(0, 54);
- SerialCommInit();
- SerialCommCryClkOn();*/
- //---------------------------------------------------------
- /*======================================
- //Setting the M5181 Power to pull low, then pull high
- ======================================*/
- /*
- PowerOffOn();
- //---------------------------------------------------------
- */
- /// Power On
- for (i=0; i<POWER_ON_COMMAND_COUNT; i++) {
- M5181_WriteByte(PowerOnSetting[i].addr, PowerOnSetting[i].value);
- }
- for (i=0; i<POWER_ON_COMMAND_COUNT; i++) {
- M5181_ReadByte(PowerOnSetting[i].addr, &tmp_reg);
- }
- /// Calibrate PLL
- for (i=0; i<CAL_PLL_COMMAND_COUNT; i++) {
- M5181_ReadByte(CalPLLProcess[i].addr, &tmp_reg);
- tmp_reg &= CalPLLProcess[i].and;
- tmp_reg |= CalPLLProcess[i].or;
- M5181_WriteByte(CalPLLProcess[i].addr, tmp_reg);
- /*
- WrTrFa=M5181_WriteByte(CalPLLProcess[i].addr, tmp_reg);
- kk++;
- if(WrTrFa==FALSE)
- /// j = 1;
- while(1) j=j;
- */
- }
- /// Calibrate demod I
- for (i=0; i<CAL_DEMOD_I_COMMAND_COUNT; i++) {
- M5181_ReadByte(CalDemodIProcess[i].addr, &tmp_reg);
- tmp_reg &= CalDemodIProcess[i].and;
- tmp_reg |= CalDemodIProcess[i].or;
- M5181_WriteByte(CalDemodIProcess[i].addr, tmp_reg);
- }
- /// Calibrate demod Q
- for (i=0; i<CAL_DEMOD_Q_COMMAND_COUNT; i++) {
- M5181_ReadByte(CalDemodQProcess[i].addr, &tmp_reg);
- tmp_reg &= CalDemodQProcess[i].and;
- tmp_reg |= CalDemodQProcess[i].or;
- M5181_WriteByte(CalDemodQProcess[i].addr, tmp_reg);
- }
- /// Calibrate Pilot
- {
- BYTE k;
- for (i=0; i<CAL_PILOT_COMMAND_COUNT; i++) {
- M5181_ReadByte(CalPilotProcess[i].addr, &tmp_reg);
- tmp_reg &= CalPilotProcess[i].and;
- tmp_reg |= CalPilotProcess[i].or;
- M5181_WriteByte(CalPilotProcess[i].addr, tmp_reg);
- }
- M5181_ReadByte(CW( 97, 0), &tmp_reg);
- if (tmp_reg < 14)
- k = tmp_reg+1;
- else
- k = 15;
- M5181_ReadByte(CW( 6, 1), &tmp_reg);
- tmp_reg &= 0x0F;
- tmp_reg |= 0x10;
- M5181_WriteByte(CW( 6, 1), tmp_reg);
- M5181_WriteByte(CW( 7, 1), 0);
- M5181_WriteByte(CW( 97, 0), k);
- M5181_ReadByte(CW( 3, 0), &tmp_reg);
- tmp_reg &= 0x1F;
- //#if defined REF_CLK_32K
- tmp_reg |= 0x20;
- /*#elif defined REF_CLK_13M
- tmp_reg |= 0x40;
- #elif defined REF_CLK_26M
- tmp_reg |= 0xC0;
- #endif
- */
- M5181_WriteByte(CW( 3, 0), tmp_reg);
- //TEST
- M5181_ReadByte(CW( 3, 0), &tmp_reg);
- //------------------------------------
- M5181_ReadByte(CW( 3, 1), &tmp_reg);
- tmp_reg &= 0xFB;
- M5181_WriteByte(CW( 3, 1), tmp_reg);
- }
- M5181_ReadByte(CW(8, 1), &tmp_reg);
- tmp_reg &= 0xFE;
- M5181_WriteByte(CW(8, 1), tmp_reg);
- M5181_ReadByte(CW(9, 1), &tmp_reg);
- tmp_reg &= 0xFE;
- M5181_WriteByte(CW(9, 1), tmp_reg);
- /*
- M5181_ReadByte(CW( 18, 1), &tmp_reg);
- tmp_reg |= 0x10;
- M5181_WriteByte(CW(18, 1), tmp_reg); /// CW14 [10:10] 0
- */
- //FMDrv_SetVolumeLevel(0xFF);
- /// Calibrate VCO
- // ASSERT(M5181_SetFreq(97500, HI_INJECTION));
- //M5181_SetFreq(97500, FM_HI_INJEC);
- // SettingFM();
- kal_sleep_task(FM_POWERON_DELAY);
- }
- #if 0 //Chris change from #if(0) ->#if 0 for Source Insight view
- void ReadRssiIFCnt(void) large
- {
- // BYTE tmp_reg;
- OledShowNumber(M5181_GetCurRSSI(), 3, 1, 4);
- OledShowNumber(M5181_GetCurIFCnt(IF_MEASURE_COUNT_EXP), 3, 96, 4);
- // M5181_ReadByte(CW(16, 0), &tmp_reg);
- // M5181_WriteByte(CW(16, 0), tmp_reg+1);
- // OledShowNumber(tmp_reg, 3, 1, 4);
- // M5181_ReadByte(CW(16, 1), &tmp_reg);
- // M5181_WriteByte(CW(16, 1), tmp_reg+1);
- // OledShowNumber(tmp_reg, 3, 96, 4);
- // M5181_ReadByte(CW(18, 1), &tmp_reg);
- // OledShowNumber(tmp_reg, 3, 96, 4);
- }
- #endif //(_C_MODE_)
- #endif