MBED driver for Max1471.
MAX1471.h
- Committer:
- Abdullah.Turan@IST-LT-37344.maxim-ic.internal
- Date:
- 2019-10-04
- Revision:
- 0:99e9397112f0
File content as of revision 0:99e9397112f0:
/* * MAX1471.h * * Created on: Dec 17, 2018 * Author: Erman.Komurcu */ #ifndef MAX1471_MAX1471_H_ #define MAX1471_MAX1471_H_ #include "mbed.h" #include "rtos.h" #include "MAX1471_regs.h" class MAX1471 { private: max1471_reg_map_t *reg; SPI *spi_handler; DigitalOut *ssel; DigitalOut *bLED; DigitalIn *dio; int spi_mode; int modulation; /*!< Current modulation mode */ float oscFrequency; /*!< Extern oscillator frequency */ public: typedef enum { PWR_CFG_ADDR = 0x00, CFG_ADDR = 0x01, CTRL_ADDR = 0x02, OSC_FREQ_ADDR = 0x03, OFF_TMR_UP_ADDR = 0x04, OFF_TMR_DWN_ADDR = 0x05, CPU_REC_ADDR = 0x06, RF_ST_UP_ADDR = 0x07, RF_ST_DWN_ADDR = 0x08, STAT_ADDR = 0x09, AGC_DWL_TMR_ADDR = 0x0A, } register_address_t; typedef enum { ASK = 0, FSK, BOTH } modulation_type_t; //Constructors MAX1471(DigitalOut *cs); /* PUBLIC FUNCTION DECLARATIONS */ /** * @brief Read from a register. * * @param[in] reg Address of a register to be read. * @param[out] value Pointer to save result value. * @param[in] len Size of result to be read. * * @returns 0 on success, negative error code on failure. */ int read_register(uint8_t reg, uint8_t *value, uint8_t len); /** * @brief Write to a register. * * @param[in] reg Address of a register to be written. * @param[out] value Pointer of value to be written to register. * @param[in] len Size of result to be written. * * @returns 0 on success, negative error code on failure. */ int write_register(uint8_t reg, const uint8_t *value, uint8_t len); /** * @brief Write to a register. * * @param[in] reg Address of a register to be written. * @param[out] value Value to be written to register. * @param[in] len Size of result to be written. * * @returns 0 on success, negative error code on failure. */ int write_register(uint8_t reg, const uint8_t value, uint8_t len); /** * @brief Set 3-Wire or 4-Wire SPI * * @param[in] type Type of SPI interface * 0 -> 3-Wire SPI interface (default) * 1 -> 4-Wire SPI interface (DOUT_FSK) enabled * 2 -> 4-Wire SPI interface (DOUT_ASK) enabled * * @returns 0 on success, negative error code on failure. */ int set_spi_type(uint8_t type); /** * @brief ASK peak detector management * * @param[in] enable Requested status of ASK Peak Detector * * @returns 0 on success, negative error code on failure. */ int ASKPeakDetectorEnable(bool enable); /** * @brief FSK peak detector management * * @param[in] enable Requested status of FSK Peak Detector * * @returns 0 on success, negative error code on failure. */ int FSKPeakDetectorEnable(bool enable); /** * @brief ASK base band receiver management * * @param[in] enable Requested status of ASK base band receiver * * @returns 0 on success, negative error code on failure. */ int ASKBaseBandReceiverEnable(bool enable); /** * @brief FSK base band receiver management * * @param[in] enable Requested status of FSK base band receiver * * @returns 0 on success, negative error code on failure. */ int FSKBaseBandReceiverEnable(bool enable); /** * @brief RF Mixer on/off management * * @param[in] enable Requested status of RF mixer * * @returns 0 on success, negative error code on failure. */ int RFMixerEnable(bool enable); /** * @brief Automatic gain controller on/off management * * @param[in] enable Requested status of AGC * * @returns 0 on success, negative error code on failure. */ int AGCEnable(bool enable); /** * @brief Low noise amplifier on/off management * * @param[in] enable Requested status of LNA * * @returns 0 on success, negative error code on failure. */ int LNAEnable(bool enable); /** * @brief 4-wire SPI MISO pin assignment to FSK data pin * * @param[in] enable Requested status of DOUT as FSK data pin * * @returns 0 on success, negative error code on failure. */ int SetFDATAasDOUTPin(bool enable); /** * @brief 4-wire SPI MISO pin assignment to ASK data pin * * @param[in] enable Requested status of DOUT as ASK data pin * * @returns 0 on success, negative error code on failure. */ int SetADATAasDOUTPin(bool enable); /** * @brief Long FSK calibration on/off management * * @param[in] enable Requested status of longer FSK calibration mode * * @returns 0 on success, negative error code on failure. */ int LongerFSKCalibrationEnable(bool enable); /** * @brief Discontinuous receive mode on/off management * * @param[in] enable Requested status of discontinuous receive mode * * @returns 0 on success, negative error code on failure. */ int DRXEnable(bool enable); /** * @brief LNA's low or high gain mode selection * * @param[in] isHighGain Requested gain mode is high gain or low gain * * @returns 0 on success, negative error code on failure. */ int LNAGainState(bool isHighGain); /** * @brief FSK Calibration starter * * @param[in] enable Start or stop FSK calibration * * @returns 0 on success, negative error code on failure. */ int FSKCalibrationDone(bool enable); /** * @brief Get AGC Dwell timer value * * @param[out] valuePtr Pointer to AGC Dwell timer value * * @returns 0 on success, negative error code on failure. */ int GetAGCDwellTimer( unsigned char *valuePtr ); /** * @brief Set AGC Dwell timer value * * @param[in] value Desired value of AGC Dwell timer * * @returns 0 on success, negative error code on failure. */ int SetAGCDwellTimer( unsigned char value ); /** * @brief Poll timer calibration starter * * @param[in] enable Start or stop poll timer calibration * * @returns 0 on success, negative error code on failure. */ int PollTimerCalibrationEnable(bool enable); /** * @brief Track mode for ASK peak detector on/off control * * @param[in] enable Enable/disable track mode of ASK peak detector * * @returns 0 on success, negative error code on failure. */ int ASKPeakDetectorTrackEnable(bool enable); /** * @brief Track mode for FSK peak detector on/off control * * @param[in] enable Enable/disable track mode of FSK peak detector * * @returns 0 on success, negative error code on failure. */ int FSKPeakDetectorTrackEnable(bool enable); /** * @brief Locks AGC's current state * * @returns 0 on success, negative error code on failure. */ int LockAGCCurrentState(); /** * @brief Gets calibration status of poll timer calibration * * @param[out] valuePtr Pointer to current status of poll timer calibration * * @returns 0 on success, negative error code on failure. */ int GetPollTimerCalibrationDoneStatus( unsigned char *valuePtr ); /** * @brief Gets calibration status of FSK calibration * * @param[out] valuePtr Pointer to current status of FSK calibration * * @returns 0 on success, negative error code on failure. */ int GetFSKCalibrationDoneStatus( unsigned char *valuePtr ); /** * @brief Gets clock alive status * * @param[out] valuePtr Pointer to clock alive status * * @returns 0 on success, negative error code on failure. */ int GetClockAliveStatus( unsigned char *valuePtr ); /** * @brief Gets AGC's current status * * @param[out] valuePtr Pointer to AGC's current status * * @returns 0 on success, negative error code on failure. */ int GetAGCStatus( unsigned char *valuePtr ); /** * @brief Get whether PLL is locked or not * * @param[out] valuePtr Pointer to PLL's current status * * @returns 0 on success, negative error code on failure. */ int GetPLLLockStatus( unsigned char *valuePtr ); /** * @brief Get off timer prescale value * * @param[out] valuePtr Pointer to off timer prescale value * * @returns 0 on success, negative error code on failure. */ int GetOffTimerPrescale( unsigned char *valuePtr ); /** * @brief Set off timer prescale value * * @param[in] value Desired value of off timer prescale * * @returns 0 on success, negative error code on failure. */ int SetOffTimerPrescale( unsigned char value ); /** * @brief Set rf settle timer value * * @param[in] value Desired value of off timer rf settle timer * * @returns 0 on success, negative error code on failure. */ int SetRFSettleTimer( unsigned short int value ); /** * @brief Get rf settle timer value * * @param[out] valuePtr Pointer to rf settle timer value * * @returns 0 on success, negative error code on failure. */ int GetRFSettleTimer( unsigned short int *valuePtr ); /** * @brief Set off timer value * * @param[in] value Desired value of off timer * * @returns 0 on success, negative error code on failure. */ int SetOFFTimer( unsigned short int value ); /** * @brief Get off timer value * * @param[out] valuePtr Pointer to off timer value * * @returns 0 on success, negative error code on failure. */ int GetOFFTimer( unsigned short int *valuePtr ); /** * @brief Set CPU recovery timer value * * @param[in] value Desired value of CPU recovery timer * * @returns 0 on success, negative error code on failure. */ int SetCPURecoveryTimer( unsigned char value ); /** * @brief Get CPU recovery timer value * * @param[out] valuePtr Pointer to CPU recovery timer value * * @returns 0 on success, negative error code on failure. */ int GetCPURecoveryTimer( unsigned char *valuePtr ); /** * @brief Set RF oscillator frequency * * @param[in] value Desired frequency * * @returns 0 on success, negative error code on failure. */ int SetRFOscillatorFreq( float frequency ); /** * @brief Get RF oscillator frequency * * @param[out] freqPtr Pointer to RF oscillator frequency * * @returns 0 on success, negative error code on failure. */ int GetRFOscillatorFreq( float *freqPtr ); /** * @brief Reset the chip * * @returns 0 on success, negative error code on failure. */ int reset(); /** * @brief NOP command * * @returns 0 on success, negative error code on failure. */ int nop(); /** * @brief Initialize the chip * * @returns 0 on success, negative error code on failure. */ int InitMAX1471(); int PrepMAX1471RX(); int PrepMAX1471RX( modulation_type_t modType ); int PrepMAX1471RX_DRX(); /** * @brief Prepare MAX1471's sleep mode * * @param[in] enable Sleep mode enable/disable * * @returns 0 on success, negative error code on failure. */ int PrepMAX1471Sleep(bool enable); }; extern const uint32_t pmu_program_sample_data_in[]; extern const uint32_t pmu_program_stop_buff1_filling[]; extern const uint32_t pmu_program_stop_buff0_filling[]; extern const uint32_t pmu_program_start_buff1_filling[]; extern const uint32_t pmu_program_save_current_data_to_buffer0[]; extern const uint32_t pmu_program_save_current_data_to_buffer1[]; extern const uint32_t pmu_program_sample_0[]; extern const uint32_t pmu_program_sample_1[]; #endif /* MAX1471_MAX1471_H_ */