I wrote my own SPI interface to return the status byte with every read/write to the CC1101 registers. I can write and verify the registers no problem. I then used the fantastic SmartRF Studio to generate my register settings for operation at 433.92MHz and variable length packets. Here is my init sequence:
writeCC1101register(0x30, 0x00, &status);//reset STROBE (wait for SO to go low after CS low...)
writeCC1101register(0x02, 0x06, &status);//GDO0 output pin config
writeCC1101register(0x03, 0x47, &status);//RX/TX FIFO Thresholds
writeCC1101register(0x06, 0xFF, &status);//RX/TX FIFO Thresholds
writeCC1101register(0x08, 0x05, &status);//Packet Automation Control
writeCC1101register(0x0B, 0x06, &status);//Freq Synth Control
writeCC1101register(0x0D, 0x10, &status);//Freq Cont word, high byte
writeCC1101register(0x0E, 0xB0, &status);//Freq Cont word, mid byte
writeCC1101register(0x0F, 0x71, &status);//Freq Cont word, low byte
writeCC1101register(0x10, 0xF6, &status);//Modem config
writeCC1101register(0x11, 0x83, &status);//Modem config
writeCC1101register(0x12, 0x13, &status);//Modem config
writeCC1101register(0x13, 0x00, &status);//Modem config
writeCC1101register(0x15, 0x15, &status);//Modem Deviation Setting
writeCC1101register(0x18, 0x18, &status);//Main Radio Control State Machine Configuration
writeCC1101register(0x19, 0x16, &status);//Frequency Offset Compensation Configuration
writeCC1101register(0x20, 0xFB, &status);//Wake On Radio Control
writeCC1101register(0x22, 0x17, &status);// Front End TX Configuration
writeCC1101register(0x23, 0xE9, &status);//Frequency Synthesizer Calibration
writeCC1101register(0x24, 0x2A, &status);//Frequency Synthesizer Calibration
writeCC1101register(0x25, 0x00, &status);//Frequency Synthesizer Calibration
writeCC1101register(0x26, 0x1F, &status);//Frequency Synthesizer Calibration
writeCC1101register(0x2C, 0x81, &status);//Various Test Settings
writeCC1101register(0x2D, 0x35, &status);//Various Test Settings
writeCC1101register(0x2E, 0x09, &status);//Various Test Settings
I then load 5 bytes to the TX FIFO:
writeCC1101register(0x3F, 0x05, &status);//5 byte packet
writeCC1101register(0x3F, 0x55, &status);//write to TX FIFO
writeCC1101register(0x3F, 0x55, &status);//write to TX FIFO
writeCC1101register(0x3F, 0x55, &status);//write to TX FIFO
writeCC1101register(0x3F, 0x55, &status);//write to TX FIFO
writeCC1101register(0x3F, 0x55, &status);//write to TX FIFO
Then request a synthesizer calibration which happens almost immediately instead of taking ~750uS:
writeCC1101register(0x31, 0x00, &status);//cal synth - does not take 750+uS!!
This I want to see something on my spectrum analyzer:
for(x=0; x<2500; x++) //transmit many times so can see it on spectrum analyzer
writeCC1101register(0x35, 0x00, &status);//does not transmit!!
It does not appear I'm transmitting at all. Any ideas from the gurus?