Other Parts Discussed in Thread: CC2544,
Hi team,
Customer use CC2640R2 proprietary mode with CC2544. They want to increase size of Preamble. Please help instruct.
Besides, please provide the document about the setting of overrides. Thank you.
// Overrides
static uint32_t HID_pOverrides[] =
{
//Overrides (tentative):
0x01010007, // MCE_RFE_OVERRIDE(0, 0, 1, 0, 0, 1), // Use correct RFE mode
0x013800C3, // Set 500 kHz deviation in TX
0x02080283, // SW_REG_OVERRIDE(radioPar, rxToTxRatOffset, 0x0208), // Set IFS (130 us)
//0x03000283, // SW_REG_OVERRIDE(radioPar, rxToTxRatOffset, 0x0208), // Set IFS (130 us)
0x002482d3, // SW_REG_BYTE_OVERRIDE(radioPar, txFifoThrSleep, 0x24), // Avoid FIFO underflow in TX
//0x02ad0b03, // SW_REG_OVERRIDE(propRadioPar, rxIfsTimeout, 0x02AD), // Set timeout for ACK
0x02000b03, // SW_REG_OVERRIDE(propRadioPar, rxIfsTimeout, 0x02AD), // Set timeout for ACK
0xffffffff, // END_OVERRIDE, // End of string
};
//********************************************************************************* // These settings have been generated for use with TI-RTOS and cc13xxware // // Generated by SmartRF Studio version 2.4.3 (build #23) and modified // Tested for BLE SDK version 1.00.00 // Device: CC2640R2F // //********************************************************************************* //********************************************************************************* // Default parameter summary // HID mode // GFSK 2 Mbps // Address: ef // Frequency: 2440.00000 MHz // Data Format: Serial mode disable // Deviation: 500.000 kHz // Packet Length Config: Variable // Max Packet Length: 128 // Packet Length: 16 // RX Filter BW: 98 kHz // Symbol Rate: 50.00000 kBaud // Sync Word Length: 32 Bits // TX Power: 0 dBm // Whitening: No whitening #ifdef DEVICE_FAMILY #undef DEVICE_FAMILY_PATH #define DEVICE_FAMILY_PATH(x) <ti/devices/DEVICE_FAMILY/x> #else #error "You must define DEVICE_FAMILY at the project level as one of cc26x0, cc26x0r2, cc13x0, etc." #endif // Definitions to add new parameter for HID mode: #define _POSITION_propRadioPar_rxIfsTimeout 176 #define _TYPE_propRadioPar_rxIfsTimeout uint16_t #include DEVICE_FAMILY_PATH(driverlib/rf_mailbox.h) #include DEVICE_FAMILY_PATH(driverlib/rf_common_cmd.h) #include DEVICE_FAMILY_PATH(rf_patches/rf_patch_cpe_prop.h) #include DEVICE_FAMILY_PATH(rf_patches/rf_patch_rfe_genfsk.h) #include DEVICE_FAMILY_PATH(rf_patches/rf_patch_mce_genfsk.h) #include "rf_patch_cpe_hid.h" #include "rf_hid_cmd.h" #include "rf_hid_mailbox.h" #include <ti/drivers/rf/RF.h> #include "smartrf_settings.h" // TI-RTOS RF Mode Object RF_Mode RF_prop = { .rfMode = RF_MODE_PROPRIETARY_2_4, .cpePatchFxn = &rf_patch_cpe_prop, .mcePatchFxn = &rf_patch_mce_genfsk, .rfePatchFxn = &rf_patch_rfe_genfsk, }; // Overrides for CMD_PROP_RADIO_SETUP uint32_t pOverrides[] = { // override_use_patch_prop_genfsk.xml // PHY: Use MCE RAM patch, RFE RAM patch MCE_RFE_OVERRIDE(1,0,0,1,0,0), // override_synth_prop_2440_div2.xml // Synth: Set Fref to 4 MHz (uint32_t)0x000684A3, // Synth: Use 24 MHz XOSC as synth clock, enable extra PLL filtering (uint32_t)0x02010403, // Synth: Configure faster calibration HW32_ARRAY_OVERRIDE(0x4004, 1), // Synth: Configure faster calibration (uint32_t)0x1C0C0618, // Synth: Configure faster calibration (uint32_t)0xC00401A1, // Synth: Configure faster calibration (uint32_t)0x21010101, // Synth: Configure faster calibration (uint32_t)0xC0040141, // Synth: Configure faster calibration (uint32_t)0x00214AD3, // Synth: Decrease synth programming time-out by 64 us (0x0300 RAT ticks = 192 us) (uint32_t)0x03000243, // Rx: Set LNA IB offset used for automatic software compensation to 0 (uint32_t)0x00008883, // Rx: Set LNA IB trim value based on the selected defaultPhy.mainMode setting. ADI_HALFREG_OVERRIDE(0,4,0xF,0xF), // Rx: Set RSSI offset to adjust reported RSSI by -1 dB (default: 0) (uint32_t)0x000188A3, // override_phy_tx_pa_ramp_gfsk_pa_ramp_12us_agc_reflevel_0x22.xml // Tx: Configure PA ramping setting (0x3F). Rx: Set AGC reference level to 0x22. HW_REG_OVERRIDE(0x6088,0x3F22), // Tx: Configure PA ramping setting HW_REG_OVERRIDE(0x608C,0x0413), (uint32_t)0xFFFFFFFF, }; // CMD_PROP_RADIO_SETUP // Proprietary Mode Radio Setup Command rfc_CMD_PROP_RADIO_SETUP_t RF_cmdPropRadioDivSetup = { .commandNo = 0x3806, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x0, .condition.rule = 0x1, .condition.nSkip = 0x0, .modulation.modType = 0x1, .modulation.deviation = 0x7D0, // default: 0x1F4 -> 125.000 kHz, 0x7D0 -> 500.000 kHz .symbolRate.preScale = 0xF, .symbolRate.rateWord = 0x10000, .symbolRate.decimMode = 0x0, .rxBw = 0x09, .preamConf.nPreamBytes = 0x4, .preamConf.preamMode = 0x0, .formatConf.nSwBits = 0x20, .formatConf.bBitReversal = 0x0, .formatConf.bMsbFirst = 0x1, .formatConf.fecMode = 0x0, .formatConf.whitenMode = 0x0, .config.frontEndMode = 0x0, .config.biasMode = 0x0, .config.analogCfgMode = 0x0, .config.bNoFsPowerUp = 0x0, .txPower = OEM_RF_TX_POWER, .pRegOverride = pOverrides, }; // CMD_FS // Frequency Synthesizer Programming Command rfc_CMD_FS_t RF_cmdFs = { .commandNo = 0x0803, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x0, .condition.rule = 0x1, .condition.nSkip = 0x0, .frequency = 0x0988, .fractFreq = 0x0000, .synthConf.bTxMode = 0x0, .synthConf.refFreq = 0x0, .__dummy0 = 0x00, .__dummy1 = 0x00, .__dummy2 = 0x00, .__dummy3 = 0x0000, }; // CMD_PROP_TX // Proprietary Mode Transmit Command rfc_CMD_PROP_TX_t RF_cmdPropTx = { .commandNo = 0x3801, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x0, .condition.rule = 0x1, .condition.nSkip = 0x0, .pktConf.bFsOff = 0x0, .pktConf.bUseCrc = 0x1, .pktConf.bVarLen = 0x1, .pktLen = 0x14, // SET APPLICATION PAYLOAD LENGTH .syncWord = 0x930B51DE, .pPkt = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx }; // CMD_PROP_RX // Proprietary Mode Receive Command rfc_CMD_PROP_RX_t RF_cmdPropRx = { .commandNo = 0x3802, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x0, .condition.rule = 0x1, .condition.nSkip = 0x0, .pktConf.bFsOff = 0x0, .pktConf.bRepeatOk = 0x0, .pktConf.bRepeatNok = 0x0, .pktConf.bUseCrc = 0x1, .pktConf.bVarLen = 0x1, .pktConf.bChkAddress = 0x0, .pktConf.endType = 0x0, .pktConf.filterOp = 0x0, .rxConf.bAutoFlushIgnored = 0x0, .rxConf.bAutoFlushCrcErr = 0x0, .rxConf.bIncludeHdr = 0x1, .rxConf.bIncludeCrc = 0x0, .rxConf.bAppendRssi = 0x0, .rxConf.bAppendTimestamp = 0x0, .rxConf.bAppendStatus = 0x1, .syncWord = 0x930B51DE, .maxPktLen = 0xFF, // MAKE SURE DATA ENTRY IS LARGE ENOUGH .address0 = 0xAA, .address1 = 0xBB, .endTrigger.triggerType = 0x1, .endTrigger.bEnaCmd = 0x0, .endTrigger.triggerNo = 0x0, .endTrigger.pastTrig = 0x0, .endTime = 0x00000000, .pQueue = 0, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx .pOutput = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx }; // CMD_TX_TEST // Proprietary Mode Transmit Test Command rfc_CMD_TX_TEST_t RF_cmdTxTest = { .commandNo = 0x0808, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x0, .condition.rule = 0x1, .condition.nSkip = 0x0, .config.bUseCw = 0x0, .config.bFsOff = 0x1, .config.whitenMode = 0x2, .__dummy0 = 0x00, .txWord = 0xABCD, .__dummy1 = 0x00, .endTrigger.triggerType = 0x1, .endTrigger.bEnaCmd = 0x0, .endTrigger.triggerNo = 0x0, .endTrigger.pastTrig = 0x0, .syncWord = 0x930B51DE, .endTime = 0x00000000, }; // CMD_RX_TEST // Proprietary Mode Transmit Test Command rfc_CMD_RX_TEST_t RF_cmdRxTest = { .commandNo = 0x0807, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x1, .condition.rule = 0x1, .condition.nSkip = 0x0, .config.bEnaFifo = 0x0, .config.bFsOff = 0x1, .config.bNoSync = 0x1, .endTrigger.triggerType = 0x1, .endTrigger.bEnaCmd = 0x0, .endTrigger.triggerNo = 0x0, .endTrigger.pastTrig = 0x0, .syncWord = 0x930B51DE, .endTime = 0x00000000, }; // TI-RTOS RF HID Mode Object RF_Mode RF_HID = { .rfMode = RF_MODE_PROPRIETARY_2_4, .cpePatchFxn = &rf_patch_cpe_hid, .mcePatchFxn = 0, .rfePatchFxn = 0, }; // Overrides static uint32_t HID_pOverrides[] = { //Overrides (tentative): 0x01010007, // MCE_RFE_OVERRIDE(0, 0, 1, 0, 0, 1), // Use correct RFE mode 0x013800C3, // Set 500 kHz deviation in TX 0x02080283, // SW_REG_OVERRIDE(radioPar, rxToTxRatOffset, 0x0208), // Set IFS (130 us) //0x03000283, // SW_REG_OVERRIDE(radioPar, rxToTxRatOffset, 0x0208), // Set IFS (130 us) 0x002482d3, // SW_REG_BYTE_OVERRIDE(radioPar, txFifoThrSleep, 0x24), // Avoid FIFO underflow in TX //0x02ad0b03, // SW_REG_OVERRIDE(propRadioPar, rxIfsTimeout, 0x02AD), // Set timeout for ACK 0x02000b03, // SW_REG_OVERRIDE(propRadioPar, rxIfsTimeout, 0x02AD), // Set timeout for ACK 0xffffffff, // END_OVERRIDE, // End of string }; // Radio Setup Command rfc_CMD_RADIO_SETUP_t cmdHIDRadioSetup = { .commandNo = 0x0802, .status = 0x0000, .pNextOp = 0, .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x0, .condition.rule = 0x1, .condition.nSkip = 0x0, .mode = 0x02, // 0x02: 2 Mbps GFSK .config.frontEndMode = 0x0, .config.biasMode = 0x0, // 0: Internal bias .config.analogCfgMode = 0x0, .config.bNoFsPowerUp = 0x0, .txPower = OEM_RF_TX_POWER, .pRegOverride = HID_pOverrides, }; // CMD_HID_TX rfc_CMD_HID_TX_t RF_cmdHIDTx = { .commandNo = 0x5801, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = TRIG_NOW, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x1, .condition.rule = COND_NEVER, // don't run any next command .condition.nSkip = 0x0, .pktConf.bFsOff = 0x0, // Turn off synth after command. .pktConf.bAutoRetransmit = 1, // 0: Do not listen for ACK // 1: Listen for ACK and retransmit if missing .pktConf.bVarLen = 0x1, // 1: Variable length mode .pktConf.hdrMode = 0x0, .pktConf.bIncludeAddr = 0x1, .pktConf.hdrConf = 0x0, .pktConf.bFixedTxLen = 0x0, .syncWord = TEST_SYNCWORD, // 0x29417471, //0x29417671 .address = TEST_ADDRESS, // 0xEF, // set address .seqNo = 0x0, .maxAckLen = 0x20, // 0x20, .pktLen = 0x07, // SET APPLICATION PAYLOAD LENGTH, set in application .maxRetrans = 0x0, // 0x1, // 0x02 .retransDelay = 0x5A0, // 0x5A0 for 360us // 0x800 for 512us //0x4b0 for 300us .pPkt = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .pRxQueue = 0, // Pointer to receive queue for ACKs .pOutput = 0, // Pointer to output structure }; // Output struct rfc_hidRxTxOutput_t output_tx_Command = { .nTx = 0x0, .nRxOk = 0x0, .nRxNok = 0x0, .nRxIgnored = 0x0, .nRxBufFull = 0x0, .lastRssi = 0x0, };