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

 
 
> cc1100 фиксированная длина пакета
blox
сообщение Sep 20 2014, 17:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 18-07-10
Из: Челябинск
Пользователь №: 58 496



Здравствуйте!!!
Подскажите кто использовал фиксированную длину пакета передачи данных в этом трансивере, как правильно нужно сконфигурировать
сс1100. Когда использую переменную длину пакета всё работает, захотелось использовать FEC а он работает только с фиксированной длиной пакета.
Код
const unsigned char   rfSettings[][2]=
{
  {CCxxx0_FSCTRL1 ,0x06},   // FSCTRL1   Frequency synthesizer control.
  {CCxxx0_FSCTRL0 ,0x00},   // FSCTRL0   Frequency synthesizer control.
  {CCxxx0_FREQ2   ,0x20},   // FREQ2     Frequency control word, high byte.
  {CCxxx0_FREQ1   ,0x28},   // FREQ1     Frequency control word, middle byte.
  {CCxxx0_FREQ0   ,0xC5},   // FREQ0     Frequency control word, low byte.
  {CCxxx0_MDMCFG4 ,0xF6},   // MDMCFG4   Modem configuration.
  {CCxxx0_MDMCFG3 ,0x75},   // MDMCFG3   Modem configuration.
  {CCxxx0_MDMCFG2 ,0x72},   // MDMCFG2   Modem configuration.
  {CCxxx0_MDMCFG1 ,0x22},   // MDMCFG1   Modem configuration.
  {CCxxx0_MDMCFG0 ,0xE5},   // MDMCFG0   Modem configuration.
  {CCxxx0_CHANNR  ,0x00},   // CHANNR    Channel number.
  {CCxxx0_DEVIATN ,0x00},   // DEVIATN   Modem deviation setting (when FSK modulation is enabled).
  {CCxxx0_FREND1  ,0x56},   // FREND1    Front end RX configuration.
  {CCxxx0_FREND0  ,0x10},   // FREND0    Front end RX configuration.
// {CCxxx0_MCSM1   ,0x33},   // MCSM1     Main Radio Control State Machine configuration.
  {CCxxx0_MCSM0   ,0x18},   // MCSM0     Main Radio Control State Machine configuration.
  {CCxxx0_FOCCFG  ,0x16},   // FOCCFG    Frequency Offset Compensation Configuration.
  {CCxxx0_BSCFG   ,0x6C},   // BSCFG     Bit synchronization Configuration.
  {CCxxx0_AGCCTRL2,0x03},   // AGCCTRL2  AGC control.
  {CCxxx0_AGCCTRL1,0x40},   // AGCCTRL1  AGC control.
  {CCxxx0_AGCCTRL0,0x91},   // AGCCTRL0  AGC control.
  {CCxxx0_FSCAL3  ,0xE9},   // FSCAL3    Frequency synthesizer calibration.
  {CCxxx0_FSCAL2  ,0x2A},   // FSCAL2    Frequency synthesizer calibration.
  {CCxxx0_FSCAL1  ,0x00},   // FSCAL1    Frequency synthesizer calibration.
  {CCxxx0_FSCAL0  ,0x1F},   // FSCAL0    Frequency synthesizer calibration.
  {CCxxx0_FSTEST  ,0x59},   // FSTEST    Frequency synthesizer calibration.
  {CCxxx0_TEST2   ,0x81},   // TEST2     Various test settings.
  {CCxxx0_TEST1   ,0x35},   // TEST1     Various test settings.
  {CCxxx0_TEST0   ,0x09},   // TEST0     Various test settings.
  {CCxxx0_FIFOTHR ,0x07},   //
  {CCxxx0_IOCFG2  ,0x07},   // IOCFG2    GDO2 output pin configuration.
  {CCxxx0_IOCFG0  ,0x06},   // IOCFG0D   GDO0 output pin configuration.
  {CCxxx0_PKTCTRL1,0x04},   // PKTCTRL1  Packet automation control.
  {CCxxx0_PKTCTRL0,0x04},   // PKTCTRL0  Packet automation control.
  {CCxxx0_ADDR    ,0x00},   // ADDR      Device address.
  {CCxxx0_PKTLEN  ,0x08}    // PKTLEN    Packet length.
};

передаю 8 байт данных
проверка адреса не используеться, длина фиксированая поэтому передаю только полезные 8 байт данных
вопросы
1 в pktlen значение должно быть только длина данных или длина + 2 байта rssi и lqi насколько понимаю без двух байт
2 длина пакета фиксированая и сс1100 сам знает длину данных(pktlen), то-есть нулевой байт буффера TX это полезные данные
3 согласно моим настройкам адрес не используеться и я также его непередаю
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
blox
сообщение Sep 29 2014, 09:11
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 18-07-10
Из: Челябинск
Пользователь №: 58 496



да переделывал функцию приема на фиксированную длину пакета
Код
[code]unsigned char halRfReceivePacket(unsigned char *rxBuffer,unsigned char *length)   //проверка наличия пакета и его чтение
{
  //Defines
  #define CRC_OK              0x80
  #define RSSI                0
  #define LQI                 1
  #define BYTES_IN_RXFIFO     0x7F

  unsigned char  Status[2];                                     //статус принятого пакета
  unsigned char  PacketLength;                                  //длина принятого пакета

  // This status register is safe to read since it will not be updated after
  // the packet has been received (See the CC1100 and 2500 Errata Note)
  if((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO))      //если в RXFIFO есть байты
  {
    PacketLength = halSpiReadStatus(CCxxx0_RXBYTES);                //Read length byte

    if(PacketLength <= *length)                                 //Read data from RX FIFO and store in rxBuffer
    {
      halSpiReadBurstReg(CCxxx0_RXFIFO,rxBuffer,PacketLength);  //чтение всех байт пакета
      *length=PacketLength;                                     //возврат длины прочитанного пакета
      // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
      halSpiReadBurstReg(CCxxx0_RXFIFO, Status, 2);
      return (Status[LQI] & CRC_OK);                            //MSB of LQI is the CRC_OK bit
    }
    else                                                        //длина буфера приема недостаточна
    {
      *length = PacketLength;                                   //вернем фактическую длину пакета
      // Make sure that the radio is in IDLE state before flushing the FIFO
      // (Unless RXOFF_MODE has been changed, the radio should be in IDLE state at this point)
      halSpiStrobe(CCxxx0_SIDLE);
      // Flush RX FIFO
      halSpiStrobe(CCxxx0_SFRX);
      return 0;                                                 //пакет не принят
    }
  }
  else return 0;                                                //пакет не принят
}
не помогло
Go to the top of the page
 
+Quote Post



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

 


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


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