⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ia443x_rf.h

📁 silicon wireless开发套件F920+Si4432原理图,源码
💻 H
字号:
/*
** ============================================================================
**
** FILE
**  IA443x_rf.h
**
** DESCRIPTION
**  Header file for the RF functions
**
** CREATED
**  Silicon Laboratories Hungary Ltd
**
** COPYRIGHT
**  Copyright 2008 Silicon Laboratories, Inc.  
**	http://www.silabs.com
**
** ============================================================================
*/
#ifndef IA443X_RF_H
#define IA443X_RF_H

#include "S8051.h"

                /* ======================================= *
                 *    APPLICATION SPECIFIC DEFINITIONS     *
                 * ======================================= */

//default settings 
#define PREAMBLE_LENGTH				(12)	//in bytes
#define PD_LENGTH					(4)		//in bytes
#define SYNCH_WORD_LENGTH			(2)
#define PAYLOAD_LENGTH				(20)	//must be between 5...64!
#define LENGTH_FIELD				(1)
#define	MAX_PAYLOAD					(64)
#define CRC_LENGTH					(2)



                /* ======================================= *
                 *          D E F I N I T I O N S          *
                 * ======================================= */
/*definitions for the GPIO Configuration 0,1,2 registers*/
//These functions can be multiplex out to the GPIO pins
#define	GPIO_NPOR					(0x00)	//only on GPIO0
#define	GPIO_POR					(0x00)	//only on GPIO1
#define	GPIO_UCLK					(0x00)	//only on GPIO2
#define	GPIO_WUT					(0x01)
#define	GPIO_LBD					(0x02)
#define	GPIO_DIN					(0x03)
#define	GPIO_IT_FALLING				(0x04)
#define	GPIO_IT_RISING				(0x05)
#define GPIO_IT_STATE				(0x06)
#define	GPIO_ADC					(0x07)
#define	GPIO_ATB_IN_N				(0x08)
#define	GPIO_ATB_IN_P				(0x09)
#define GPIO_DOUT					(0x0A)
#define	GPIO_DTB					(0x0B)
#define	GPIO_ATB_OUT_N				(0x0C)
#define	GPIO_ATB_OUT_P				(0x0D)
#define	GPIO_REF					(0x0E)
#define GPIO_TX_CLK					(0x0F)
#define GPIO_TX_DATA_IN				(0x10)
#define GPIO_EXT_RETX				(0x11)
#define GPIO_TX_STATE				(0xD2)
#define GPIO_TX_FIFO_AFULL			(0x13)
#define GPIO_RX_DATA				(0x14)
#define GPIO_RX_STATE				(0xD5)
#define GPIO_RX_FIFO_AFULL			(0x16)
#define GPIO_ANT1_SWITCH			(0xD7)
#define GPIO_ANT2_SWITCH			(0xD8)
#define GPIO_VALID_PREA				(0x19)
#define GPIO_INVALID_PREA			(0x1A)
#define GPIO_SYNCH_WORD_DET			(0x1B)
#define GPIO_CCA					(0x1C)
#define GPIO_VDD					(0x1D)
#define GPIO_GND					(0x1F)

//Register setting default values
#define	RF_MCU_LF_CLK				(0)
#define	RF_MCU_CLOCK_TAIL			(0)
#define	RF_MCU_CLK_RATE				(0)

//definitions for register usage
#define	REG_READ					(0x00)
#define	REG_WRITE					(0x80)

/*definitions for the Modulation Mode Control 2 register*/
//definitions for the TX CLK
#define	TX_CLK_OFF					(0x00)
#define	TX_CLK_ON_GPIO				(0x40)
#define	TX_CLK_ON_SCK				(0x80)
#define TX_CLK_ON_nIRQ				(0xC0)
//definitions for the Modulation source
#define	MOD_DIRECT_VIA_GPIO			(0x00)
#define MOD_DIRECT_VIA_SDI			(0x10)
#define MOD_FIFO					(0x20)
#define MOD_PN9						(0x30)
#define MOD_INVERT_TX				(0x08)
//definition for the modulation type
#define	MOD_TYPE_CW					(0x00)
#define MOD_TYPE_OOK				(0x01)
#define MOD_TYPE_FSK				(0x02)
#define MOD_TYPE_GFSK				(0x03)

/*definitions for the Data Access Control register*/
//definitions for the packet handler
#define TX_PACKET_HANDLER_DIS		(0x00)
#define TX_PACKET_HANDLER_EN		(0x08)
#define RX_PACKET_HANDLER_DIS		(0x00)
#define RX_PACKET_HANDLER_EN		(0x80)
#define LSB_FIRST					(0x40)
#define MSB_FIRST					(0x00)
#define CRC_DIS						(0x00)
#define CRC_CCITT					(0x04)
#define CRC_16						(0x05)
#define CRC_IEC16					(0x06)
#define CRC_BIACHEVA				(0x07)
#define CRC_DATA_ONLY				(0x20)
#define AUTO_PHASE_DETECT_MANCH		(0x10)

/*definitions for the TX Power register*/
#define RF_FULL_POWER				(0x07)

//time definitions @ 8MHz PIC
#define TX_PACKET_LENGTH			(PREAMBLE_LENGTH + SYNCH_WORD_LENGTH + LENGTH_FIELD + MAX_PAYLOAD + CRC_LENGTH + 5)
#define	RX_PD_TIMEOUT				(PREAMBLE_LENGTH + SYNCH_WORD_LENGTH + 4)
#define RX_PACKET_LENGTH			(LENGTH_FIELD + MAX_PAYLOAD + CRC_LENGTH + 3)
#define BYTE_TIME_DIV				(TMR2_12)
#define BYTE_TIME_SW_DIV			(11)
#define RESET_TIMEOUT				(667)		//1ms			
#define RESET_TIMEOUT_DIV			(TMR2_12)
#define RESET_TIMEOUT_SW_DIV		(1)
#define XTAL_WAKE_UP_PERIOD			(3334)		//5ms
#define XTAL_WAKE_UP_PERIOD_DIV		(TMR2_12)
#define XTAL_WAKE_UP_PERIOd_SW_DIV	(1)


                /* ======================================= *
                 *     T Y P E   D E C L A R A T I O N     *
                 * ======================================= */
//RF stack enumerations 
typedef enum _RF_ENUM
{
	RF_OK,			
	RF_ERROR_STATE,
	RF_ERROR_TIMING,
	RF_ERROR_PARAMETER,
	RF_TIMER_IT,			
	RF_EXT_IT,
} RF_ENUM;

typedef enum _RF_STATES
{
	sRFStandBy = 1,
	sRFPOR,
	sRFIdle,
	sRFWakingUp,
	sRFWakeUpError,
	sRFTxWaiting,
	sRFTransmitting,
	sRFTxError,
	sRFPacketSent,
	sRFRxWaiting,
	sRFPreambleSearch,
	sRFSynchSearch,
	sRFReceiving,
	sRFPacketReceived,
} RF_STATES;

typedef enum _RF_PARAMETER
{
	pRfFrequency,
	pRfGpios,
	pRfDigitalOut,
	pRfDigitalIn,
	pRfTransmitPower,
	pRfPreambleLength,
	pRfPremableDetection,
	pRfSynchronWord,
	pRfModulation,
	pRfPacketHandler,
	pRfAntennaDiversity,
	pLowBatteryDetector,
	pRfDataInverted,
} RF_PARAMETER;

typedef struct _HEADER
{
	uint8		header3;
	uint8		header2;
	uint8		header1;
	uint8		header0;
	uint8		enabled_headers;
} HEADER;

typedef struct _HEADER_FLT
{
	uint8		all_filter_disable	:1;
	uint8		header3_flt			:1;
	uint8		header2_flt			:1;
	uint8		header1_flt			:1;
	uint8		header0_flt			:1;
	uint8		header3_bc_flt		:1;
	uint8		header2_bc_flt		:1;
	uint8		header1_bc_flt		:1;
	uint8		header0_bc_flt		:1;
	uint8		packet_length_flt	:1;
	uint8		reserve_bits		:6;
} HEADER_FLT;

typedef	struct	_MESSAGE
{
	HEADER		header;
	uint8		length;
	uint8	*	payload;
} MESSAGE;

typedef struct _RECEIVE_COMMAND
{
	HEADER		header;
	HEADER_FLT	header_flt;
} RECEIVE_COMMAND;

typedef struct _PHY_STATUS
{
	uint8		status;
} PHY_STATUS;

typedef struct _RECEIVED_DATA
{
	uint8		fPacketReceived;
	MESSAGE		message;
} RECEIVED_DATA;

typedef enum _ANTENNA_TYPE
{
	SEPARATE_RX_TX,
	RX_TX_SWITCH,
	ANTENNA_DIVERSITY,
	DIVERSITY_FIX_A,
	DIVERSITY_FIX_B,
} ANTENNA_TYPE;

typedef enum _RF_REG_MAP					//revV2
{
  DeviceType 								= 0x00,  DeviceVersion								= 0x01,  DeviceStatus 								= 0x02,  InterruptStatus1 							= 0x03,  InterruptStatus2 							= 0x04,  InterruptEnable1 							= 0x05,            InterruptEnable2 							= 0x06,           OperatingFunctionControl1 				= 0x07,  OperatingFunctionControl2 				= 0x08,  CrystalOscillatorLoadCapacitance 			= 0x09,  MicrocontrollerOutputClock 				= 0x0A,  GPIO0Configuration 						= 0x0B,  GPIO1Configuration 						= 0x0C,         
  GPIO2Configuration						= 0x0D,
  IOPortConfiguration						= 0x0E,
  ADCConfiguration							= 0x0F,
  ADCSensorAmplifierOffset					= 0x10,
  ADCValue									= 0x11,
  TemperatureSensorControl					= 0x12,
  TemperatureValueOffset					= 0x13,
  WakeUpTimerPeriod1 						= 0x14,            WakeUpTimerPeriod2 						= 0x15,         
  WakeUpTimerPeriod3 						= 0x16,         
  WakeUpTimerValue1							= 0x17,
  WakeUpTimerValue2							= 0x18,
  LowDutyCycleModeDuration 					= 0x19,         LowBatteryDetectorThreshold  				= 0x1A,  BatteryVoltageLevel 						= 0x1B,                          
  IFFilterBandwidth  						= 0x1C,                             AFCLoopGearshiftOverride					= 0x1D,
  AFCTimingControl 							= 0x1E,                                ClockRecoveryGearshiftOverride 			= 0x1F,                ClockRecoveryOversamplingRatio 			= 0x20,                ClockRecoveryOffset2 						= 0x21,                         ClockRecoveryOffset1 						= 0x22,                         ClockRecoveryOffset0 						= 0x23,                       ClockRecoveryTimingLoopGain1 				= 0x24,                ClockRecoveryTimingLoopGain0 				= 0x25,               ReceivedSignalStrengthIndicator 			= 0x26,            RSSIThresholdForClearChannelIndicator 	= 0x27,     AntennaDiversityRegister1					= 0x28,
  AntennaDiversityRegister2					= 0x29,
  DataAccessControl 						= 0x30,                            EZmacStatus 								= 0x31,                                    HeaderControl1 							= 0x32,                                 HeaderControl2 							= 0x33,                                PreambleLength 							= 0x34,                                 PreambleDetectionControl 					= 0x35,                      SyncWord3 								= 0x36,                                     SyncWord2 								= 0x37,                                     SyncWord1 								= 0x38,                                 SyncWord0 								= 0x39,                                  TransmitHeader3							= 0x3A,                         TransmitHeader2 							= 0x3B,                               TransmitHeader1 							= 0x3C,                                TransmitHeader0 							= 0x3D,                               TransmitPacketLength 						= 0x3E,                           CheckHeader3 								= 0x3F,                                  CheckHeader2 								= 0x40,                                CheckHeader1 								= 0x41,                               CheckHeader0 								= 0x42,                              HeaderEnable3 							= 0x43,                                 HeaderEnable2 							= 0x44,                                   HeaderEnable1 							= 0x45,                                  HeaderEnable0 							= 0x46,                                ReceivedHeader3 							= 0x47,                            ReceivedHeader2 							= 0x48,                           ReceivedHeader1 							= 0x49,                             ReceivedHeader0 							= 0x4A,                             
  ReceivedPacketLength						= 0x4B,
  AnalogTestBus 							= 0x50,                                DigitalTestBus 							= 0x51,                            TXRampControl 							= 0x52,                               PLLTuneTime 								= 0x53,                              CalibrationControl 						= 0x55,                       ModemTest 								= 0x56,                                 ChargepumpTest 							= 0x57,                      ChargepumpCurrentTrimming_Override 		= 0x58,           DividerCurrentTrimming				 	= 0x59,      VCOCurrentTrimming 						= 0x5A,                             VCOCalibration_Override 					= 0x5B,                      SynthesizerTest 							= 0x5C,                                BlockEnableOverride1 						= 0x5D,                          BlockEnableOverride2 						= 0x5E,                        BlockEnableOverride3 						= 0x5F,                         ChannelFilterCoefficientAddress 			= 0x60,               ChannelFilterCoefficientValue 			= 0x61,              CrystalOscillator_ControlTest 			= 0x62,                 RCOscillatorCoarseCalibration_Override 	= 0x63,      RCOscillatorFineCalibration_Override 		= 0x64,        LDOControlOverride 						= 0x65,                            DeltasigmaADCTuning1			 			= 0x67,  DeltasigmaADCTuning2			 			= 0x68,  AGCOverride1					 			= 0x69,  AGCOverride2 								= 0x6A,  GFSKFIRFilterCoefficientAddress 			= 0x6B,              GFSKFIRFilterCoefficientValue 			= 0x6C,                TXPower 									= 0x6D,                                     TXDataRate1 								= 0x6E,                              TXDataRate0 								= 0x6F,                                ModulationModeControl1 					= 0x70,                     ModulationModeControl2 					= 0x71,                     FrequencyDeviation 						= 0x72,                              FrequencyOffset 							= 0x73,                              FrequencyChannelControl					= 0x74,
  FrequencyBandSelect 						= 0x75,                          NominalCarrierFrequency1	 				= 0x76,                      NominalCarrierFrequency0 					= 0x77,                      FrequencyHoppingChannelSelect 			= 0x79,                 FrequencyHoppingStepSize 					= 0x7A,                       TXFIFOControl1 							= 0x7C,                          TXFIFOControl2 							= 0x7D,      RXFIFOControl 							= 0x7E,                                 FIFOAccess								= 0x7F,
} RF_REG_MAP;

                /* ======================================= *
                 *  F U N C T I O N   P R O T O T Y P E S  *
                 * ======================================= */
RF_ENUM RfInitHw(void);
RF_ENUM RFWakeUp(void);
RF_ENUM RFSleep(void);
RF_ENUM RFIdle(void);
RF_ENUM RFSetParameter(RF_PARAMETER parameter, uint8 * value, uint8 length);
RF_ENUM RFSetRfParameters(uint8 modulation_mode, uint8 arib_mode, uint8 data_rate);
RF_ENUM RFDirectTransmit(void);
RF_ENUM RFTransmit(MESSAGE * Struct);
RF_ENUM RFDirectReceive(void);
RF_ENUM RFReceive(RECEIVE_COMMAND * Struct);
RF_ENUM RFGetStatus(PHY_STATUS * Struct);
RF_ENUM RFGetBuffer(RECEIVED_DATA * Struct);
RF_ENUM RFGetRssiResult(uint8 * ant1, uint8 * ant2);
void RFTimerISR(void);
void RFExtISR(void);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -