📄 mt2063.c
字号:
**** Binary** Value Returned Value Approx Temp** ---------------------------------------------** MT2063_T_0C 0000 0C** MT2063_T_10C 0001 10C** MT2063_T_20C 0010 20C** MT2063_T_30C 0011 30C** MT2063_T_40C 0100 40C** MT2063_T_50C 0101 50C** MT2063_T_60C 0110 60C** MT2063_T_70C 0111 70C** MT2063_T_80C 1000 80C** MT2063_T_90C 1001 90C** MT2063_T_100C 1010 100C** MT2063_T_110C 1011 110C** MT2063_T_120C 1100 120C** MT2063_T_130C 1101 130C** MT2063_T_140C 1110 140C** MT2063_T_150C 1111 150C**** Returns: status:** MT_OK - No errors** MT_COMM_ERR - Serial bus communications error** MT_INV_HANDLE - Invalid tuner handle** MT_ARG_NULL - Null pointer argument passed** MT_ARG_RANGE - Argument out of range**** Dependencies: MT_ReadSub - Read byte(s) of data from the two-wire bus** MT_WriteSub - Write byte(s) of data to the two-wire bus**** Revision History:**** SCR Date Author Description** -------------------------------------------------------------------------** 138 06-19-2007 DAD Ver 1.00: Initial, derived from mt2067_b.********************************************************************************/UData_t MT2063_GetTemp(Handle_t h, MT2063_Temperature* value){ UData_t status = MT_OK; /* Status to be returned */ MT2063_Info_t* pInfo = (MT2063_Info_t*) h; if (IsValidHandle(pInfo) == 0) return MT_INV_HANDLE; if (value == NULL) return MT_ARG_NULL; if ((MT_NO_ERROR(status)) && ((pInfo->reg[TEMP_SEL] & 0xE0) != 0x00)) { pInfo->reg[TEMP_SEL] &= (0x1F); status |= MT_WriteSub(pInfo->hUserData, pInfo->address, TEMP_SEL, &pInfo->reg[TEMP_SEL], 1); } if (MT_NO_ERROR(status)) status |= MT_ReadSub(pInfo->hUserData, pInfo->address, TEMP_STATUS, &pInfo->reg[TEMP_STATUS], 1); if (MT_NO_ERROR(status)) *value = (MT2063_Temperature) (pInfo->reg[TEMP_STATUS] >> 4); return (status);}/******************************************************************************** Name: MT2063_GetUserData**** Description: Gets the user-defined data item.**** Parameters: h - Tuner handle (returned by MT2063_Open)**** Returns: status:** MT_OK - No errors** MT_INV_HANDLE - Invalid tuner handle** MT_ARG_NULL - Null pointer argument passed**** Dependencies: USERS MUST CALL MT2063_Open() FIRST!**** The hUserData parameter is a user-specific argument** that is stored internally with the other tuner-** specific information.**** For example, if additional arguments are needed** for the user to identify the device communicating** with the tuner, this argument can be used to supply** the necessary information.**** The hUserData parameter is initialized in the tuner's** Open function to NULL.**** See Also: MT2063_Open**** Revision History:**** SCR Date Author Description** -------------------------------------------------------------------------** 138 06-19-2007 DAD Ver 1.00: Initial, derived from mt2067_b.******************************************************************************/UData_t MT2063_GetUserData(Handle_t h, Handle_t* hUserData){ UData_t status = MT_OK; /* Status to be returned */ MT2063_Info_t* pInfo = (MT2063_Info_t*) h; /* Verify that the handle passed points to a valid tuner */ if (IsValidHandle(pInfo) == 0) status = MT_INV_HANDLE; if (hUserData == NULL) status |= MT_ARG_NULL; if (MT_NO_ERROR(status)) *hUserData = pInfo->hUserData; return (status);}/********************************************************************************** Name: MT2063_SetReceiverMode**** Description: Set the MT2063 receiver mode**** --------------+----------------------------------------------** Mode 0 : | MT2063_CABLE_QAM** Mode 1 : | MT2063_CABLE_ANALOG** Mode 2 : | MT2063_OFFAIR_COFDM** Mode 3 : | MT2063_OFFAIR_COFDM_SAWLESS** Mode 4 : | MT2063_OFFAIR_ANALOG** Mode 5 : | MT2063_OFFAIR_8VSB** --------------+----+----+----+----+-----+--------------------** (DNC1GC & DNC2GC are the values, which are used, when the specific ** DNC Output is selected, the other is always off) **** |<---------- Mode -------------->|** Reg Field | 0 | 1 | 2 | 3 | 4 | 5 |** ------------+-----+-----+-----+-----+-----+-----+** RFAGCen | OFF | OFF | OFF | OFF | OFF | OFF ** LNARin | 0 | 0 | 3 | 3 | 3 | 3** FIFFQen | 1 | 1 | 1 | 1 | 1 | 1** FIFFq | 0 | 0 | 0 | 0 | 0 | 0 ** DNC1gc | 0 | 0 | 0 | 0 | 0 | 0** DNC2gc | 0 | 0 | 0 | 0 | 0 | 0** GCU Auto | 1 | 1 | 1 | 1 | 1 | 1** LNA max Atn | 31 | 31 | 31 | 31 | 31 | 31** LNA Target | 44 | 43 | 43 | 43 | 43 | 43** ign RF Ovl | 0 | 0 | 0 | 0 | 0 | 0** RF max Atn | 31 | 31 | 31 | 31 | 31 | 31** PD1 Target | 36 | 36 | 38 | 38 | 36 | 38** ign FIF Ovl | 0 | 0 | 0 | 0 | 0 | 0** FIF max Atn | 5 | 5 | 5 | 5 | 5 | 5** PD2 Target | 40 | 33 | 42 | 42 | 33 | 42****** Parameters: pInfo - ptr to MT2063_Info_t structure** Mode - desired reciever mode**** Usage: status = MT2063_SetReceiverMode(hMT2063, Mode);**** Returns: status:** MT_OK - No errors** MT_COMM_ERR - Serial bus communications error**** Dependencies: MT2063_SetReg - Write a byte of data to a HW register.** Assumes that the tuner cache is valid.**** Revision History:**** SCR Date Author Description** -------------------------------------------------------------------------** 138 06-19-2007 DAD Ver 1.00: Initial, derived from mt2067_b.** N/A 01-10-2007 PINZ Added additional GCU Settings, FIFF Calib will be triggered** 155 10-01-2007 DAD Ver 1.06: Add receiver mode for SECAM positive** modulation** (MT2063_ANALOG_TV_POS_NO_RFAGC_MODE)** N/A 10-22-2007 PINZ Ver 1.07: Changed some Registers at init to have ** the same settings as with MT Launcher ** N/A 10-30-2007 PINZ Add SetParam VGAGC & VGAOI** Add SetParam DNC_OUTPUT_ENABLE** Removed VGAGC from receiver mode, ** default now 1 ** N/A 10-31-2007 PINZ Ver 1.08: Add SetParam TAGC, removed from rcvr-mode** Add SetParam AMPGC, removed from rcvr-mode** Corrected names of GCU values** reorganized receiver modes, removed, ** (MT2063_ANALOG_TV_POS_NO_RFAGC_MODE)** Actualized Receiver-Mode values** N/A 11-12-2007 PINZ Ver 1.09: Actualized Receiver-Mode values** N/A 11-27-2007 PINZ Improved buffered writing** 01-03-2008 PINZ Ver 1.10: Added a trigger of BYPATNUP for ** correct wakeup of the LNA after shutdown** Set AFCsd = 1 as default** Changed CAP1sel default** 01-14-2008 PINZ Ver 1.11: Updated gain settings********************************************************************************/static UData_t MT2063_SetReceiverMode(MT2063_Info_t* pInfo, MT2063_RCVR_MODES Mode){ UData_t status = MT_OK; /* Status to be returned */ U8Data val; UData_t longval; if (Mode >= MT2063_NUM_RCVR_MODES) status = MT_ARG_RANGE; /* RFAGCen */ if (MT_NO_ERROR(status)) { val = (pInfo->reg[PD1_TGT] & (U8Data)~0x40) | (RFAGCEN[Mode] ? 0x40 : 0x00); if( pInfo->reg[PD1_TGT] != val ) { status |= MT2063_SetReg(pInfo, PD1_TGT, val); } } /* LNARin */ if (MT_NO_ERROR(status)) { val = ( pInfo->reg[CTRL_2C] & (U8Data)~0x03) | LNARIN[Mode]; if( pInfo->reg[CTRL_2C] != val ) { status |= MT2063_SetReg(pInfo, CTRL_2C, val); } } /* FIFFQEN and FIFFQ */ if (MT_NO_ERROR(status)) { val = (pInfo->reg[FIFF_CTRL2] & (U8Data)~0xF0) | (FIFFQEN[Mode] << 7) | (FIFFQ[Mode] << 4); if( pInfo->reg[FIFF_CTRL2] != val ) { status |= MT2063_SetReg(pInfo, FIFF_CTRL2, val); /* trigger FIFF calibration, needed after changing FIFFQ */ val = (pInfo->reg[FIFF_CTRL] | (U8Data)0x01); status |= MT2063_SetReg(pInfo, FIFF_CTRL, val); val = (pInfo->reg[FIFF_CTRL] & (U8Data)~0x01); status |= MT2063_SetReg(pInfo, FIFF_CTRL, val); } } /* DNC1GC & DNC2GC */ status |= MT2063_GetParam(pInfo, MT2063_DNC_OUTPUT_ENABLE, &longval); status |= MT2063_SetParam(pInfo, MT2063_DNC_OUTPUT_ENABLE, longval); /* GCUAUTO */ if (MT_NO_ERROR(status)) { status |= MT2063_SetParam(pInfo, MT2063_GCU_AUTO, GCUAUTO[Mode]); } /* acLNAmax */ if (MT_NO_ERROR(status)) { status |= MT2063_SetParam(pInfo, MT2063_ACLNA, ACLNAMAX[Mode]); } /* LNATGT */ if (MT_NO_ERROR(status)) { val = ( pInfo->reg[LNA_TGT] & (U8Data)~0x3F) | LNATGT[Mode]; if( pInfo->reg[LNA_TGT] != val ) { status |= MT2063_SetReg(pInfo, LNA_TGT, val); } } /* ACRF */ if (MT_NO_ERROR(status)) { status |= MT2063_SetParam(pInfo, MT2063_ACRF, ACRFMAX[Mode]); } /* PD1TGT */ if (MT_NO_ERROR(status)) { val = ( pInfo->reg[PD1_TGT] & (U8Data)~0x3F) | PD1TGT[Mode]; if( pInfo->reg[PD1_TGT] != val ) { status |= MT2063_SetReg(pInfo, PD1_TGT, val); } } /* FIFATN */ if (MT_NO_ERROR(status)) { status |= MT2063_SetParam(pInfo, MT2063_ACFIF, ACFIFMAX[Mode]); } /* PD2TGT */ if (MT_NO_ERROR(status)) { val = ( pInfo->reg[PD2_TGT] & (U8Data)~0x3F) | PD2TGT[Mode]; if( pInfo->reg[PD2_TGT] != val ) { status |= MT2063_SetReg(pInfo, PD2_TGT, val); } } /* Ignore ATN Overload */ if (MT_NO_ERROR(status)) { val = (pInfo->reg[LNA_TGT] & (U8Data)~0x80) | (RFOVDIS[Mode] ? 0x80 : 0x00); if( pInfo->reg[LNA_TGT] != val ) { status |= MT2063_SetReg(pInfo, LNA_TGT, val); } } /* Ignore FIF Overload */ if (MT_NO_ERROR(status)) { val = (pInfo->reg[PD1_TGT] & (U8Data)~0x80) | (FIFOVDIS[Mode] ? 0x80 : 0x00); if( pInfo->reg[PD1_TGT] != val ) { status |= MT2063_SetReg(pInfo, PD1_TGT, val); } } if (MT_NO_ERROR(status)) pInfo->rcvr_mode = Mode;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -