реклама на сайте
подробности

 
 
> CC1101, не сходится CRC
www...
сообщение Oct 26 2014, 11:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 26-10-14
Из: Екатеринбург
Пользователь №: 83 345



Имею 4 платы Atmega88 + CC1101. Расхождения по частоте кварцев составляет максимум 400 Гц. Конфиг готовый из SmartRF, длинна пакета переменная, автоматическая калибровка синтезатора при переходе из IDLE в RX/TX включена, включена автоматическая отчистка приемного буфера при приеме битого пакета, вобщем вот конфиг:
Код
halRfWriteReg(IOCFG0,0x07);  //GDO0 Output Pin Configuration
halRfWriteReg(FIFOTHR,0x47); //RX FIFO and TX FIFO Thresholds
halRfWriteReg(PKTCTRL0,0x05);//Packet Automation Control
halRfWriteReg(FSCTRL1,0x06); //Frequency Synthesizer Control
halRfWriteReg(FREQ2,0x21);   //Frequency Control Word, High Byte
halRfWriteReg(FREQ1,0x62);   //Frequency Control Word, Middle Byte
halRfWriteReg(FREQ0,0x76);   //Frequency Control Word, Low Byte
halRfWriteReg(MDMCFG4,0xCA); //Modem Configuration
halRfWriteReg(MDMCFG3,0x83); //Modem Configuration
halRfWriteReg(MDMCFG2,0x13); //Modem Configuration
halRfWriteReg(DEVIATN,0x35); //Modem Deviation Setting
halRfWriteReg(MCSM0,0x18);   //Main Radio Control State Machine Configuration
halRfWriteReg(FOCCFG,0x16);  //Frequency Offset Compensation Configuration
halRfWriteReg(AGCCTRL2,0x43);//AGC Control
halRfWriteReg(WORCTRL,0xFB); //Wake On Radio Control
halRfWriteReg(FSCAL3,0xE9);  //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL2,0x2A);  //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL1,0x00);  //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL0,0x1F);  //Frequency Synthesizer Calibration
halRfWriteReg(TEST2,0x81);   //Various Test Settings
halRfWriteReg(TEST1,0x35);   //Various Test Settings
halRfWriteReg(TEST0,0x09);   //Various Test Settings

Ни как не могу передать пакет, IOCFG0 настроено на взведение при схождении CRC.
Вот код передатчика
Код
void TX(void)
{
   while(1)
   {
    PORTB.2=0;                //Cs
    while(PINB.4==1){};  //ждем пока отпустят MISO
    spi(0x7F);                 //адресс TX fifo
    spi(0x07);                 //передавать будем 7 байт
    spi(0x46);                 //payload
    spi(0x46);                 //payload
    spi(0x46);                 //payload
    spi(0x46);                 //payload
    spi(0x46);                 //payload
    spi(0x46);                 //payload
    spi(0x46);                 //payload
    PORTB.2=1;              //Cs
    SpiStrobe(STX);
    PORTC.5=1;             //мигнем индикатором
    delay_ms(500);
    SpiStrobe(SIDLE);
    SpiStrobe(SFTX);
    PORTC.5=0;
    delay_ms(500);
    }
}


вот код приемника
Код
void RX (void)
{
char r;
    SpiStrobe(SRX);
    while(1)
    {
       if (PIND.1)                     //если активный сигнал на IOCFG0
        {
          PORTB.2=0;               //читаем RX fifo
          while(PINB.4==1){};
          spi(0xFF);
          r=spi(0x00);
          r=spi(0x00);
          r=spi(0x00);
          r=spi(0x00);
          r=spi(0x00);
          r=spi(0x00);
          r=spi(0x00);
          r=spi(0x00);
          PORTB.2=1;        
          PORTC.5=1;             //мигнем индикатором
          delay_ms(300);
          PORTC.5=0;
          SpiStrobe(SIDLE);
      SpiStrobe(SFRX);
          SpiStrobe(SRX);
        }
    }

}

Самое интересное что если IOCFG0 в приемнике сделать 0x0E(наличие несущей в канале) приемник отлично начинает мигать тестовым индикатором при наличии в канале несущей, реагирует как на аналогичный передатчик так и на пульт от сигналки. Пробовал фиксированную длину пакета, пробовал принудительно делать калибровку синтезатора, несколько раз менял чипы CC1101, пробовал использовать скорости 100 и 250 кбит - результата нет.
В чем может быть проблема? И еще в чем разница стробов SFSTXON и SCAL, когда какой применять и нужно ли если в конфиге настроена автокалибровка??
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
www...
сообщение Oct 26 2014, 14:33
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 26-10-14
Из: Екатеринбург
Пользователь №: 83 345



Продолжаю эксперименты.
IOCFG0 в приемнике сделал 0х06 (синхрослово определено) , ничего не изменилось, в SmartRF сделал конфиг на те же 38.4 кбит, но не "Optimized for sensitivity", а " Optimized for current consumption" (отличается только одним битом DEM_DCFILT_OFF в MDMCFG2) теперь изредка(1 раз из 10-ти) синхрослово стало исправно приниматься....
Go to the top of the page
 
+Quote Post
www...
сообщение Nov 27 2014, 05:12
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 26-10-14
Из: Екатеринбург
Пользователь №: 83 345



Проблема решена!!!
Код на первой страничке был верным.
Была тупейшая ошибка в адресе одного регистра
#define FSCAL0 0x2С
когда на самом деле
#define FSCAL0 0x26
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016