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.

CC1352R: SimpleLink LRM changing Spreading Code possible?

Part Number: CC1352R
Other Parts Discussed in Thread: CC1352P, CC1310, LAUNCHXL-CC1352P1

Hi,

Sorry i am quite new to this chip and first played a bit with the LAUNCHXL-CC1352R boards. So far, examples and tests are working fine.

As I did not find anything in the specs and manuals: Is it possible to change the Spreading Code of the SimpleLink(tm) Long Range DSSS mode?

Best regards!

  • I have the same question. I'm using a CC1352P using the 2.5 Kbps Long Range DSSS mode. My application doesn't require the performance of 2.5 Kbps. I only need to wake-up another radio in a very a-periodic method. So I would rather trade off bit-rate for distance. I remember the CC1310 had a 300 baud long range mode. Is there any app-note or recommendations to further increase the range?

  • I did a quick test with the Launchxl-cc1352P1 boards and a nice whip antenna. The units are separated by about 4 feet.

    5 Kbps Simplelink Long Range mode (20 Kchips/second, 2-GFSK, FED r=1/2 k=7, DSSS SF= 2, Tx dev: 5 KHz)

    Tx Power (dBm)RSSI (dBm)
    +20 -23.8
    +13.5 -29.3
    -20 -63.6

    Switching to the  2.5 Kbps Simplelink Long Range mode (20 Kchips/second, 2-GFSK, FED r=1/2 k=7, DSSS SF= 4, Tx dev: 5 KHz)

    Tx Power (dBm)RSSI (dBm)
    +20 -21.2
    +13.5 -27.3
    -20 -61.8

    Moving to the slower speed, increases the RSSI by 1.8 to 2.6 dBm. Which is significant. It would be great if we could increase the DSSS to 8.

  • Hi Nick,

    We have a similar situation here, were we only need a few bytes to be transferred from time to time, but over quite a long distance. Hence, your question is also interesting for our project. But I think at this point, we are talking (maybe) about two different things.

    There are two parameters to tweak:
    (I hope I can reflect the theory correctly)

    - Spreading Factor
    - Spreading Code

    The spreading factor (SF) is the factor with which the payload is 'multiplied' to increase the signal's bit rate and consequentially increase its bandwidth. E.g. one bit is converted to a 4 bit symbol. We then talk about a spreading factor of 4. AFAIK a maximum SF of 8 is possible with the CC1352 family.

    The spreading code is the pseudo noise code (called PN, a sequence of some bits) which replaces each payload/user data unit (like one bit gets one PN sequence) to produce a new symbol called "chip". The bit rate afterwards is SF-times higher than the original information bit rate. Quite often Barker Codes are used as PNs, as they are good detected in the noise.

    By choosing different PNs, you can a) protect data from be discovered in the spoectrum by others and b) increase the interference robustness agains other systems even if they are using the same type of modulation and the same frequency.

    I don't know which codes the CC13xx's are using. And if they can be redefined/changed would be interesting. That would be my question to be more exact.

  • Please take a look at:

    For the SLR (not Legacy LR) this is also valid for the CC13x2 devices.

    Note that when changing spreading factor, this is done by changing the following override on CC13x0:

    HW_REG_OVERRIDE(0x505C,0xXXXX)

    while on CC13x2, you should use

    HW_REG_OVERRIDE(0x5068,0xXXXX)

    BR

    Siri

  • Siri sent some documentation (see below).

    According to this, you could tweak one register to to SF 8:

    HW_REG_OVERRIDE(0x505C,0x073C)

    Page 9, swra642.pdf

  • Thanks for the interesting document, Siri!

    We now know how to change the spreading factor, but still not if and how we can change the spreading code.

    According to Page 4, Table1, SWRA642 the actually used spreading code for 8 in LRM is:

    1 is mapped to ‘11001100’

    0 is mapped to ‘00110011’

    For example we would like to try the complementary sequence

    11100100 and 00011011

    Is it possible to change that map?

  • Hi Tobias

    Unfortunately, this is not possible.

    BR

    Siri
  • OK I see. Thanks for your time Siri!

    I understand that it might be impossible to change the mapping table if it is part ot the ROM of the Cortex M0 radio core. Maybe you like considering making this mapping alterable in the future, if it is possible. The ability of changing this table would help increasing interference with other SimpleLink users on the same channel also using DSSS (at least according to what I remember from the spread spectrum theory).

    Sorry if I dig a bit deeper in this thing. At the moment I ask myself : why did you at TI choose these type of sequences for DSSS mappings? AFAIK spreading codes are choosen by its ideal autocorrelation property (pseudorandom binary sequences) . The signal produced by your tables (e.g. SF=8) to me look like that a unmapped '1' is mapped to a rectangular baseband signal 11001100 which results in a baseband frequency of fs/4 and '0' gives fs/4 + 180° phase shift? This looks like a highly deterministic sequence to me which is the contrary of what DSSS theory proposes? I am sorry if I am getting this wrong... I just try to understand how this works. For example LoRa (Semtech) solely uses Barker codes with odd length of spreading codes (like 5,7,11,13). Maybe you can help me understand what the idea behind this is.

    BR T.
  • These DSSS mappings are defined to fulfill two criteria:

    a) to maximize the hamming distance between the symbols (easy one, as long they are complementary)

    b) Ensure a given phase trajectory per symbol. A 0011 sequence modulated with GFSK with h=0.5 creates a very specific phase rotation pattern. This phase rotation pattern can be exploited in a phase correlation step to minimize BER.

    DSSS theory using barker codes focuses on the autocorrelation for the bit/frequency symbols sequences itself, but ignore the phase relationship of the resulting signal.

    Note that the same approach is already adopted in Bluetooth 5, for their coded PHYs.

    BR
  • Very interesting. Thanks for taking time for clarification! Thank you!