Здравствуйте!!! подскажите в чем может быть проблема? нет приема сообщения, если поставить максимальную мощность по индикатору напряженности поля вижу что есть передача, а вот приема нет
Код
        //работа с CCxxx0
#include "sx1231portirovanieH.h"                                          
#include "__DELAY_H.h"
#include"Mod_UART.h"
#include <p24FJ64GA002.h>

unsigned char RegistersCfg[] = { // SX1231 configuration registers values
    DEF_FIFO, // Left for convenience, not to be changed
    DEF_OPMODE | RF_OPMODE_SEQUENCER_ON | RF_OPMODE_LISTEN_OFF | RF_OPMODE_STANDBY,                      
    DEF_DATAMODUL | RF_DATAMODUL_DATAMODE_PACKET | RF_DATAMODUL_MODULATIONTYPE_FSK | RF_DATAMODUL_MODULATIONSHAPING_00,                    
    DEF_BITRATEMSB | RF_BITRATEMSB_1200,                  
    DEF_BITRATELSB | RF_BITRATELSB_1200,                  
    DEF_FDEVMSB | RF_FDEVMSB_5000,                      
    DEF_FDEVLSB | RF_FDEVLSB_5000,                      
    DEF_FRFMSB | RF_FRFMSB_865,                      
    DEF_FRFMID | RF_FRFMID_865,                      
    DEF_FRFLSB | RF_FRFLSB_865,                      
    DEF_OSC1,                        
    DEF_OSC2,                        
    DEF_LOWBAT | RF_LOWBAT_OFF | RF_LOWBAT_TRIM_1835,                                              
    DEF_LISTEN1 | RF_LISTEN1_RESOL_4100 | RF_LISTEN1_CRITERIA_RSSI | RF_LISTEN1_END_01,                      
    DEF_LISTEN2 | RF_LISTEN2_COEFIDLE_VALUE,                      
    DEF_LISTEN3 | RF_LISTEN3_COEFRX_VALUE,
    DEF_VERSION,             // Read Only                      

    DEF_PALEVEL | RF_PALEVEL_PA0_ON | RF_PALEVEL_PA1_OFF | RF_PALEVEL_PA2_OFF | RF_PALEVEL_OUTPUTPOWER_11111,                          
    DEF_PARAMP | RF_PARAMP_40,                          
    DEF_OCP | RF_OCP_ON | RF_OCP_TRIM_100,                          

    DEF_AGCREF | RF_AGCREF_AUTO_ON | RF_AGCREF_LEVEL_MINUS80,                          
    DEF_AGCTHRESH1 | RF_AGCTHRESH1_SNRMARGIN_101 | RF_AGCTHRESH1_STEP1_16,                          
    DEF_AGCTHRESH2 | RF_AGCTHRESH2_STEP2_3 | RF_AGCTHRESH2_STEP3_11,                          
    DEF_AGCTHRESH3 | RF_AGCTHRESH3_STEP4_9 | RF_AGCTHRESH3_STEP5_11,                          
    DEF_LNA | RF_LNA_ZIN_200 | RF_LNA_LOWPOWER_OFF | RF_LNA_GAINSELECT_AUTO,                          
    DEF_RXBW | RF_RXBW_DCCFREQ_010 | RF_RXBW_MANT_24 | RF_RXBW_EXP_4,                          
    DEF_AFCBW | RF_AFCBW_DCCFREQAFC_100 | RF_AFCBW_MANTAFC_20 | RF_AFCBW_EXPAFC_3,                        
    DEF_OOKPEAK | RF_OOKPEAK_THRESHTYPE_PEAK | RF_OOKPEAK_PEAKTHRESHSTEP_000 | RF_OOKPEAK_PEAKTHRESHDEC_000,                        
    DEF_OOKAVG | RF_OOKAVG_AVERAGETHRESHFILT_10,                                  
    DEF_OOKFIX | RF_OOKFIX_FIXEDTHRESH_VALUE,                                  
    DEF_AFCFEI | RF_AFCFEI_AFCAUTOCLEAR_OFF | RF_AFCFEI_AFCAUTO_OFF,                              
    DEF_AFCMSB,             // Read Only                              
    DEF_AFCLSB,             // Read Only                              
    DEF_FEIMSB,             // Read Only                              
    DEF_FEILSB,             // Read Only                              
    DEF_RSSICONFIG | RF_RSSI_FASTRX_OFF,                          
    DEF_RSSIVALUE,          // Read Only                          

    DEF_DIOMAPPING1 | RF_DIOMAPPING1_DIO0_00 | RF_DIOMAPPING1_DIO1_00 | RF_DIOMAPPING1_DIO2_00 | RF_DIOMAPPING1_DIO3_00,
    DEF_DIOMAPPING2 | RF_DIOMAPPING2_DIO4_00 | RF_DIOMAPPING2_DIO5_01 | RF_DIOMAPPING2_CLKOUT_OFF,                          
    DEF_IRQFLAGS1,
    DEF_IRQFLAGS2,                                                                
    DEF_RSSITHRESH | 228,    // Must be set to (-Sensitivity x 2)                          
    DEF_RXTIMEOUT1 | RF_RXTIMEOUT1_RXSTART_VALUE,                          
    DEF_RXTIMEOUT2 | RF_RXTIMEOUT2_RSSITHRESH_VALUE,                          

    DEF_PREAMBLEMSB | RF_PREAMBLESIZE_MSB_VALUE,                                  
    DEF_PREAMBLELSB | RF_PREAMBLESIZE_LSB_VALUE,                                  
    DEF_SYNCCONFIG | RF_SYNC_OFF | RF_SYNC_FIFOFILL_AUTO | RF_SYNC_SIZE_4 | RF_SYNC_TOL_0,                       
    DEF_SYNCVALUE1 | 0x69,                          
    DEF_SYNCVALUE2 | 0x81,                          
    DEF_SYNCVALUE3 | 0x7E,                          
    DEF_SYNCVALUE4 | 0x96,                          
    DEF_SYNCVALUE5 | RF_SYNC_BYTE5_VALUE,                          
    DEF_SYNCVALUE6 | RF_SYNC_BYTE6_VALUE,                          
    DEF_SYNCVALUE7 | RF_SYNC_BYTE7_VALUE,                          
    DEF_SYNCVALUE8 | RF_SYNC_BYTE8_VALUE,                          
    DEF_PACKETCONFIG1 | RF_PACKET1_FORMAT_VARIABLE | RF_PACKET1_DCFREE_OFF | RF_PACKET1_CRC_OFF | RF_PACKET1_CRCAUTOCLEAR_ON | RF_PACKET1_ADRSFILTERING_OFF,                      
    DEF_PAYLOADLENGTH | 255,                              
    DEF_NODEADRS | RF_NODEADDRESS_VALUE,                                      
    DEF_BROADCASTADRS | RF_BROADCASTADDRESS_VALUE,                              
    DEF_AUTOMODES | RF_AUTOMODES_ENTER_OFF | RF_AUTOMODES_EXIT_OFF | RF_AUTOMODES_INTERMEDIATE_SLEEP,                                  
    DEF_FIFOTHRESH | RF_FIFOTHRESH_TXSTART_FIFONOTEMPTY | RF_FIFOTHRESH_VALUE,                          
    DEF_PACKETCONFIG2 | RF_PACKET2_RXRESTARTDELAY_1BIT | RF_PACKET2_AUTORXRESTART_OFF | RF_PACKET2_AES_OFF,                      
    DEF_AESKEY1 | RF_AESKEY1_VALUE,                              
    DEF_AESKEY2 | RF_AESKEY2_VALUE,                              
    DEF_AESKEY3 | RF_AESKEY3_VALUE,                              
    DEF_AESKEY4 | RF_AESKEY4_VALUE,                              
    DEF_AESKEY5 | RF_AESKEY5_VALUE,                              
    DEF_AESKEY6 | RF_AESKEY6_VALUE,                              
    DEF_AESKEY7 | RF_AESKEY7_VALUE,                              
    DEF_AESKEY8 | RF_AESKEY8_VALUE,                              
    DEF_AESKEY9 | RF_AESKEY9_VALUE,                              
    DEF_AESKEY10 | RF_AESKEY10_VALUE,                              
    DEF_AESKEY11 | RF_AESKEY11_VALUE,                              
    DEF_AESKEY12 | RF_AESKEY12_VALUE,                              
    DEF_AESKEY13 | RF_AESKEY13_VALUE,                              
    DEF_AESKEY14 | RF_AESKEY14_VALUE,                              
    DEF_AESKEY15 | RF_AESKEY15_VALUE,                              
    DEF_AESKEY16 | RF_AESKEY16_VALUE,                              
    
    DEF_TEMP1 | RF_TEMP1_ADCLOWPOWER_ON,                                    
    DEF_TEMP2                                
};

//*****************************************************************************
unsigned char txbuff[16];
unsigned char rxbuff[16];
unsigned char LENG;
//----------------------------------------------------------------------------------------------------------------------
unsigned char While_SO(void)                                                      
{
  unsigned int TWait;                                         

  TWait=512;                                                  
  while(SO && TWait) { Nop(); TWait--; }                
  if(TWait) return 1;                                          
  else      return 0;                                          
}
//----------------------------------------------------------------------------------------------------------------------
unsigned char SPI_Byte_RW(unsigned char Data)                                    
{
  unsigned char  i;                                            
  unsigned char  Rz;                                          

  Rz=0;                                                        
  SCLK=0;                                                      Œ
  for(i=0;i<8;i++)                                            
  {
    if(Data & 0b10000000) SI=1; else SI=0;                      
    Rz<<=1;                                                    
    SCLK=1;                                                    
    if(SO) Rz|=0b00000001;                                      
    SCLK=0;                                                    
    Data<<=1;                                                  
  }
  return Rz;                                                    
}
//----------------------------------------------------------------------------------------------------------------------
void halSpiWriteReg(unsigned char Adr,unsigned char Data)                            
{
  CSN=0;                                                      
   if(While_SO())
   {
     SPI_Byte_RW(Adr | 0b10000000);                                
     SPI_Byte_RW(Data);                                            
   }
  CSN=1;                                                        
}
//----------------------------------------------------------------------------------------------------------------------
unsigned char halSpiReadReg(unsigned char Addr)                                    
{
  unsigned char X;                                            

  CSN=0;                                                        
  if(While_SO())                                                
  {
    SPI_Byte_RW(Addr & 0b01111111);                            
    X=SPI_Byte_RW(0x00);                                        
  }
  else X=0;                                                    

  CSN=1;                                                      
  return X;                                                    
}
//----------------------------------------------------------------------------------------------------------------------
void halSpiStrobe(unsigned char Komm)                                                
{
  CSN=0;                                                      
  if(While_SO())
  {

  
  halSpiWriteReg(REG_OPMODE, (RegistersCfg[REG_OPMODE] & 0xE3) | Komm);        
                while ((halSpiReadReg(REG_IRQFLAGS1) & RF_IRQFLAGS1_MODEREADY) == 0x00);
  }
  CSN=1;                                                        ‚
}

//----------------------------------------------------------------------------------------------------------------------
void halSpiWriteBurstReg(unsigned char Addr,unsigned char *Buffer,unsigned char Count)
{                                                                                
  unsigned char  i;                                            

  CSN=0;                                                        
  if(While_SO())                                                
  {
    SPI_Byte_RW(Addr | 0b10000000);                            
    for(i=0;i<Count;i++) SPI_Byte_RW(Buffer[i]);                
  }
  CSN=1;                                                        
}

//----------------------------------------------------------------------------------------------------------------------
void halSpiReadBurstReg(unsigned char Addr,unsigned char *buffer,unsigned char count)  
{
  unsigned char  i;                                            

  CSN=0;                                                        
  if(While_SO())                                                
  {
    SPI_Byte_RW(Addr | 0b01111111);                            
    for(i=0;i<count;i++) buffer[i]=SPI_Byte_RW(0x00);          ‚
  }
  CSN=1;                                                        
}
//----------------------------------------------------------------------------------------------------------------------
void POWER_UP_RESET_SX1231(void)                                                    
{
  unsigned char i;                                              
  CSN=1;                                                      
  delay_us(1);                                                
  CSN=0;
  delay_us(1);                                                   
  CSN=1;
  i=40;                                                         
  while(i) {delay_us(250); i--; }
  halSpiStrobe(RF_STANDBY);                                    
}
//----------------------------------------------------------------------------------------------------------------------
void halRfWriteRfSettings(void)                                                    
{
  unsigned char i;                                            

   for(i = 1; i <= REG_TEMP2; i++)
   {
          halSpiWriteReg(i, RegistersCfg[i]);
    }                      
    halSpiStrobe(RF_STANDBY);
}
//----------------------------------------------------------------------------------------------------------------------
void halRfSendPacket(unsigned char *txBuffer,unsigned char size)                
{
  unsigned short Wait;                                         
  halSpiStrobe(RF_STANDBY);
  halSpiWriteBurstReg(REG_FIFO, txBuffer, size);          
  halSpiStrobe(RF_TRANSMITTER);                                  

  Wait=200;                                                  
//  while(Wait)
//  {
//   if((halSpiReadReg(REG_IRQFLAGS2)&RF_IRQFLAGS2_PACKETSENT)==0) { delay_us(100); Wait--; }  
//   else break;  // Wait for GDO0 to be set -> sync transmitted
//  }
  while((halSpiReadReg(REG_IRQFLAGS2)&RF_IRQFLAGS2_PACKETSENT)==0);
  
  halSpiStrobe(RF_STANDBY);
  // halSpiStrobe(RF_RECEIVER);
}
//----------------------------------------------------------------------------------------------------------------------
unsigned char halRfReceivePacket(unsigned char *rxBuffer)  
{
  unsigned char  PacketLength;                                
if((halSpiReadReg(REG_IRQFLAGS2) &  RF_IRQFLAGS2_FIFONOTEMPTY))
  //if((halSpiReadReg(REG_IRQFLAGS2) & RF_IRQFLAGS2_PAYLOADREADY))  
  {

    PacketLength = halSpiReadReg(REG_FIFO);
     if(PacketLength <= LENG)                                 //Read data from RX FIFO and store in rxBuffer
     {
      halSpiReadBurstReg(REG_FIFO,rxBuffer,PacketLength);  
      return (1);
     }
    else                                                    
     {
       halSpiStrobe(RF_STANDBY);
       halSpiStrobe(RF_RECEIVER);
       return 0;                                               ‚
     }
   }
  
  else
     {
      halSpiStrobe(RF_RECEIVER);
      return 0;
     }                                                  ‚
}

// -----------------------------------------------------------------------------
void init_SX1231(void)
  {

     SO_TRIS=1;
     SCLK_TRIS=0;
     SI_TRIS=0;
     CSN_TRIS=0;
     RESET_TRIS=0;
     CSN=1;
     RESET_=0;
     POWER_UP_RESET_SX1231();          
     halRfWriteRfSettings();              
     halSpiStrobe(RF_RECEIVER);          
    // LENG=sizeof(rxbuff);
  }
//-----------------------------------------------------------------------------
unsigned int ReadRssi(void)
{ // Must be called while in RX
    unsigned int value;
    halSpiWriteReg(REG_RSSICONFIG, RegistersCfg[REG_RSSICONFIG] | RF_RSSI_START); // Triggers RSSI measurement
    while ((halSpiReadReg(REG_RSSICONFIG) & RF_RSSI_DONE) == 0x00);               // Waits for RSSI measurement to be completed
    value = halSpiReadReg(REG_RSSIVALUE);                                         // Reads the RSSI result
    return value;
}

/*******************************************************************
** ReadFei : Triggers FEI measurement and returns its value       **
********************************************************************
** In  : -                                                        **
** Out : value                                                    **
*******************************************************************/
signed int ReadFei(void)
{ // Must be called while in RX
    signed int value;
    halSpiWriteReg(REG_AFCFEI, RegistersCfg[REG_AFCFEI] | RF_AFCFEI_FEI_START);   // Triggers FEI measurement
    while ((halSpiReadReg(REG_AFCFEI) & RF_AFCFEI_FEI_DONE) == 0x00);             // Waits for FEI measurement to be completed
    value = ((halSpiReadReg(REG_FEIMSB) << 8) | halSpiReadReg(REG_FEILSB));        // Reads the FEI result
    return value;
}

передаю
Код
halRfSendPacket((char*)&txbuff,2);

принимаю
Код
if(halRfReceivePacket(&rxbuff))
    {
     Led_set(&LedState,100,0,2);  
    }