📄 cmx990.h
字号:
/****h* DE9901/cmx990.h* COPYRIGHT* (c) 2004-2005 Mobitex Technology AB - All rights reserved* * Redistribution and use in source and binary forms, with or without modification,* are permitted provided that the following conditions are met:* * 1. Redistributions of source code must retain the above copyright notice,* this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice,* this list of conditions and the following disclaimer in the documentation* and/or other materials provided with the distribution.* * 3. The name Mobitex Technology AB may not be used to endorse or promote products* derived from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY MOBITEX TECHNOLOGY AB "AS IS" AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT* SHALL MOBITEX TECHNOLOGY AB BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.** AUTHOR* MPN/Kjell Westerberg* HISTORY* Changes in the file are recorded in this list.* Ver: Date: Responsible: Comment:* R1A01 2005-01-26 Kjell Westerberg Approved.* R1A05 2005-03-17 Kjell Westerberg Added Timer1_Isr.* R1A06 2005-04-08 Kjell Westerberg Changed argument types in set frequency.* DESCRIPTION* This module is used when communicating with the CMX990 chip.***/#ifndef CMX990_H_#define CMX990_H_/******************************* * Structs and Enums *******************************/typedef enum { ADC_PA_TEMP_SENSE = 0, ADC_TEMP_SENSE, ADC_TX_POW, ADC_3, ADC_EXT, ADC_IN} AdcSelect_t;typedef enum { VREF_PA = 0, DAC_TCXO, DAC_EXT, DAC_OUT} DacSelect_t;typedef enum { MAIN_M = 0, MAIN_N, AUX_M, AUX_N} PllSelect_t;/* Different modes for the CMX driver */typedef enum { CMX_ModeIdle, /* Do nothing */ CMX_ModeTxPrbs, /* Send PRBS */ CMX_ModeRxPrbs, /* Receive PRBS */ CMX_ModeRxPrbsStart, /* Start Receive PRBS */ CMX_ModeRxPrbsSync, /* Search for PRBS sync */ CMX_ModeAquireChannel /* Aquire IQ and AFC for the channel */} CMX_Modes;/* Allowed Control Words for function CMX_Write */enum CMX_ControlWordsWrite { CMX_DataBufferTx = 0, CMX_Command = 1, CMX_Control = 2, CMX_Mode = 3, CMX_PowerUp1 = 4, CMX_PowerUp2 = 5, CMX_Dac0Lsb = 8, CMX_Dac0Msb = 9, CMX_Dac1Lsb = 10, CMX_Dac1Msb = 11, CMX_Dac2Lsb = 12, CMX_Dac2Msb = 13, CMX_Dac3Lsb = 14, CMX_Dac3Msb = 15, CMX_RamDacControl = 16, CMX_AuxAdcControl1 = 17, CMX_AuxAdcControl2 = 18, CMX_AuxRamData1Lsb = 20, CMX_AuxRamData1Msb = 21, CMX_AuxRamData2Lsb = 22, CMX_AuxRamData2Msb = 23, CMX_AnalogSetup1W = 24, CMX_AnalogSetup2W = 25, CMX_SpecialCommand = 26, CMX_SpecialData0LsbW = 27, CMX_SpecialData0MsbW = 28, CMX_SpecialData1LsbW = 29, CMX_SpecialData1MsbW = 30, CMX_MainPllMLsb = 32, CMX_MainPllMMsb = 33, CMX_MainPllNLsb = 34, CMX_MainPllNNsb = 35, CMX_MainPllNMsb = 36, CMX_AuxPllMLsb = 37, CMX_AuxPllMMsb = 38, CMX_AuxPllNLsb = 39, CMX_AuxPllNMsb = 40};/* Allowed Control Words for function CMX_Read */enum CMX_ControlWordsRead { CMX_DataBufferRx = 0, CMX_Status1 = 1, CMX_DataQuality = 2, CMX_Status2 = 3, CMX_FreqOffset = 4, CMX_ContRSSI = 5, CMX_Adc0Lsb = 8, CMX_Adc0Msb = 9, CMX_Adc1Lsb = 10, CMX_Adc1Msb = 11, CMX_Adc2Lsb = 12, CMX_Adc2Msb = 13, CMX_Adc3Lsb = 14, CMX_Adc3Msb = 15, CMX_Adc4Lsb = 16, CMX_Adc4Msb = 17, CMX_Adc5Lsb = 18, CMX_Adc5Msb = 19, CMX_AnalogSetup1R = 24, CMX_AnalogSetup2R = 25, CMX_SpecialData0LsbR = 27, CMX_SpecialData0MsbR = 28, CMX_SpecialData1LsbR = 29, CMX_SpecialData1MsbR = 30};/* Data structure for storing received PRBS bits. */typedef struct { u32 totalNoBits; u32 errorNoBits;} CMX_PrbsStatistics_t;/* Functions */void CMX_Init(void);void CMX_Reset(void);cyg_uint32 CMX_Isr(cyg_vector_t vector, cyg_addrword_t data);cyg_uint32 Timer1_Isr(cyg_vector_t vector, cyg_addrword_t data);u8 CMX_Read(enum CMX_ControlWordsRead cmd);u8 CMX_ReadWriteReg(enum CMX_ControlWordsWrite cmd, bool cmxRead);void CMX_Write(enum CMX_ControlWordsWrite cmd, u8 cmdData);u16 CMX_ReadAdc(AdcSelect_t adcNumber);void CMX_WriteDac(DacSelect_t dacNo, u16 dacValue);u16 CMX_ReadDac(DacSelect_t dacNo);void CMX_WritePll(PllSelect_t pllNo, u32 value);u32 CMX_ReadPll(PllSelect_t pllNo);void CMX_GetPrbsStat(CMX_PrbsStatistics_t *prbs);void CMX_ResetPrbs(void);void CMX_RxActive(bool state, bool minSet);void CMX_TxActive(bool state, bool minSet);void CMX_SetRxFreq(s32 freq);void CMX_SetTxFreq(s32 freq);s32 CMX_GetRxFreq(void);s32 CMX_GetTxFreq(void);/* Returns the frequency boundaries. */void CMX_GetFreqBand(s32 *minRxFreq, s32 *maxRxFreq, s32 *minTxFreq, s32 *maxTxFreq);/* Returns the radio reference clock frequency. */s32 CMX_RefClock(void);void CMX_GetFreqParameters(s32 *rx, s32 *tx, bool *txHighSide);#endif /* CMX990_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -