Ещё раз о СС1100

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Аватара пользователя
blox
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Ср май 21, 2008 21:19:02

Ещё раз о СС1100

Сообщение blox »

Приветствую уважаемых котов и их хозяев!!! :))
Возникла проблема с данным трансивером (СС1100) :shock:
При работе с переменной длиной пакета всё замечательно работает, но вот при фиксированной длине засада :facepalm:
На приёмной стороне наблюдаю приход синхрослова, флаг контрольной суммы, а в буффере приема мусор :shock:
передаю

Код: Выделить всё

halRfSendPacket((char*)&txbuff,sizeof(txbuff));

Код: Выделить всё

void halRfSendPacket(unsigned char *txBuffer,unsigned char size)                 //собственно передача пакета
{
  unsigned short Wait;                                          //счетчик ожидания

  halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);           //запись пакета
  halSpiStrobe(CCxxx0_STX);                                     //запуск передачи
  Wait=1000;                                                    //ждем 1с
  while(!GDO0 && Wait) { delay_us(10); Wait--; }                 // Wait for GDO0 to be set -> sync transmitted
  Wait=1000;                                                    //ждем 1с
  while(GDO0 && Wait)  { delay_us(10); Wait--; }                 // Wait for GDO0 to be cleared -> end of packet
}
читаю

Код: Выделить всё

         LENG=sizeof(rxbuff);
        i= halRfReceivePacket((char*) &rxbuff, &LENG);
буфферы

Код: Выделить всё

 unsigned char txbuff[8];
 unsigned char rxbuff[10];

Код: Выделить всё

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 = halSpiReadReg(CCxxx0_RXFIFO);                //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;                                                //пакет не принят
}
в чем проблема? :o
да настройки такие

Код: Выделить всё

const unsigned char   rfSettings[][2]=
{
  {CCxxx0_FSCTRL1 ,0x08},   // FSCTRL1   Frequency synthesizer control.
  {CCxxx0_FSCTRL0 ,0x00},   // FSCTRL0   Frequency synthesizer control.
  {CCxxx0_FREQ2   ,0x21},   // FREQ2     Frequency control word, high byte.
  {CCxxx0_FREQ1   ,0x65},   // FREQ1     Frequency control word, middle byte.
  {CCxxx0_FREQ0   ,0x6A},   // FREQ0     Frequency control word, low byte.
  {CCxxx0_MDMCFG4 ,0x5B},   // MDMCFG4   Modem configuration.
  {CCxxx0_MDMCFG3 ,0xF8},   // MDMCFG3   Modem configuration.
  {CCxxx0_MDMCFG2 ,0x03},   // MDMCFG2   Modem configuration.
  {CCxxx0_MDMCFG1 ,0x22},   // MDMCFG1   Modem configuration.
  {CCxxx0_MDMCFG0 ,0xF8},   // MDMCFG0   Modem configuration.
  {CCxxx0_CHANNR  ,0x00},   // CHANNR    Channel number.
  {CCxxx0_DEVIATN ,0x47},   // DEVIATN   Modem deviation setting (when FSK modulation is enabled).
  {CCxxx0_FREND1  ,0xB6},   // 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  ,0x1D},   // FOCCFG    Frequency Offset Compensation Configuration.
  {CCxxx0_BSCFG   ,0x1C},   // BSCFG     Bit synchronization Configuration.
  {CCxxx0_AGCCTRL2,0xC7},   // AGCCTRL2  AGC control.
  {CCxxx0_AGCCTRL1,0x00},   // AGCCTRL1  AGC control.
  {CCxxx0_AGCCTRL0,0xB2},   // AGCCTRL0  AGC control.
  {CCxxx0_FSCAL3  ,0xEA},   // 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.
};
Реклама
Ответить

Вернуться в «Разные вопросы по МК»