CC1101模块接收不到数据

[复制链接]
1662|4
 楼主| huigoushang 发表于 2014-11-28 19:31 | 显示全部楼层 |阅读模式
发送端使用CC1101+MSP430发送数据
while (!(GDO0));
// Wait for GDO0 to be cleared -> end of packet
while (GDO0);
//halSpiStrobe(CCxxx0_SFTX);这条指令 能运行通过,没有卡住,说明发送成功?
 楼主| huigoushang 发表于 2014-11-28 19:31 | 显示全部楼层
本帖最后由 huigoushang 于 2014-11-28 19:32 编辑

uint halRfReceivePacket(uchar *rxBuffer, uchar *length)
{
    uchar status[2];
    uchar packetLength;
    uchar i=(*length)*4;  // 具体多少要根据datarate和length来决定
    halSpiStrobe(CCxxx0_SRX);                //进入接收状态
    //delay(5);
    //while (!GDO1);
    //while (GDO1);
    delay(20);
    while (GDO0)
    {
        delay(20);
        --i;
        if(i<1)
            return 0;            
    }         
    if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0                    SPI读状态寄存输出当前值
    {

                LED_2=0;
        packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
        if (packetLength <= *length)                 //如果所要的有效数据长度小于等于接收到的数据包的长度
        {
            halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据
            *length = packetLength;                                //把接收数据长度的修改为当前数据的长度

            // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
            halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);         //读出CRC校验位
            halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
            return (status[1] & CRC_OK);                        //如果校验成功返回接收成功
        }
        else
        {
            *length = packetLength;
            halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
            return 0;
        }
    }

    else
        return 0;
}

zhangmangui 发表于 2014-11-29 16:59 | 显示全部楼层
没用过  帮忙顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则

168

主题

1677

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部