打印

nRF2401通信问题

[复制链接]
1270|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
victor3l|  楼主 | 2016-11-26 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 victor3l 于 2016-11-26 17:28 编辑

大家好,我使用 STM32的单片机来控制nRF2401.现在可以确定硬件上没有问题,SPI和nrf通信正常(读写寄存器都OK).我使用模块厂家给的例程,现在是接收机能收到载波(读载波寄存器能够得到1.这个载波时有时无,我发射机端每个1秒钟发送一次数据,但是这个载波信号和发送端每秒发一次不匹配.), 但是收不到数据. 在调试的过程中偶尔有一次收到了数据,以后就没有收到过.整个配置是:

void nRF2401_Init_Demo( void )
{
    uint8_t addr[5] = {0xE7,0xE7,0xE7,0xE7,0xE7};

    NRF2401_CE_H( );
    nRF2401_ClearIRQ( IRQ_ALL );

    nRF2401_WriteSingleByte( DYNAMIC_PAYLOAD_LENGTH, ( 1 << 0 ) );         //使能通道1动态数据长度
    nRF2401_WriteSingleByte( FEATURE, 0x07 );
    nRF2401_ReadSingleByte( DYNAMIC_PAYLOAD_LENGTH );
    nRF2401_ReadSingleByte( FEATURE );


    nRF2401_WriteSingleByte( CONFIG_ADDR, /*( 1<<MASK_MAX_RT ) |*/                //重发次数最大后拉低IRQ
                             ( 1 << EN_CRC ) |     //使能CRC 1个字节
                             ( 1 << PWR_UP ) );    //开启设备
    nRF2401_WriteSingleByte( EN_AA_ENHANCE, ( 1 << ENAA_P0 ) );                   //通道0自动应答
    nRF2401_WriteSingleByte( EN_RXADDR, ( 1 << ERX_P0 ) );                //通道0接收
    nRF2401_WriteSingleByte( SETUP_ADDRESS_WIDTH, ADDR_WIDTH_5 );                             //地址宽度 5个字节
    nRF2401_WriteSingleByte( SETUP_RETX, ARD_4000US |
                             ( REPEAT_CNT & 0x0F ) );                 //重复等待时间 250us,以及使能重复
    nRF2401_WriteSingleByte( RF_CHANNEL_SET, 60 );                                     //初始化通道
    nRF2401_WriteSingleByte( RF_SETUP, 0x26 );//设置功率和速率

    nRF2401_SetTxAddr( &addr[0], 5 );                      //设置TX地址
    nRF2401_SetRxAddr( 0, &addr[0], 5 );                   //设置RX地址
}



发射机和接收机使用同样的配置. 发射机读状态寄存器是0x1E(重发次数最大了),接收机的状态为是0x0E
请问 :有载波但是没有收到数据的情况有什么导致的啊?

如果不使能自动重发和自动应答,仅仅调发射端.那么我发射机的状态依然是重发次数达到最大.而不是发射结束.
请大家给些调试nRF2401的经验.  谢谢

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

308

帖子

5

粉丝