Hey All,
I can receive a packet sent by SmartRF, but not by my firmware. I'm really confused on why. I use an Atmel Xmega for the main processor.
Here are some code snippits:
// Initial settings on CC1101 Init:
CC1101_RF_SETTINGS.IOCFG0 = 0x06;
CC1101_RF_SETTINGS.PKTCTRL0 = 0x05;
CC1101_RF_SETTINGS.FSCTRL1 = 0x06;
CC1101_RF_SETTINGS.FREQ2 = 0x21;
CC1101_RF_SETTINGS.FREQ1 = 0x62;
CC1101_RF_SETTINGS.FREQ0 = 0x76;
CC1101_RF_SETTINGS.MDMCFG4 = 0xF5;
CC1101_RF_SETTINGS.MDMCFG3 = 0x83;
CC1101_RF_SETTINGS.MDMCFG2 = 0x13;
CC1101_RF_SETTINGS.DEVIATN = 0x15;
CC1101_RF_SETTINGS.MCSM0 = 0x18;
CC1101_RF_SETTINGS.FOCCFG = 0x16;
CC1101_RF_SETTINGS.WORCTRL = 0xFB;
CC1101_RF_SETTINGS.FSCAL3 = 0xE9;
CC1101_RF_SETTINGS.FSCAL2 = 0x2A;
CC1101_RF_SETTINGS.FSCAL1 = 0x00;
CC1101_RF_SETTINGS.FSCAL0 = 0x1F;
CC1101_RF_SETTINGS.TEST2 = 0x81;
CC1101_RF_SETTINGS.TEST1 = 0x35;
CC1101_RF_SETTINGS.TEST0 = 0x09;
CC1101_RF_SETTINGS.LQI = 0x80;
CC1101_RF_SETTINGS.RSSI = 0x80;
// Place CC1101 in TX mode.
void ccxxx0_TxMode(void)
{
char regStatus =0;
ccxxx0_Strobe(CCxxx0_SIDLE);
while (regStatus != 0)
{
regStatus = ccxxx0_ReadStatus(CCxxx0_MARCSTATE);
}
ccxxx0_Strobe(CCxxx0_SFTX); // flush Tx buff
}
void send_RF_msg(char message_type, char *msg, char length_lessThan59, char destination)
{
unsigned char tx_msg[64];
unsigned char msg_len;
unsigned char source =1;
char index;
if (length_lessThan59 > MAX_MSG_LENGTH) {
length_lessThan59 = MAX_MSG_LENGTH;
}
msg_len=1;
tx_msg[msg_len++]= destination;
tx_msg[msg_len++]= source;
tx_msg[msg_len++]= message_type;
tx_msg[msg_len++]= length_lessThan59;
for (index=0; index<length_lessThan59; index++) {
tx_msg[msg_len++] = msg[index];
}
tx_msg[0]=msg_len;
ccxxx0_TxMode();
ccxxx0_WriteBurst(CCxxx0_TXFIFO, tx_msg, msg_len); // addr= 1 byte, payload= bytes, PKTLEN= addr + payload
ccxxx0_Strobe(CCxxx0_STX); // activate Tx!
while (gpio_pin_is_high(CC1101_GDO0)); // wait for GDO0 to be cleared -> end of packet.
I can see the CC1101 draw the power and it seems like it's transmitting something, but the SmartRF and my Receiver is not picking it up.
Any ideas what might be wrong?