У меня возник очередной затык на пути освоения СС1101. Использую MCU STM8L. Еще вчера у меня получалось обмениваться данными между двумя платками: одна передавала, другая все время принимала. Все пакеты проходили успешно. Решил настроить двухсторонний обмен. Т.е. чтобы после получения пакета высылалось подтверждение. После очередной доработки, вообще все перестало работать.
SPI, вроде, работает: регистры пишутся и читаются правильно.
Одна плата совсем выключена, при этом вторая все время что-то принимает. Даже если предположить, что эфир сильно засорен, некоторые моменты совсем не понятны:
1. RXBYTES все время равен 0x1F. Из RXFIFO читается все время одна и та же последовательность.
2. После команд TI_CC_SPIStrobe(TI_CCxxx0_SIDLE); TI_CC_SPIStrobe(TI_CCxxx0_SFRX); RXBYTES возвращает 0xF.
3. MARCSTATE равен 0x5F, PKTSTATUS - 0x2F - значения этих регистров вызывают подозрение на проблемы в SPI
Подскажите, что может быть?
CODE
CC1101_WriteReg(CCxxx0_IOCFG2, 0x45); //GDO2 Output Pin Configuration
CC1101_WriteReg(CCxxx0_IOCFG0, 0x41); //GDO0 Output Pin Configuration
CC1101_WriteReg(CCxxx0_PKTLEN, 0xFE); //Packet Length
CC1101_WriteReg(CCxxx0_PKTCTRL1,0x0C); //Packet Automation Control
CC1101_WriteReg(CCxxx0_PKTCTRL0,0x05); //Packet Automation Control
CC1101_WriteReg(CCxxx0_CHANNR, 0x15); //Channel Number
CC1101_WriteReg(CCxxx0_FSCTRL1, 0x0C); //Frequency Synthesizer Control
CC1101_WriteReg(CCxxx0_FREQ2, 0x10); //Frequency Control Word, High Byte
CC1101_WriteReg(CCxxx0_FREQ1, 0xB1); //Frequency Control Word, Middle Byte
CC1101_WriteReg(CCxxx0_FREQ0, 0x3B); //Frequency Control Word, Low Byte
CC1101_WriteReg(CCxxx0_MDMCFG4, 0x2D); //Modem Configuration
CC1101_WriteReg(CCxxx0_MDMCFG3, 0x3B); //Modem Configuration
CC1101_WriteReg(CCxxx0_MDMCFG2, 0x13); //Modem Configuration
CC1101_WriteReg(CCxxx0_DEVIATN, 0x62); //Modem Deviation Setting
CC1101_WriteReg(CCxxx0_MCSM1, 0x3F); //Main Radio Control State Machine Configuration
CC1101_WriteReg(CCxxx0_MCSM0, 0x18); //Main Radio Control State Machine Configuration
CC1101_WriteReg(CCxxx0_FOCCFG, 0x1D); //Frequency Offset Compensation Configuration
CC1101_WriteReg(CCxxx0_BSCFG, 0x1C); //Bit Synchronization Configuration
CC1101_WriteReg(CCxxx0_AGCCTRL2,0xC7); //AGC Control
CC1101_WriteReg(CCxxx0_AGCCTRL1,0x20); //AGC Control
CC1101_WriteReg(CCxxx0_AGCCTRL0,0xB0); //AGC Control
CC1101_WriteReg(CCxxx0_WORCTRL, 0xFB); //Wake On Radio Control
CC1101_WriteReg(CCxxx0_FREND1, 0xB6); //Front End RX Configuration
CC1101_WriteReg(CCxxx0_FSCAL3, 0xEA); //Frequency Synthesizer Calibration
CC1101_WriteReg(CCxxx0_FSCAL2, 0x2A); //Frequency Synthesizer Calibration
CC1101_WriteReg(CCxxx0_FSCAL1, 0x00); //Frequency Synthesizer Calibration
CC1101_WriteReg(CCxxx0_FSCAL0, 0x1F); //Frequency Synthesizer Calibration
CC1101_WriteReg(CCxxx0_TEST0, 0x09); //Various Test Settings