Other Parts Discussed in Thread: SMARTRFTM-STUDIO, Z-STACK, SYSCONFIG
Hi,
I would like to know if TI provides any firmware for 802.15.4 RF testing with CC2652R? For example, for BLE, I use host_test with HCI command.
Thanks,
Koon
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
I would like to know if TI provides any firmware for 802.15.4 RF testing with CC2652R? For example, for BLE, I use host_test with HCI command.
Thanks,
Koon
Hi Koon,
TI 15.4-Stack has CERTIFICATION_TEST_MODE and Z-Stack DMM application examples use PER_TEST, along with power test profiles for either stack. Then there is also the SMARTRFTM-STUDIO IEEE 802.15.4 mode so it really depends on what exactly you are trying to accomplish.
Regards,
Ryan
Hi Ryan,
Thanks for your prompt response. I would like to download the firmware to my board and to be able to perform transmit and receive test via UART.
Where is CERTIFICATION_TEST_MODE? I don't see that in "Simplelink CC13x2 26x2 SDK" under "CC26x2R LaunchPad/TI 15-4 Stack" directory.
I installed SmartRF studio. Which firmware is for 802.15.4 RF testing? Can I control the device via UART instead of using SmartRF Studio application?
Thanks,
Koon
Try to check if rfPacketErrorRate example can be used.
Hello Koon,
CERTIFICATION_TEST_MODE is a parameter provided in the TI 15.4-Stack example applications: http://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_3_40_00_02/docs/ti154stack/html/ti154stack/example-applications.html#configuration-parameters
You will not be able to use UART with SMARTRFTM-STUDIO. If this is a requirement then you should investigate the coprocessor: http://dev.ti.com/tirex/explore/node?node=ALDzqGjWNKC73CCgya.xBw__pTTHBmu__LATEST
Regards,
Ryan
Hi Ryan,
Just to be clear, I have CC2652r implemented in my board. I can bypass my board circuitry and control CC2652r directly via UART from my computer. I load host_test and I am able to send HCI command from my computer to test BLE RF performance (transmit quality and receive sensitivity). I am looking for something similar for 802.15.4.
CERTIFICATION_TEST_MODE doesn't seem to be what I am looking for as I have to connect to another device and I cannot perform receive sensitivity measurement and it cannot transmit continuously.
It looks like SmartRF Studio has all the features that I need. I don't need to use SmartRF Studio to control my board via UART. It would be great if I can send the corresponding command via UART from my computer to control my device to continuous TX and RX.
Koon
Hi Koon,
With a full understanding of your system requirements I recommend that you use the rfEasyLinkNp: http://dev.ti.com/tirex/explore/node?node=AFWGFAP8LmjvJCyBv55MEQ__pTTHBmu__LATEST
Regards,
Ryan
Hi Ryan,
The rfEasyLinkNp project doesn't support 802.15.4 modulation (O-QPSK). It only has 2-GFSK. Is that correct?
Thanks,
Koon
Hi Koon,
The following AT Control Command will initialize the radio to user-defined settings from ti_radio_config.c/h which can be determined in SMARTRFTM-STUDIO: AT+I 00<CR>
Regards,
Ryan
Hi Ryan,
In rfEasyLinkNp.syscfg page (using CCS), I select Custom and deselect Easylink under RF Stack since SysConfig doesn't support multiple stack configuration. Next, I follow instructions from this link:
software-dl.ti.com/.../proprietary-rf-driver.html
CCS complains that it couldn't find "ti_easylink_config.h". Do you have instruction on how to include 802.15.4 QPSK?
Thanks,
Koon
Hi Koon,
This involves Step 9: Adjust Your Application Files. I would recommend keeping the EasyLink configuration but modifying the SysConfig file for Radio -> Use RF Settings Exported from SmartRF Studio and add the ti_radio_config.c/h files directly to your project.
Regards,
Ryan
Hi Ryan,
If I select "Use RF Settings Exported from SmartRF Studio," I receive a few errors messages when building the project.
Error: gmake: *** [easylink/EasyLink.obj] Error 1
Thanks,
Koon
Clean the project before rebuilding a provide a complete error log.
Regards,
Ryan
Hi Ryan,
I have attached a screen capture of CCS ver 9.3 with the error message. I also include ti_radio_config.c/h that I generate from smart studio.
Koon
//********************************************************************************* // Generated by SmartRF Studio version 2.16.0 (build#215) // The applied template is compatible with CC26x2 SDK version 2.10.xx.xx or newer. // Device: CC2652R Rev. E (2.1). // //********************************************************************************* //********************************************************************************* // Parameter summary // IEEE Channel: 11 // Frequency: 2405 MHz // SFD: 0 // Packet Data: 255 // Preamble (32 bit): 01010101... // TX Power: 5 dBm #include <ti/devices/DeviceFamily.h> #include DeviceFamily_constructPath(driverlib/rf_mailbox.h) #include DeviceFamily_constructPath(driverlib/rf_common_cmd.h) #include DeviceFamily_constructPath(driverlib/rf_ieee_cmd.h) #include <ti/drivers/rf/RF.h> #include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_ieee_802_15_4.h) #include "ti_radio_config.h" // TI-RTOS RF Mode Object RF_Mode RF_prop = { .rfMode = RF_MODE_AUTO, .cpePatchFxn = &rf_patch_cpe_ieee_802_15_4, .mcePatchFxn = 0, .rfePatchFxn = 0 }; // Overrides for CMD_RADIO_SETUP uint32_t pOverrides[] = { // override_ieee_802_15_4.xml // DC/DC regulator: In Tx, use DCDCCTL5[3:0]=0x3 (DITHER_EN=0 and IPEAK=3). (uint32_t)0x00F388D3, // Rx: Set LNA bias current offset to +15 to saturate trim to max (default: 0) (uint32_t)0x000F8883, (uint32_t)0xFFFFFFFF }; // CMD_RADIO_SETUP // Radio Setup Command for Pre-Defined Schemes rfc_CMD_RADIO_SETUP_t RF_cmdRadioSetup = { .commandNo = 0x0802, .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, .mode = 0x01, .loDivider = 0x00, .config.frontEndMode = 0x0, .config.biasMode = 0x0, .config.analogCfgMode = 0x0, .config.bNoFsPowerUp = 0x0, .txPower = 0x7217, .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 = 0x0965, .fractFreq = 0x0000, .synthConf.bTxMode = 0x1, .synthConf.refFreq = 0x0, .__dummy0 = 0x00, .__dummy1 = 0x00, .__dummy2 = 0x00, .__dummy3 = 0x0000 }; // CMD_IEEE_TX // IEEE 802.15.4 Transmit Command rfc_CMD_IEEE_TX_t RF_cmdIeeeTx = { .commandNo = 0x2C01, .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, .txOpt.bIncludePhyHdr = 0x0, .txOpt.bIncludeCrc = 0x0, .txOpt.payloadLenMsb = 0x0, .payloadLen = 0x1E, .pPayload = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .timeStamp = 0x00000000 }; // CMD_IEEE_RX // IEEE 802.15.4 Receive Command rfc_CMD_IEEE_RX_t RF_cmdIeeeRx = { .commandNo = 0x2801, .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, .channel = 0x00, .rxConfig.bAutoFlushCrc = 0x0, .rxConfig.bAutoFlushIgn = 0x0, .rxConfig.bIncludePhyHdr = 0x0, .rxConfig.bIncludeCrc = 0x0, .rxConfig.bAppendRssi = 0x1, .rxConfig.bAppendCorrCrc = 0x1, .rxConfig.bAppendSrcInd = 0x0, .rxConfig.bAppendTimestamp = 0x0, .pRxQ = 0, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx .pOutput = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .frameFiltOpt.frameFiltEn = 0x0, .frameFiltOpt.frameFiltStop = 0x0, .frameFiltOpt.autoAckEn = 0x0, .frameFiltOpt.slottedAckEn = 0x0, .frameFiltOpt.autoPendEn = 0x0, .frameFiltOpt.defaultPend = 0x0, .frameFiltOpt.bPendDataReqOnly = 0x0, .frameFiltOpt.bPanCoord = 0x0, .frameFiltOpt.maxFrameVersion = 0x3, .frameFiltOpt.fcfReservedMask = 0x0, .frameFiltOpt.modifyFtFilter = 0x0, .frameFiltOpt.bStrictLenFilter = 0x0, .frameTypes.bAcceptFt0Beacon = 0x1, .frameTypes.bAcceptFt1Data = 0x1, .frameTypes.bAcceptFt2Ack = 0x1, .frameTypes.bAcceptFt3MacCmd = 0x1, .frameTypes.bAcceptFt4Reserved = 0x1, .frameTypes.bAcceptFt5Reserved = 0x1, .frameTypes.bAcceptFt6Reserved = 0x1, .frameTypes.bAcceptFt7Reserved = 0x1, .ccaOpt.ccaEnEnergy = 0x0, .ccaOpt.ccaEnCorr = 0x0, .ccaOpt.ccaEnSync = 0x0, .ccaOpt.ccaCorrOp = 0x1, .ccaOpt.ccaSyncOp = 0x1, .ccaOpt.ccaCorrThr = 0x0, .ccaRssiThr = 0x64, .__dummy0 = 0x00, .numExtEntries = 0x00, .numShortEntries = 0x00, .pExtEntryList = 0, // INSERT APPLICABLE POINTER: (uint32_t*)&xxx .pShortEntryList = 0, // INSERT APPLICABLE POINTER: (uint32_t*)&xxx .localExtAddr = 0x0000000012345678, .localShortAddr = 0xABBA, .localPanID = 0x0000, .__dummy1 = 0x000000, .endTrigger.triggerType = 0x1, .endTrigger.bEnaCmd = 0x0, .endTrigger.triggerNo = 0x0, .endTrigger.pastTrig = 0x0, .endTime = 0x00000000 };
I could not find a working solution and have no expertise in this area, you may need to disable SysConfig to accomplish your task.
Regards,
Ryan
Ryan,
How do I disable SysConfig? Is it fair to say that it is not possible to generate 802.15.4 O-QPSK signal using rfEasyLinkNp project?
Thanks,
Koon
And it appears that may be the case, which I was not aware of before.
Ryan
I apologize for the chase, it will not be possible for you to evaluate O-QPSK with the EasyLink/Proprietary RF Stack as these involve different PHYs: https://e2e.ti.com/support/tools/ccs/f/81/p/877286/3247439#3247439
O-QPSK is a special modulation of MSK. Backing up, you could use the 15.4-Stack coprocessor and TI-15-4-STACK-GATEWAY-LINUX-SDK
http://dev.ti.com/tirex/explore/node?node=ALDzqGjWNKC73CCgya.xBw__pTTHBmu__LATEST
http://software-dl.ti.com/simplelink/esd/ti15.4stack_linux_x64/3.40.00.10/exports/docs/ti154stack/html/ti154stack-guide/index-linux.html
You should only need the Interactive Command Line Interface for your purposes.
Regards,
Ryan
Ryan,
Can you point me to Interactive Command Line Interface section?
Thanks,
Koon