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.

CC1350 Spread Spectrum

Other Parts Discussed in Thread: CC1350, CC1310, SYSBIOS, CC1190

Is the CC1350 suitable for implementing spread spectrum? In particular FHSS or DSSS? I did a bunch of searching but haven't  really found anything in regards to it. 

Also is the CC1350 dependent on the TI RTOS or can it be used without?

Thanks

  • Hi Nate,

    the long-range mode uses DSSS. Recently, we ran a test in Oslo and measured almost 32 km with an unmodified CC1310 launchpad @868MHz, 14dBm output power, USB supply. I admit that we had ideal conditions: direct line of sight, both launchpads high above the ground). Settings for that can be exported from SmartRF Studio.

    Regarding non-RTOS: See this post. The probably easiest and most efficient way to go until TI comes up with something, is the following:

    1. Download TI-RTOS
    2. Study TI-RTOS carefully and invest some time understanding how hardware interrupts, software interrupts and the clock module are working in TI-RTOS.
    3. Extract all high-level drivers from ${TIRTOS_INSTALL_DIR}/products/tidrivers_XXX/packages/ti/drivers/
    4. Extract the needed board-files from ${TIRTOS_INSTALL_DIR}/products/tidrivers_XXX/packages/ti/boards/
    5. Replace the following kernel modules from ${TIRTOS_INSTALL_DIR}/products/bios_XXX/packages/ti/sysbios/ with custom implementations based on CC13xxWare:

    • family/arm/cc26xx/Hwi and hal/Hwi
    • family/arm/cc26xx/Timer and knl/Clock
    • knl/Semaphore
    • knl/Swi

    I think this should cover most of the kernel calls used by our high-level drivers. Task scheduling and stack switching is not needed. The whole thing is not trivial, takes a lot of time and of course, we do not support it officially ;-) But if you follow the above path, you can leverage the amount of work that we put into our high-level drivers and circumvent a buch of possible bugs.

    Another possibility would be, to re-implement everything from scratch. For that, you need to study our high-level drivers carefully, especially the power driver PowerCC26XX.

  • Thank you for the reply Richard, that answers some of my questions.

    So when it is in long range mode then DSSS is automatically used and no parameters need to be set for it? As far as how many channels and which frequencies are used, hop time...etc?

    Also I was trying to find a spec for the settling time of the PLL to determine how well it might be able to be used for FHSS but I was unable to find that specification. Do you have any information on that spec?


    Thanks,

    Nate
  • So when it is in long range mode then DSSS is automatically used and no parameters need to be set for it? As far as how many channels and which frequencies are used, hop time...etc?

    Yes. It's implemented in the RF core firmware. Some parameters can be customized using overrides, but we do not document them. So you have to stick to the settings that you can export from SmartRF Studio. Hop times and channels apply only to FHSS and have nothing to do with DSSS. In the TI long-range mode, you set one center frequency as usual. If you want to try out the Long-range mode, have a look at the rfPacketErrorRate example, provided with TI-RTOS.

    Also I was trying to find a spec for the settling time of the PLL to determine how well it might be able to be used for FHSS but I was unable to find that specification. Do you have any information on that spec?


    These values are highly settings-dependent. I suggest, to create a test scenario and measure the channel switching time. Use command chaining to speed up the execution. Create chains in the form CMD_FS -> CMD_PROP_TX -> CMD_FS -> CMD_PROP_TX ...

    In order to measure the timing, this code might help you:

    #include <ti/drivers/pin/PINCC26XX.h>
    
    // RF core signals that can be routed to GPIO pins
    // RFC_GPO1 	For controlling an external PA. High when the PA must be enabled and otherwise low.
    // RFC_GPO2 	Goes high when the synthesizer calibration starts and low when the calibration is done.
    
    // Map RFC_GPO1 to IO 23 in the application.
    // pinhandle must be valid handle and IOID_23 must be initialized as
    // output. Have a look at the TI-RTOS examples.
    PINCC26XX_setMux(pinHandle, IOID_23, PINCC26XX_MUX_RFC_GPO1);
    
    // RFC_GPO1 might be the most interesting one to measure channel switching times.

  • Thanks Richard, 

    You have been very informative, I will look into the things you suggested. 

    Regards, 

    Nate

  • Hi Richard,

    Today I tried the LR mode in the demo that you mentioned, I believe you said this mode is supposed to be DSSS. I observed the signal on the spectrum analyzer and notice that it does not meet the DTS Bandwidth requirements for FCC which specifies a bandwidth of 500kHz or more, in long range mode it is only about 150kHz. How does TI recommend the long range mode can be used and still comply with FCC 15.247? 

    Thanks, 

    Nate

  • I forgot to add that my tests were done with the CC1310 Launchpad.
  • The aim of LRM is to get good sensitivity, not to pass the FCC 500 kHz bandwidth. I would assume this is possible with high datarate but not sure if it's been tested.
  • Hello Nate,

    To comply with FCC non-hopping (DTS) requirements we have a specific mode that also uses DSSS with symbol rate of 500kbps and data rate of 62.5kbps. It has been tested for functionality but it is not yet released since the characterization is not complete. This requires a specific patch which is also not released yet. If you need this urgently, please contact the locala TI field team (preferred) or send me a private message and I will try to share it with you.

    Regards,

  • Thanks SVS, I sent you a request.

    In response to TER, I realize the sensitivity is a lot better with LRM and certainly that is very appealing, but I don't see how it could be used in a end application in a way that would still be beneficial and able to pass FCC requirements.

    By that I mean:
    1) FCC 15.247 requires that the device either have a bandwidth greater than 500kHz or else employ frequency hopping.
    2) If not trying to comply with 15.247 then 15.249 would be the other option, it does not place any requirements on the modulation but severely limits power, such that the output would only be allowed to be about -1dBm (0.8mW).

    So for long range mode to be used in an end application would require the use of FHSS, does TI have any plans to develop that for the CC13xx devices?

    Or is there a use case that I am missing? How can the narrow band mode compete with LoRa if it can not be deployed in such a way that allows it to pass a certification in a end user device?

    Kind Regards,

    Nate
  • These the currently available options for FCC compliance on CC13xx:
    1. Wide band DSSS mode (mentioned in my previous post) that is deisgned to comply with FCC requirement for non-hopping DTS systems.
    2. Low data rate long range mode or any other narrow band scheme with frequency hopping, the hopping algorithm needs to be implemented by the customer.
    3. TI 15.4 stack (www.ti.com/.../ti-15.4-stack) which has FCC compliant frequency hopping scheme implemented.
    4. Option 2 without frequency hopping at lower power levels.

    Regards,
    Srividya
  • Has this issue been resolved yet? I'm also very interested in a DSSS solution to pass FCC 15.247 without frequency hopping. The best "spreading" I've been able to get so far is around 400 kHz, but that's only achieved by increasing the separation (which creates freq nulls, and therefore won't pass). SmartRF Studio doesn't allow me to adjust the data rate to 62.5 kbps as suggested above. Is there a way to "trick" the system to create this wave and test packet transmission, before we dig in and commit to writing code?

    Has anyone successfully created a DSSS signal at 915 MHz that has greater than 500 kHz bandwidth at 6 dB down, as required by the FCC?
  • There is a solution that can do 500 ksps, DSSS with 6 dB BW > 500 kHz. I will ping SVS so she can provide status and any special patches (if needed). Preliminary results for this mode are: sensitivity (1% BER) of -107 dBm and a max power spectral density of 6.6 dBm/3 kHz.

    Two alternative solutions:

    a) In SmartRF Studio there are settings for 2-GFSK, 500 kbps, +/-175 kHz deviation. This gives a 6 dB BW of 500 kHz. 175 kHz deviation gives a modulation index of 0.7 and was chosen to keep the power spectral density (PSD) in any 3 kHz bandwidth as low as possible. FCC 15.247 specifies the peak PSD as max 8 dBm/3 kHz.

    When using CC1310 at +14 dBm output power the PSD was measured as 5 dBm/3 kHz. Thus, the output power can be increased with an additional 3 dB and still be compliant to the PSD requirement. (note sure you want to add an external PA for the additional 3 dB output power though....). The sensitivity (1% BER) was measured as -96.5 dBm. Assuming ideal antennas the link budget is then +14 + 96.5 = 110.5 dB.

    This solution gives higher throughput and lower active TX current than 500 ksps, DSSS for the same data payload. Range will be shorter though.

    b) Operation under FCC 15.249 where the output power is limited to approx. -1.2 dBm. As an example: If you then operate at a lower data rate of 50 kbps the link budget will be -1.2 + 110 = 108.8 dB.

  • Sverre:

    Thanks very much for the timely response.

    I tried the 500/175 GFSK mode, but measured a 6 dB BW at around 480 kHz.  So, I manually increased this to 600 kbps, with 220k deviation, which easily put me over the hump (about 560 kHz BW).

    I do have a few follow-on questions...

    Since this is GFSK, do you see any reason why it wouldn't pass FCC 15.247.a.2 and 15.247.b.3?  I feel like the intent of those rulings was for DSSS, but we're achieving the same effect with GFSK.  Just want to be sure we're not "cheating" the system, and setting ourselves up to fail the cert.

    Any ideas on ways to get that PSD level down further?  We'll be using the 1350 on our sensors, and the 1350 with 1190 on our gateway (it will have wall power).  The LNA in the 1190 will help our link in one direction, but if we can only run the 1190's PA for a gain of 3 dB, then we have an asymmetric link budget.  So, the FEM isn't very helpful to increasing range.

    Finally, there's no need for use to run at 600 kbps.  1 kbps would be more than enough for our purposes.  If we give up baudrate, can we play any games with the other modulation settings to get back some more power?  We'd really like to get beyond the +17 (assuming we use the amp) before hitting the PSD wall.

    Again, many thanks for your help.

    Chris

  • Chris, 

    Something I would encourage you to look into that will make a big difference in passing the PSD is the Modulation Index. It is a ratio of the deviation and the data rate that will affect the way the bandwidth looks on a spectrum analyzer. Minor changes can make a big difference in passing or failing. 

  • Here is a link that may help, Section 3.3 provides some insight to the Modulation Index
    www.silabs.com/.../AN873.pdf
  • Nate:

    Thanks very much - that's exactly what I was looking for. Interesting that my hunt-and-search method of testing different modulation indices led me to settings that are very similar to what I see in Table 2 of that link. My "flattest" was at 600/220, which gives more margin over the needed 500 kHz BW. That seems to confirm my hopes of passing FCC with GFSK.

    Any thoughts on the fact that link budget doesn't seem to vary much with the added output power? Understood that there's a loss of RX sensitivity, due to less energy per bit. Have you done any testing with using some FEC (even a simple repetition code) to send extra bits (at the cost of battery power) but with an increase in processing gain? Seems like a way to get more link budget without changing our spectrum at all.

    Another thought - comparing 4.8 kbps, vs. 250 kbps, we can use ~10x the RF power (14.9 -> 25.2 dBm) to get the same 125 dB link, but are on the air for 1.9% of the time (4.8/250) to move a given amount of data. Overall, higher data rates appear to use less energy. Seems to me like this is the way to go for a battery powered system. Do you see any problems with my thinking here?

    Thanks again for the tips.

    Best,

    Chris
  • Hello Chris,

    We have a Wideband-DSSS mode implementation for meeting the FCC wideband non-frequency hopping digital modulation requirements. This is implemented as 2-GFSK PHY with over the air symbol rate of 500Kbps. With DSSS coding gain of 8, the resulting data-rate is 62.5Kbps. The patches needed for this mode are already released as part of the CC13xx SDK:
    rf_patch_cpe_wb_dsss.h, rf_patch_mce_wb_dsss.h, rf_patch_rfe_wb_dsss.h

    It is recommended to start with the current examples on TI RTOS, export the default settings from latest SmartRF Studio for 50kbps, 2-GFSK mode at 915MHz frequency and implement the following modifications on the SmartRF settings file:

    1. Overrides:

    a. Change MCE and RFE override to

    MCE_RFE_OVERRIDE(1, 0, 0, 1, 0, 0), // Apply MCE and RFE patches

    b. Change override for AGC reference level to

    HW_REG_OVERRIDE(0x6088,0x410E), // AGC reference level to 0x0E

    c. Overrides for DSSS

    HW_REG_OVERRIDE(0x52AC,0x0B03), //DSSS = 4, K=4

    HW_REG_OVERRIDE(0x5108,0x0048), //Correlator Threshold for Sync

    2. Modifications for CMD_PROP_RADIO_DIV_SETUP:

    .modulation.modType = 0x0,

    .modulation.deviation = 0x2BC,

    .symbolRate.preScale = 0xF,

    .symbolRate.rateWord = 0x50000, // 500 Kbps symbol rate

    .rxBW = 0x2F,

    .formatConf.nSwBits = 0x20,

    .formatConf.bMsbFirst = 0x0, //LSB transmitted first for WB-DSSS mode

    .formatConf.fecMode = 0x0,

    3. Modifications for CMD_PROP_TX and CMD_PROP_RX:

    .syncWord = 0x333C3C33,

    4. Apply correct patches for cpe, mce and rfe.

    As Sverre mentioned, expected sensitivity in this mode is -107dBm and the transmit spectrum has been verified to meet the FCC wideband requirements at maximum power setting on CC1310.

    Regards,
  • SVS:

    Thanks very much for the info. Ti continues to impress us with availability of tech support.

    Is it a reasonably equivalent test to simply enter our symbol rate and deviation in SmartRF Studio, and test on a CC1350 or 1310 LaunchPad board? Or will we need to use custom code to create these settings? Can this be done with the Override Editor? I'd like to test quickly while we're working through the hardware.

    Do you happen to know the PSD measurements with these settings? I'm trying to determine how much gain we might be able to get with an added CC1190 before we start to step on the +8 dBm/3kHz PSD maximum allowed by the FCC.

    Again, thanks very much.

    Chris
  • Preliminary results shows PSD of 6.6 dBm/3 kHz using the 500 ksps DSSS and operating at +14 dBm output power. The advantage with the DSSS approach (62.5 kbps) vs 500/600 kbps 2-GFSK is the significant improvement in sensitivity. 

  • You will not "cheat" the system if you use 2-GFSK. Using DSSS is not required. 

    The PSD depends strongly on the modulation index. A modulation index close to 0.7 is the better choice (slightly below 0.7 gives lower PSD).

  • Sorry for all these posts - should have included all responses in one..........

    You mention 4.8 kbps as an alternative. Not sure I understand what you mean, but I assume you're thinking using a wide deviation. Note that the CC1350 has an upper limit on the deviation for a given data rate as well as min and max data rate for a given RX filter BW (see www.ti.com/lit/swra566 for details). Furthermore, when using a high modulation index you get two distinct peaks in the spectrum and the PSD will be high. 4.8 kbps and wide deviation cannot be used.

    I would recommend the 500 ksps, DSSS solution provided by SVS.
  • SVS:

    I have a clarification question on your post on Aug 2.  Using SmartRF Studio, I followed your directions in changing the registers in the Override Editor, and found how to add the two new HW_REG_OVERRIDE fields.  The spectrum I see looks like what you described.  However, I'm not clear with the last step.  You say "Apply correct patches for cpe, mce, and rfe."  Is this something that needs to be done if I'm testing with RF Studio?  Or do you simply mean that we need to be sure that the correct *.h files are used when we eventually write code and compile?

    We want to repeat our range and sensitivity tests on RF06 and/or LaunchPad boards, using SmartRF Studio, with your settings as a comparison.  I just want to make sure I'm not missing some important final step to apply the changes, and that I'm looking at the correct spectrum.  My captured spectrum is below.  Does that match your results?

    Also, I'm a little concerned about the side bands.  I believe that everything outside of +/- 1 MHz of the occupied BW has to be at -20 dBc, correct?

  • Hello Chris,

    Since this mode requires patches that are not yet available in SmartRF studio, it cannot be tested using SmartRF studio. In future, we have plans to add this mode in studio.

    Without applying the mce, cpe and rfe patches for this mode, the output will not be as desired. The quickest way to test this would be to start with packet TX example in CC1310 SDK and implement all the suggested changes. You can use the CMD_TX_TEST command to transmit continuous modulated signal to check the spectrum.

    Attached is  a plot of expected TX spectrum in this mode.

    Regards,

    6dB_20KHzRBW_100KHzVBW_Maxhold.WMF

  • OK - we'll give this a shot. If we want to check RX sensitivity, do you have a recommendation there? If we can't use RF Studio, then is there an example in the SDK for receiving packets and reporting RSSI? Or is there a way to get RF Studio to work on the RX side only?
  • For RX, you can use the same modified SmartRF settings file in packetRX example from SDK. RSSI informaion can be retrieved from the packet by choosing the option to append RSSI in the receive command ( .rxConf.bAppendRssi = 0x1).

    Regards,
  • Hi SVS,

    I tried to pm you but couldn't find an option. I'm interested in this fcc complian 62.5kbps mode. Can you please share it with me? Also, can you suggest an fcc compliant mode for long range communication using cc1350?

    Best,
    MM
  • Hello MM,

    The patches needed for implementation of non-frequency hopping FCC compliant mode is part of the current release of CC13xx SDK.  I have sent you a message with the RF settings needed to implement this mode in a out-of-box RF example from SDK.  As an alternative, TI 15.4 Stack has FCC compliant long range mode already implemented.

    Regards,