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.
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},
};