This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

求助 CC1110 RF发送数据问题

您好,我第一次接触这种51的射频IC,最近在搞一个用CC1110f32通讯的项目,26MHz时钟晶振,用串口接收PC传来的数据然后通过RF发送到另外一个模块,当串口的的波特率设置在4800或更低时,RF通讯是正常的。当串口的波特率设置在9600或更高时,通讯就不正常了,RF只能发送串口传来的第一个数据包。会在 while(RFTXRXIF == 0) ;这一句等待很久。RF配置是通过SmartRFStudio的推荐配的,50 k速率, GFSK 调制方式, 540 kHz 接收滤波带宽,配置频率范围是433 MHz,只是PKTCRL0、PKTCRL1改了。

PKTCTRL1 = 0x00;
PKTCTRL0 = 0x04;

一直找不到原因,恳请指点下。

  • 应该是RF发送的速度慢点,你那个串口发来的数据快的话,这边来不及发送 出去。如果是按照例程配置的,不应该达不到9600这么慢的速度啊。

  • PA_TABLE0 = 0xC0; //功率设置为10dBm
    FREQ2 = 0x10; // 设置频段433M
    FREQ1 = 0xAC;
    FREQ0 = 0x4E;
    // 下面的配置通过 SmartRFStudio高频软件中CC1110部分配置,
    // 250 k速率, GFSK 调制方式, 540 kHz 接收滤波带宽.
    // 配置频率范围是433 MHz或868/915 MHz
    FSCTRL1 = 0x12; // 频率合成控制高位
    FSCTRL0 = 0x00; //频率合成控制低位
    MDMCFG4 = 0x2D; // 调制解调配置
    MDMCFG3 = 0x3B;
    MDMCFG2 = 0x13;
    MDMCFG1 = 0x22;
    MDMCFG0 = 0xF8;
    DEVIATN = 0x62; //调制解调背离配置 (FSK调制时使能).
    FREND1 = 0x56;
    FREND0 = 0x10;
    MCSM0 = 0x18; // 无线控制状态配置
    FOCCFG = 0x1D; // 频率偏移补偿配置
    BSCFG = 0x1C; // 位同步配置
    AGCCTRL2 = 0xC7; // AGC控制
    AGCCTRL1 = 0x00;
    AGCCTRL0 = 0xB0;
    FSCAL3 = 0xEA; // 频率合成校准
    FSCAL2 = 0x0A ;
    FSCAL0 = 0x1F;
    TEST2 = 0x88; // 测试设置
    TEST1 = 0x31;
    TEST0 = 0x09;
    ADDR =0x00;
    PKTCTRL1 = 0x00;
    PKTCTRL0 = 0x04;
    ADDR = 0x00; // Device Address

    void RF_sendUchar(uchar DATA)
    {
    SIDLE();
    STX();
    RFIF &= ~IRQ_DONE;
    RFTXRXIF = 0;
    while(RFTXRXIF == 0);//等待发送结束
    RFD =DATA ;//发送数据
    RFTXRXIF = 0; //清除发送标志
    while(RFIF & IRQ_DONE == 0); //等待发送结束
    RFIF &= ~IRQ_DONE; //清结束标志
    S1CON &= ~0x03; //Clear the general RFIF interrupt register

    }

    void RF_receive()
    {
     SIDLE();
     SRX();
     RFTXRXIF = 0;
     while(RFTXRXIF == 0) ; RFTXRXIF = 0;
    RF_Re_Data = RFD;

    RFIF &= ~IRQ_DONE;
    S1CON &= ~0x03;
    }

    以上是RF的配置以及接收发送函数,烦请帮忙看一下是否有什么问题,现在还没找到原因。非常感谢!

  • 不是RF配置问题。是你的RF操作流程不对。先idle然后发送或接受。我有用中断和DMA两个方式实现的rf。你可以百度的到。用dma方式要可靠些。