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.

CC1200: Configuring register issuse, and RTOS support

Part Number: CC1200


1)  We are trying to set the cc1200 with an STM32F103ve (ARM cortex M3 microprocessor). We were able to configure the settings so that it worked with 38 kbps, however, when we used the smart RF studio, to increase the rate to 1000kbps, the communication between the two transceives didn't work. We are confident that we are writing to the registers correctly since it has worked with 38kbps, so we were hoping you could help us figure out what settings we should use and how we can come up with these settings in the future?

2) We are also wondering if you were able to use the cc1200 with FreeRTOS or any other RTOS. We were able to communicate between the two devices using FreeRTOS. However, the speed had greatly reduced and we were hoping if there was a better solution to increase the speed.

3) We are aware the cc1200 has an interrupt which would fire when it senses a packet. However, we are not sure about how the interrupts work on the cc1200, can you explain that to us?

Just so you have some background information on what we have already tried, I wanted to mention that we first started out with two cc1200 transceivers, one which was always looking for packets and the other which would send the packet. We were able to get them to communicate with each other with 38 kbps settings, but as soon as we tried to play around with the settings in RF Studio to increase the speed the communication between the two devices would stop. Also at this point, I should mention that even with 38 kbps settings, we weren't actually noticing this type of speed. What we tried to do was send an image of size 173kb, from one device to another. Ideally speaking this transfer should be done in less than a minute, but what we noticed was that the transfer actually took around 4 mins.

After we were able to send the image we tried to use FreeRTOS to make both the transceivers receive and send at the same time. We were successfully able to set this up properly, however, the time it took to send the image had increased by a factor of 10 (4 min transfer took around 40 minutes!). This might be because we when in receive mode we wait for the cc1200 to timeout, but what we're hoping is to use an interrupt, which would fire when a packet is ready, and thus avoid us from having to timeout.

Any help on this will be greatly appreciated, and sorry if our problems aren't clear enough. Please feel free to contact me back.

Also for your reference have attached the settings we are currently using (38kbps settings) which do seem to work.
static const registerSetting_t preferredSettings[]=
{
  {CC120X_IOCFG0,            0x06},
  {CC120X_IOCFG2,            0x13},
  {CC120X_IOCFG3,            0x30},
  {CC120X_SYNC_CFG1,         0xA9},
  {CC120X_MODCFG_DEV_E,      0x0B},
  {CC120X_PREAMBLE_CFG1,     0x30}, //24 byte preamble
  {CC120X_PREAMBLE_CFG0,     0x8A},
  {CC120X_IQIC,              0xC8},
  {CC120X_CHAN_BW,           0x10},
  {CC120X_MDMCFG1,           0x42},
  {CC120X_MDMCFG0,           0x05},
  {CC120X_SYMBOL_RATE2,      0x8F},
  {CC120X_SYMBOL_RATE1,      0x75},
  {CC120X_SYMBOL_RATE0,      0x10},
  {CC120X_AGC_REF,           0x27},
  {CC120X_AGC_CS_THR,        0xE4},
  {CC120X_AGC_CFG1,          0x11}, //0x11
  {CC120X_AGC_CFG0,          0x94},
  {CC120X_FIFO_CFG,          0x00},
  {CC120X_SETTLING_CFG,      0x0B},
  {CC120X_FS_CFG,            0x12},
  //{CC120X_WOR_CFG1,          0x08}, //normal mode
  //{CC120X_WOR_CFG0,          0x21},
  //{CC120X_WOR_EVENT0_LSB,    0x21},
  {CC120X_PKT_CFG2,          0x00},
  {CC120X_PKT_CFG1,          0x13},   // Address checking, no broadcast
  {CC120X_PKT_CFG0,          0x20},
  {CC120X_RFEND_CFG0,        0x00}, //0x30=TXOFF_MODE = RX ie radio goes straight to rx after tx , and terminate on bad packet (OFF)
  {CC120X_PKT_LEN,           0xFF},
  {CC120X_IF_MIX_CFG,        0x1C},
  {CC120X_TOC_CFG,           0x03},
  {CC120X_MDMCFG2,           0x02},
  {CC120X_FREQ2,             0x5B},
  {CC120X_FREQ1,             0x70},
  {CC120X_IF_ADC1,           0xEE},
  {CC120X_IF_ADC0,           0x10},
  {CC120X_FS_DIG1,           0x07},
  {CC120X_FS_DIG0,           0xAF},
  {CC120X_FS_CAL1,           0x40},
  {CC120X_FS_CAL0,           0x0E},
  {CC120X_FS_DIVTWO,         0x03},
  {CC120X_FS_DSM0,           0x33},
  {CC120X_FS_DVC0,           0x17},
  {CC120X_FS_PFD,            0x00},
  {CC120X_FS_PRE,            0x6E},
  {CC120X_FS_REG_DIV_CML,    0x1C},
  {CC120X_FS_SPARE,          0xAC},
  {CC120X_FS_VCO0,           0xB5},
  {CC120X_IFAMP,             0x09},
  {CC120X_XOSC5,             0x0E},
  {CC120X_XOSC1,             0x03},
};
Thanks for your help in advance!
  • 1) From the total description I'm not sure if the settings are the issue or the software.
    - Do you have a CCDebugger or similar enabling you to control the CC1200 directly from SmartRF Studio?
    - Have you tried some settings in between 38.4 kbps and 1 Mbps?
    2) We have only used CC1200 with MSP430 without any OS.
    - Why should things go slower when using a OS? The task that handles packet sending/ receiving has to have the priority and using interrupts you can pend on a semaphore or similar.
    3) For how to use an interrupt based handling of CC1200, see the software examples here: www.ti.com/.../swrc274