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.

Compiler/CC1350: Long Mode range 1 legacy mode - CC1350

Part Number: CC1350

Tool/software: TI C/C++ Compiler

Hi guys, 

Im using cc1350 launchpad microprocessor , and sending packet in Long Mode Range 1 , the parameters that Im configuring shown down in the attached photo:

I transmit those packets LRM and I want to capture those packets as IQ samples .

I use dongle for sampling the transmitted packets, and the IQ samples I see them in matlab.

As shown in the photo in my case the DSSS=8 , this means according to:

 

if there's 0 then it will be mapped to 11001100 , and 1 will be mapped as 00110011.

So what's confusing me that I I built a demodulator, then I should see on the output of my demodulator my packets data in terms of DSSS=8 (in other words in terms of 11001100 or 00110011) , am I right?

before doing the decoder or encoder, I must verify in my demodulator that on its outputs I see my packets in terms of DSSS=8, for instance I should see my syncword in terms of 11001100 or 00110011 ..right?!

A pleasure for any help.

  • Hello Ryan,

    Only the Payload and Termination is coded. The Syncword is sent as is (0xFE6B_2840_0194_D7BF) LSB first (refer to SWRA642).

    Also before the DSSS there is an convolutional encoder (FEC, K=7, r=2).

  • Hi Eirik, first of all thanks for your reply !

    I know that syncword is sent as a constant (LSB first) but what is confusing me is on the receiver side (implicitly it's my dongle that Im sampling the transmitted packet) when I have the IQ samples (raw data) of transmitted packet, I should see on the output of my demodulator the syncword as DSSS value terms, I mean by this lets assume that DSS=8, it means that zero is transmitted as 11001100 , 1 transmitted as 00110011 .

    So on the output of my demodulator (the input to my demodulator is the IQ samples that I sampled my transmitted packet by the dongle) I must see my syncword in terms of 11001100, 00110011 ..am I right? so if my transmitted syncword is (0xFE6B_2840_0194_D7BF) LSB first with DSSS=8 , so the output of my demodulator I must see my syncword in terms of 11001100 , 00110011 ..am I right?

    Once again, I mean I must see my syncword in the output of my demodulator in terms of 11001100, 00110011 before even doing a decoder or encoder .. Right? thanks alot.

  • - To implement a demodulator is a fairly complex task. Could you post a flow diagram showing how you have implemented it? 

    - Do you get what you expect if you run the 50 kbps settings and do you get the expected sensitivity.

    Could you outline why you are doing it this way? I has a academic feel to it.

  • Hello Ryan,

    Please refer to section 4.1 Mode 1- Legacy Long Range Packet Format in SWRA642.

    For Mode 1 the preamble and SyncWord is not fed through FEC or DSSS. So it is transmitted as is - LSB first. Not in terms of 11001100 and 00110011.

  • I mean by mode 1 , mode legacy , and yes it's passed by DSSS AND FEC blocks.

    So I should see in the output of my demodulator the syncword or preamble as DSSS terms, no? thanks alot

  • @TER

    Yes, it's complex , Im using hard mathmaticals equations in order to succeed to demodulate my GFSK signal, a flow diagram I didn't understand what do you mean by this, but I just built one block diagram called demodulator by matlab code, in the output of my demodulator I succeed to get what I transmit of packets in general mode (not LRM) , that's really confusing why when I use LRM packets (Long Mode Range packets) I don't see on the output of my packets the syncword or preamble of my transmitted packets even in terms of DSSS =8 ( in terms of 11001100 and 00110011) .

    Im trying to implement receiver side by a code because I want to verify if my transmitted packet are valid or not valid so I need to decode them, the purpose of this is that I will attach my code as interface software for other program.

  • @

    thanks for you explanation , so if I understand right I must see my syncwords data on the output of my demodulator even before building the decoder (opposite of fec encoder) or Reverse-DSSS (opposite of DSSS) .. am I right? thanks alot.

    the demodulator is built before the decoder / reverse DSSS , please note that I need to build the decoder for payload data and Termination for doing the reverse functionality of FEC-ENCODER.

    Moreover, another question, may you please illustrate more about FEC encoder that cc13xx use? I know there's a book that I need to buy it from amazon(it takes time till it arrive in this stiff period) .

    I mean by illustrate to give an example of how FEC encoder works ? for instance if I enter to it 10101 what should be the output of it ? as what I understand it should be two bits at every clock.

    I don't actually understand why I need the fec encoder if I have already the decrypted bits (output of demodulator) so why I need to enter them to fec encoder? because the fec encoder implicitly is just outputting the input data as pairs at every clock.

    thanks alot for any clarification.

  • Any help please? thanks in advance.

  • Hello Ryan,

    thanks for you explanation , so if I understand right I must see my syncwords data on the output of my demodulator even before building the decoder (opposite of fec encoder) or Reverse-DSSS (opposite of DSSS) .. am I right? thanks alot.

    Yes. Preamble and sync word are not coded. Sent as is. For example for LSB:

    0xFE6B 1111 0111 0110 1101 ->

    0x2840 0100 0001 0010 0000 ->

    There are some material on convolutional coding here:

    http://web.mit.edu/6.02/www/f2010/handouts/lectures/L8.pdf 

  • Thanks for sharing me this good matrial about convolutional encoder.

    You may didn't understand me, as what you said yes the syncword and preamble is not encoded by convolutional encoder, but they are encoded into DSSS no?  Im asking this question because according to here

     

    Under headline encoding scheme , I see that all the data of my packets encoded into DSSS and afterwards there's a Modulator (see please the blocks that's shown in the content)

    So if I want to make Demodulator I must see all the data (including syncword , preamble , payload , termination) in terms of DSSS table as shown in the handbook.  I mean by this I will not see my syncword in the output of my demodulator as it's ...I will see it in terms of DSSS table value according to DSSS value that I transmit my packets . Am I right? thanks for any clarification , Appreciated much! 

  • I conferred with the author of the app note which confirmed that preamble and syncword is not sent through DSSS.

  • Understand!

    Appreciated, so I must see my syncword/preamble as its in my output of demodulator, otherwise I have an issue with my demodulator implementation.

    thanks.

  • Im verifying because Im confused of what Im doing .

    About Syncword (LSB First) doesn't that mean if I have 0xFE6B then I should start writing in binary from right side to the beginning? I mean

    0xFE6B LSB first means in binary : 1101 0110  0111 1111   (B6EF)

    because of LSB first it means that I must start to write in binary from end of the hexa word ( B ) to the begging of hexa word (F) 

    No? Im asking because Im still not finding my syncword according to your explanation.

    I'm not saying that you're wrong :) , Im just verifying if LSB first means as what you declared above.

    Second question, about the payload bytes of my packet in the mode Legacy (mode 1 in Long Mode Range), first Byte of the payload Bytes is actually represents the size of the payload data and the last two Bytes of payload Bytes are CRC (not the Termination's Bytes ) .. am I right?

    thanks in advance for any assistance !

  • 0xFE6B LSB first means in binary : 1111 1110  0110 1011  -> direction over air