Panchip Cop.

查看: 1693|回复: 2

xn297L在同配置下接收不到数据怎么办

[复制链接]

2

主题

3

帖子

5

积分

新注册客户

Rank: 1

积分
5
发表于 2022-8-12 10:34:14 | 显示全部楼层 |阅读模式

/*-------------------------------------------------
*  函数名:  main
*        功能:  主函数
*  输入:  无
*  输出:  无
--------------------------------------------------*/
void main(void)
{
        POWER_INITIAL();                        //系统初始化
    //MnbnSPIInit();
         while(!RF_Init());        //在此函数中,应该确保和接收端的通信模式,RF 地址,Channel,发送速率和Payload长度一致。
        //MnbnTXInit();
     RF_SetWhitening(RF_WHITENING_ON);   
    RF_RxMode();
    RF_SetChannel(2);
    //RF_Carrier(20);
        while(1)
        {
                //ble_craft_packet_noconn(37);
               
                TransResult=RF_DumpRxData(rx_buf,8);
        if(TransResult&TX_DS_FLAG)
                {
                        LEDCorrect=1;
                        NTCNegative=0;
                }
                else
                {
                        LEDCorrect=0;
                        NTCNegative=0;
                }
        RF_ClearStatus();
                /**
                ble_craft_packet_noconn(38);
        RF_SetChannel(26);
        RF_TxData(rx_buf,37);
                TransResult=RF_ReadReg(STATUS);
        if(TransResult&TX_DS_FLAG)
                {
                        LEDCorrect=1;
                        NTCNegative=0;
                }
                else
                {
                        LEDCorrect=0;
                        NTCNegative=0;
                }
        RF_ClearStatus();
        ble_craft_packet_noconn(39);
        RF_SetChannel(80);
        RF_TxData(rx_buf,37);
                TransResult=RF_ReadReg(STATUS);
        if(TransResult&TX_DS_FLAG)
                {
                        LEDCorrect=1;
                        NTCNegative=0;
                }
                else
                {
                        LEDCorrect=0;
                        NTCNegative=0;
                }
        RF_ClearStatus();
               LEDCorrect=0;
                NTCNegative=0;
        DelayMs(250);
        LEDCorrect=0;
                NTCNegative=0;
        DelayMs(250);
        **/
        }
/******************************************************************************/
// @brief  RF初始化
// @param  None
// @retval 1:初始化成功
//         0: 初始化失败            
/******************************************************************************/
unsigned char  RF_Init(void)
{
     unsigned char  BB_cal_data[]        = {0x12,0xED,0x67,0x9C,0x46};
     unsigned char  RF_cal_data[]        = {0xF6,0x3F,0x5D};
     unsigned char  RF_cal2_data[]        = {0x45,0x21,0xEF,0x2C,0x5A,0x40};
     unsigned char  Dem_cal_data[]        = {0x01};
     unsigned char  Dem_cal2_data[]        = {0x0B,0xDF,0x02};

     unsigned char  feature = 0x00;  //使用软件CE

    MnbnSPIInit();

    RF_WriteReg(RST_FSPI, 0x5A);                                                                //Software Reset                           
    RF_WriteReg(RST_FSPI, 0XA5);

    RF_WriteReg(FLUSH_TX, 0);                                                                        // CLEAR TXFIFO                                             
    RF_WriteReg(FLUSH_RX, 0);                                                                        // CLEAR  RXFIFO
    RF_WriteReg(W_REGISTER + STATUS, 0x70);                                                        // CLEAR  STATUS       
    RF_WriteReg(W_REGISTER + EN_RXADDR, 0x01);                                                        // Enable Pipe0
    RF_WriteReg(W_REGISTER + SETUP_AW,  0x03);                                                        // address witdth is 5 unsigned chars
    RF_WriteReg(W_REGISTER + RF_CH,     DEFAULT_CHANNEL);                                       // 2402M HZ
    RF_WriteReg(W_REGISTER + RX_PW_P0, PAYLOAD_WIDTH );                                                // 8 unsigned chars
    RF_WriteBuf(W_REGISTER + TX_ADDR,  TX_ADDRESS_DEF, sizeof(TX_ADDRESS_DEF));                        // Writes TX_Address to XN297L
    RF_WriteBuf(W_REGISTER + RX_ADDR_P0,TX_ADDRESS_DEF, sizeof(TX_ADDRESS_DEF));                // RX_Addr0 same as TX_Adr for Auto.Ack  
  RF_WriteBuf(W_REGISTER + RX_ADDR_P1,TX_ADDRESS_DEF, sizeof(TX_ADDRESS_DEF));       
    RF_WriteBuf(W_REGISTER + BB_CAL,    BB_cal_data,  sizeof(BB_cal_data));
    RF_WriteBuf(W_REGISTER + RF_CAL2,   RF_cal2_data, sizeof(RF_cal2_data));
    RF_WriteBuf(W_REGISTER + DEM_CAL,   Dem_cal_data, sizeof(Dem_cal_data));
    RF_WriteBuf(W_REGISTER + RF_CAL,    RF_cal_data,  sizeof(RF_cal_data));
    RF_WriteBuf(W_REGISTER + DEM_CAL2,  Dem_cal2_data,sizeof(Dem_cal2_data));
    RF_WriteReg(W_REGISTER + DYNPD, 0x00);                                                                    
    RF_WriteReg(W_REGISTER + RF_SETUP,  RF_POWER);                                                // 9dbm  1Mbps                
    RF_WriteReg(ACTIVATE, 0x73);

    RF_WriteReg(W_REGISTER + SETUP_RETR,0x00);                                                        // Disable retrans...        
    RF_WriteReg(W_REGISTER + EN_AA,     0x00);                                                        // Disable AutoAck

   // if(PAYLOAD_WIDTH >32)
      feature = 0x18;                                                           //设置最大paylaod长度为64unsigned chars

    RF_WriteReg(W_REGISTER + FEATURE, feature);

    if(RF_ReadReg(RF_CH)!=DEFAULT_CHANNEL)
      return 0;
    return 1;
}

/******************************************************************************/
// @brief  RF设置为载波模式
// @param  ucChannel_Set:载波的频点
// @retval None            
/******************************************************************************/
void RF_Carrier(  unsigned char  ucChannel_Set)
{
     unsigned char  BB_cal_data[]        = {0x12,0xED,0x67,0x9C,0x46};
     unsigned char  RF_cal_data[]        = {0xF6,0x3F,0x5D};
     unsigned char  RF_cal2_data[]        = {0x45,0x21,0xEF,0x2C,0x5A,0x40};
     unsigned char  Dem_cal_data[]        = {0xE1};
     unsigned char  Dem_cal2_data[]        = {0x0B,0xDF,0x02};      

    RF_WriteReg(RST_FSPI, 0x5A);                                                                //Software Reset                           
    RF_WriteReg(RST_FSPI, 0XA5);

     unsigned char  feature = 0x00; //使用软件CE

    RF_WriteReg(W_REGISTER + FEATURE, feature);

    CE_LOW;
    delay_100us(5);                                                                                 //delay 500us
    RF_WriteReg(W_REGISTER + CONFIG, 0X8E);                                                        //tx mode
    RF_WriteReg(W_REGISTER + RF_CH, ucChannel_Set);                                                //单载波频点          
    RF_WriteReg(W_REGISTER + RF_SETUP, RF_POWER);                                                      //9dbm
    RF_WriteBuf(W_REGISTER + BB_CAL,    BB_cal_data,  sizeof(BB_cal_data));
    RF_WriteBuf(W_REGISTER + RF_CAL2,   RF_cal2_data, sizeof(RF_cal2_data));
    RF_WriteBuf(W_REGISTER + DEM_CAL,   Dem_cal_data, sizeof(Dem_cal_data));
    RF_WriteBuf(W_REGISTER + RF_CAL,    RF_cal_data,  sizeof(RF_cal_data));
    RF_WriteBuf(W_REGISTER + DEM_CAL2,  Dem_cal2_data,sizeof(Dem_cal2_data));
    delay_100us(5);       
}
求救各位大佬!

回复

使用道具 举报

6

主题

49

帖子

1万

积分

磐启员工

Rank: 7Rank: 7Rank: 7

积分
10796
发表于 2022-8-15 11:23:24 | 显示全部楼层
本帖最后由 刘海兵 于 2022-8-15 11:25 编辑

XN297L_RX.png
TX_DS_FLAG 是发射完成标志位,接收应该使用RX_DR_FLAG判断

回复

使用道具 举报

1

主题

17

帖子

17

积分

注册客户

Rank: 3Rank: 3

积分
17
发表于 2022-8-16 17:25:18 | 显示全部楼层
学习了学习了
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表