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.

CC1352P7: 915MHz Wake on Radio for CC1352R7-4

Part Number: CC1352P7
Other Parts Discussed in Thread: CC1310, CC1101, CC2500, , CC1312R

We have thousands of CC1310 sensors an hundreds of 1310 receivers working and are trying to make a 1352 receiver. We previously tested the R4-1 and R4-2 variants and had no issues. However, we have built a prototype using the CC1352R7-4 and there appears to be vast differences in how the code works. The data stream coming in from the 1310 sensors only worked on some of them, other had certain bit that were corrupted but the corruption was repeatable, the sensors that sent data that was received badly was always received with the same bad data stream. All the sensors work with no issue with a CC1310 based receiver. What we found it that I had been using the CCS project with the processor set to CC1352R7-2 not CC1352R7-4. When I changed that using the .syscfg generating tool, the whole thing went bad. The complier would no longer compile the code. There were differences in the UART file due to the complier no longer recognizing references to the now missing uart.h file. I had to change all that to uart2.h references. Those are all fixed but now the big problem is that none of the RF commands worked. With the CC1352R7-2 code, all my commands were RF_cmdFs based. On the CC1352R7-4, I had to change all the calls to which ever PHY method I chose with is currently the custom 868 mode which needs the commands to be RF_cmdFs_custom868_0 based. I tried several other configuration, changing the base commands each time (which is a total PITA), but nothing works. Another complaint of this is that I had to manually select each PHY command I wanted to use from a checkbox list under the "RF Command Symbols" section.

The closest configuration that almost worked was setting it up as "50 kbps, 25 kHz Deviation, 2-GFSK, 100 kHz RX Bandwidth, Custom PHY Setting, 868 Mhz band" and changing the base commands (RF Command Symbols) to match that. With that, I received my data stream but it was shifted to not include the length byte (first byte) and the first byte of my data. So it looked like the datastream was shifted byte two bytes. However, I still get a PROP_DONE_RXERR as a result of the sniff operation.

With the custom 868 setting, I get no recognizable bytes at all in the received data stream. The wake on radio function works for all variations I tried meaning that I get no jump the sniffing callback function until I send a packet with a sensor, it is just that the data coming in is no good and the result is always PROP_DONE_RXERR.

BTW: I set the following two options so I could see the bad data in the steam:

RF_cmdPropRxSniff_custom868_0.rxConf.bAutoFlushIgnored = 0;
RF_cmdPropRxSniff_custom868_0.rxConf.bAutoFlushCrcErr = 0;

Note that I am currently using the custom868 so that is why the commands have that tacked onto the end of those variables (the CCS makes me do that).

All of this was working with CC1352R7-2 compiled code running on the CC1352R7-2 chip and that code worked a lot better on the R7-4 chip. Changing the CPU variant in the syscfg. tool to 

I have tried making small changes to the base frequency (up to 5kHz), RW bandwidth, deviation, and baud rate to test if maybe there was something off in the 48MHz crystal. None of these made any difference.

With the R7-2 and R7-1 variants, TI supplied a working example code for the wake on radio which is what I built my project around. However, the CC1352R7-4 DOES NOT have a working version of the wake on radio example for the 915MHz range, only the 433MHz, which appears to be no different than the code I have been using for the two previous variants of the 1352. That code is also very similar to CC1310 wake on radio code with only the only change being using the .syscfg generating tool instead of the smartRF files. That code will not work for the 915MHz due to the code changes I already mentioned having to use something other than RF_cmdF commands.

Something I should also note is that the CC1310 are using the 4.20 version of the complier and the CC1352 required me to change the complier to the RTOS7 (TI Clang v2.1.0 LTS) because that is what your example program used. In fact, the big problems of it not working on any sensor was when I changed the "Based on RF Design" option in the syscfg tool.

All my working sensors and receivers are using the following RF configuration. All these values were plugged into the appropriate places using the .syscfg generating tool for the CC1352.

//*********************************************************************************
// Generated by SmartRF Studio version 2.23.0 (build#306)
// The applied template is compatible with CC13x0 SDK version 2.10.xx.xx or newer.
// Device: CC1310 Rev. B (2.1).
//
//*********************************************************************************


//*********************************************************************************
// Parameter summary
// RX Address0: 0xAA
// RX Address1: 0xBB
// RX Address Mode: No address check
// Frequency: 921.75 MHz
// Data Format: Serial mode disable
// Deviation: 5.000 kHz
// Packet Length Config: Variable
// Max Packet Length: 255
// Packet Length: 30
// Packet Data: 255
// RX Filter BW: 49 kHz
// Symbol Rate: 5.00031 kBaud
// Sync Word Length: 32 Bits
// TX Power: 14 dBm requires define CCFG_FORCE_VDDR_HH = 1 in ccfg.c, see CC13xx/CC26xx Technical Reference Manual
// Whitening: CC1101/CC2500 compatible

  • The sentence: "We previously tested the R4-1 and R4-2 variants and had no issues."

    should read: "We previously tested the R7-1 and R7-2 variants and had no issues. "

  • I haven't read all the details but a short question: 

    CC1352R7-4

    Do you here mean

    LAUNCHXL-CC1352P-4*: 433 MHz up to 14 dBm, 2.4 GHz up to 10 dBm

    If that is the case, this LP is aimed for 433 MHz but you try to use it on 915 MHz? 

  • Hi,

    As TheGhostOf mentioned, please could you clarify your operational frequency? The Sub1-GHz output network for the LAUNCHXL-CC1352P-4 is optimised for 433 MHz operation but from the settings you have provided it looks like the operational frequency is still set to 921.75 MHz.

    Regards,

    Zack

  • I was typing fast when I wrote that, so I'll type slower and try to be more clear.

     

    Some history:

    We manufacture CC1310 based sensors and receivers the use the 915MHz band in Wake On Radio mode, so we are experienced in all the tools used for that line of processors and have overcome all issues.

    We now want to do more complex tasks and the CC1310 is running out of RAM, so we built a prototype of our receiver using the CC1352P74T0RGZ processor, so we are NOT using one of your development kits at this point. I want to point out that I did not chose this processor. I was under the impression we would use the same processor that was on the LP-CC1352P7-1 development kit that I use to develop the firmware.

     

    The problem:

    After working on our new CC1352 based receiver for that past 2 months and getting all the new peripherals to work, I began testing the RF receiver and that is when I noticed a problem. All our old CC1310 based sensors worked fine but others, specifically the newer ones, did not work. On a perfectly repeatable basis, those sensors had the same bits missing in each packet and the TI checked CRC did not match so every transmission ended in a PROP_DONE_RXERR as a result in the RF_cmdPropRxSniff.status variable at the end of wake on radio command. During my troubleshooting I discovered that we were not using the same CPU as I thought so in the “syscfg tool”, I changed the CPU type to LP_CC1352P7-4 under the “RF Design->Based on RF Design” menu option. Previously this value was set to LP_CC1352P7-1. After I did that, the code would not compile for the reasons I stated in my previous posting. I think the best option is for me to start over using a example of the Wake On Radio (WOR) design for a CC1352P74T0RGZ processor but I noticed that you do not have one.

     

    How do I get this new receiver board working when I don’ have a working example of WOR for this processor? Obviously we have to run at 915Mhz or actually 902 to 928 MHz that same as our CC1310 products do to maintain compatibility.

  • It would be best to double-check I understand your issue correctly before proceeding - please correct this as needed:

    • You are migrating to the CC1352P7 from the CC1310.
    • You used the LP-CC1352P7-1 for FW development, and this was working as intended.
    • You are now testing the RX performance on custom hardware.
    • There are missing bits in each packet, with the CRC check not matching - this is the issue you need to debug.

    There are a few important points based on the information you've provided:

    • The LP-CC1352P7-1 and LP-CC1352P7-4 use the same processor (CC1352P74T0RGZ), so switching to using the LP_CC1342P7-4 example is not likely to solve the issue. The difference between the LP-CC1352P7-1 and the CC1352P7-4 boards is the frequency the output matching network is optimised for (868/915 MHz and 433 MHz, respectively):

    • As you are operating in the 915 MHz band you were using the correct board for FW development (the LP-CC1352P7-1). The reason there is no example for 915 MHz for the LP-CC1352P7-4 is because you would select the LP-CC1352P7-1 example for operation at 915 MHz.

    • You mention the CC1352R7 in your first post and the CC1352P7 in your reply - which are you using (the R devices have the +14 dBm output only at Sub-1 GHz)? 

    • Did you originally test the RF performance using the LP-CC1352P7-1 development board (i.e. when everything was working according to your original post)?

    Regards,

    Zack

  • OK, I have identified what the problem is and now need a fix.

    Since you were implying that it must be a problem with our hardware, I put your stock WOR program on the CC1352P7-1 Development Kit and left everything as is just to limit the variables in the problem. I then went to our sensor and changed the only 4 parameters in our program that differ from yours (see below) to match yours and everything works fine. Then I started changing each one of those 4 parameters and found which one is causing the issue.

    Our 4 critical parameters (the ones that differ from yours):

    1. WOR_WAKEUPS_PER_SECOND 10

    2. Symbol Rate = 5 kBAUD

    3. RX Filter BW = 49KHz

    4. Deviation = 5 KHz

    The only one that is the problem is #4, the modulation deviation, which regulates the bandwidth of the transmission. I tried all of the following 12.5KHz, 10Khz, 8Khz, and 7Khz which all worked fine, every transmission was received and no missing or corrupted bits. Obviously I also changed these to match on the sensor which does the transmitting. 6Khz and 5KHz do not work and although they both cause the sniff interrupt to be triggered, the but stream is corrupted and on both of these I get 16 bytes as a byte count instead of 31. I double checked my work on both 6KHz and 5Khz just to be certain I didn't make a mistake.

    The problem is that we have sold hundreds of these sensors and we had to pass FCC testing which was not cheap and any change we make to the RF transmission, like the bandwidth will require us to recertify, not they we want to do that anyway since any change will also make a new receiver incompatible with existing sensors. So what I really need is a solution to getting the CC1352 to work with the deviation set to 5 KHz.

    I also checked to see if the CCS was putting the right variables in the code and it is, it sets RF_cmdPropRadioDivSetup.modulation.deviation to 0x14 which matches the Code Export feature of SmartRF Studio for both the CC1310 and CC1352P7 processors when 5 Khz is the choice.

    Just as a reminder, this code works perfectly in all the CC1310 Sensors and receivers and we have made and tested a LOT of them with units in perpetual life testing and have not seen this issue ever.

  • Thank you for the additional information, I will try and recreate this issue on our end (using LaunchPads and changing the settings you have given from the defaults in the examples) and work on solving this from that starting point.

    Please allow a few days for this and I will aim to get back to you early next week.

    Regards,
    Zack

  • No problem, just remember to use a CC1310 for the transmitter and the CC1352 for the receiver. We have no issues using CC1310 for both so at this point, I don't know if it is an issue with the transmitter or receiver.

  • Problem solved!

    Your CC1352 dev kit with your example rfWakeOnRadioRx and rfWakeOnRadioTx code has the XOSC capacitor Array Delta set to the wrong value which is making the center frequency of the RF radio off by about 8 KHz to high. Sorry I can't be more exact than that as my Spectrum Analyzer doesn't have enough resolution at 915 MHz to get an exact reading. But what I can do is match the CC1310 kit's output to the CC1352 kit's output and see where they overlap.

    The value you have in your example code is 0xC1 and it should be 0xE3. When set to that, the dev kit will now receive a packet from the CC1310 based sensor. You will not see the problem if you use a modulation deviation more than 7Khz. Your examples use 25Khz so you would not see it because the TX an RX have enough overlap.

    So please look at this as you may have to make a change to your CC1352R-1 example code. I don't have all your boards but I do know that your CC1312R example code is also set to 0xC1 because I used that for our new CC1312R receiver and that is where I figured out where the problem was as I had to tweak the Cap Array Delta to get that right and I noticed that the default value of 0xC1 was causing the same issue on our boards. We are using the TI recommended crystals and caps on the CC1310 Sensors and that are right on the money.

    Again the value that needs changing is in the syscfg file under TI DEVICES->Device Configuration->XOSC Cap Array Delta.

  • 8 kHz on 915 MHz is about 9 ppm. Most xtals has a lot higher variation than that, especially over temp and aging. Using 5 kbps without bit repetition will give very poor frequency offset tolerance and is not the right choice for these chips. On CC13x2 you could get partially around it using a TCXO but CC1310 doesn't have TCXO support. 

    See https://www.ti.com/lit/an/swra566/swra566.pdf and www.ti.com/.../swra682.pdf