打印

CC1101接收过程中的问题

[复制链接]
3457|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Unshining|  楼主 | 2015-1-4 21:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在使用MSP430+CC1101,将IOCFG0设置为0x06(SYNC),IOCFG2设置为0x07(RXCRCOK).
之前一直使用GDO2中断进行数据接收,一切正常。
现在需要改为使用SYNC中断进行数据接收,方法是:完全关闭GDO2中断。在数据发送前关闭GDO0中断,发送完成后清除GDO0标志位并打开GDO2中断。在GDO0中断发生后,等待GDO0变为低电平,然后再读取RXFIFO中的数据。
现在有一个问题:GDO0永远不会自动变为低电平,除非开始读取RXFIFO中的数据。
代码如下:
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
                P1IFG=0;
                INT8U Length=0;
                while (GDO0)
                {

                }
                if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0
                {
                        Length = halSpiReadReg(CCxxx0_RXFIFO);
                        halSpiReadReg(CCxxx0_RXFIFO);
                        halSpiReadBurstReg(CCxxx0_RXFIFO, RxBuffer, Length-1);
                        halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);
                        halSpiStrobe(CCxxx0_SFRX);
                        if(status[1] & CRC_OK)
                        {
                                RFPackage.RFCommand=(enum RFCommandTypeEnum)RxBuffer[0];
                                __bic_SR_register_on_exit(LPM3_bits);
                        }
                }
                else
                {
                        halSpiStrobe(CCxxx0_SFRX);       
                }
}

每次接收数据时,均会卡在while(GDO0)。卡住时进行watch,发现GDO0、GDO2均为1,即此时已经完整接收一帧了,但是GDO0未取消置位。
这是什么原因,有谁知道吗?

相关帖子

沙发
dirtwillfly| | 2015-1-5 08:43 | 只看该作者
这段程序是msp430的程序?
CC1101你用的是现成的模块?什么型号?

使用特权

评论回复
板凳
Unshining|  楼主 | 2015-1-5 09:15 | 只看该作者
dirtwillfly 发表于 2015-1-5 08:43
这段程序是msp430的程序?
CC1101你用的是现成的模块?什么型号?

是430的程序。
CC1101使用现成的模块。具体型号不知道,很久以前实体店买的。模块引出了10根插针,2个VCC,2个GND,SPI三根线,外加CSN,GDO0与GDO2.

使用特权

评论回复
地板
Unshining|  楼主 | 2015-1-5 09:16 | 只看该作者
dirtwillfly 发表于 2015-1-5 08:43
这段程序是msp430的程序?
CC1101你用的是现成的模块?什么型号?

使用MSP430F6726.程序中忘了声明status[2]了。

使用特权

评论回复
5
qljqlj| | 2015-1-5 15:07 | 只看该作者
我就是设置在gdo0,接收中断,没问题,很正常的

使用特权

评论回复
6
Unshining|  楼主 | 2015-1-5 15:24 | 只看该作者
qljqlj 发表于 2015-1-5 15:07
我就是设置在gdo0,接收中断,没问题,很正常的

可否将你的接受代码贴出来一下?

使用特权

评论回复
7
qljqlj| | 2015-1-5 15:46 | 只看该作者
和你的一样,就是gdo0 设置为0x06,其他没啥区别了吧

使用特权

评论回复
8
Unshining|  楼主 | 2015-1-5 17:28 | 只看该作者
qljqlj 发表于 2015-1-5 15:46
和你的一样,就是gdo0 设置为0x06,其他没啥区别了吧

我的GDO0是0X06啊,为什么卡在while(GDO0)呢。。好奇怪。。。

使用特权

评论回复
9
玲玲灵灵2013| | 2015-10-10 16:41 | 只看该作者
Unshining 发表于 2015-1-5 17:28
我的GDO0是0X06啊,为什么卡在while(GDO0)呢。。好奇怪。。。

你的解决了吗?我也想知道为什么卡在while(GDO0)那了

使用特权

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

本版积分规则

7

主题

63

帖子

0

粉丝