Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CC1101 странный прием пакета
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
LVS-87
Добрый вечер! Товарищи, помогите пожалуйста разобраться с проблемой. Суть дела: использую модули CC1101, передаю, к примеру, последовательность {1, 2 , ... , 29 , 30}, в приемном буфере обнаруживаю все эти же числа, только в следующем порядке {30, 1 , 2 ... , 29}. в чем может быть загвоздка?
Код
void write_rf_settings(int SPIx, int direct)
{
    if(direct == 1)//tx
    {
        uint8_t PA_TABLE[8] = {0x00,0x12,0x0e,0x34,0x60,0xc5,0xc1,0xc0};

        write_reg(SPIx, IOCFG0,0x06);  //GDO0 Output Pin Configuration
        write_reg(SPIx, FIFOTHR,0x47); //RX FIFO and TX FIFO Thresholds
        write_reg(SPIx, PKTCTRL0,0x05);//Packet Automation Control
        write_reg(SPIx, CHANNR,0x01);  //Channel Number
        write_reg(SPIx, FSCTRL1,0x06); //Frequency Synthesizer Control
        write_reg(SPIx, FREQ2,0x10);   //Frequency Control Word, High Byte
        write_reg(SPIx, FREQ1,0xB1);   //Frequency Control Word, Middle Byte
        write_reg(SPIx, FREQ0,0x3B);   //Frequency Control Word, Low Byte
        write_reg(SPIx, MDMCFG4,0xF6); //Modem Configuration
        write_reg(SPIx, MDMCFG3,0x83); //Modem Configuration
        write_reg(SPIx, MDMCFG2,0x13); //Modem Configuration
        write_reg(SPIx, DEVIATN,0x15); //Modem Deviation Setting
        write_reg(SPIx, MCSM0,0x18);   //Main Radio Control State Machine Configuration
        write_reg(SPIx, FOCCFG,0x16);  //Frequency Offset Compensation Configuration
        write_reg(SPIx, WORCTRL,0xFB); //Wake On Radio Control
        write_reg(SPIx, FREND0,0x17);  //Front End TX Configuration
        write_reg(SPIx, FSCAL3,0xE9);  //Frequency Synthesizer Calibration
        write_reg(SPIx, FSCAL2,0x2A);  //Frequency Synthesizer Calibration
        write_reg(SPIx, FSCAL1,0x00);  //Frequency Synthesizer Calibration
        write_reg(SPIx, FSCAL0,0x1F);  //Frequency Synthesizer Calibration
        write_reg(SPIx, TEST2,0x81);   //Various Test Settings
        write_reg(SPIx, TEST1,0x35);   //Various Test Settings
        write_reg(SPIx, TEST0,0x09);   //Various Test Settings

        write_burst_reg(SPIx, PATABLE, PA_TABLE, 8);
    }
    if(direct == 0)//rx
    {
        uint8_t PA_TABLE[8] = {0x00,0x12,0x0e,0x34,0x60,0xc5,0xc1,0xc0};

        write_reg(SPIx, IOCFG0,0x07);  //GDO0 Output Pin Configuration
        write_reg(SPIx, FIFOTHR,0x47); //RX FIFO and TX FIFO Thresholds
        write_reg(SPIx, PKTCTRL0,0x05);//Packet Automation Control
        write_reg(SPIx, CHANNR,0x01);  //Channel Number
        write_reg(SPIx, FSCTRL1,0x06); //Frequency Synthesizer Control
        write_reg(SPIx, FREQ2,0x10);   //Frequency Control Word, High Byte
        write_reg(SPIx, FREQ1,0xB1);   //Frequency Control Word, Middle Byte
        write_reg(SPIx, FREQ0,0x3B);   //Frequency Control Word, Low Byte
        write_reg(SPIx, MDMCFG4,0xF6); //Modem Configuration
        write_reg(SPIx, MDMCFG3,0x83); //Modem Configuration
        write_reg(SPIx, MDMCFG2,0x13); //Modem Configuration
        write_reg(SPIx, DEVIATN,0x15); //Modem Deviation Setting
        write_reg(SPIx, MCSM0,0x18);   //Main Radio Control State Machine Configuration
        write_reg(SPIx, FOCCFG,0x16);  //Frequency Offset Compensation Configuration
        write_reg(SPIx, WORCTRL,0xFB); //Wake On Radio Control
        write_reg(SPIx, FREND0,0x17);  //Front End TX Configuration
        write_reg(SPIx, FSCAL3,0xE9);  //Frequency Synthesizer Calibration
        write_reg(SPIx, FSCAL2,0x2A);  //Frequency Synthesizer Calibration
        write_reg(SPIx, FSCAL1,0x00);  //Frequency Synthesizer Calibration
        write_reg(SPIx, FSCAL0,0x1F);  //Frequency Synthesizer Calibration
        write_reg(SPIx, TEST2,0x81);   //Various Test Settings
        write_reg(SPIx, TEST1,0x35);   //Various Test Settings
        write_reg(SPIx, TEST0,0x09);   //Various Test Settings

        write_burst_reg(SPIx, PATABLE, PA_TABLE, 8);
    }
}
www...
Судя по настройкам у вас переменная длинна пакета. То есть при передаче в TXFIFO сначало нужно положить количество байт которых будете передавать, а в приемном буфере получаете то же самое {30, 1 , 2 ... , 29}, дочитайте еще один байт и получите {30, 1 , 2 ... , 30}, короче первый байт указывает на колличество байт в буфере.

еще у вас хрень какая то с PATABLE
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.