打印

cc2500 发送死机问题

[复制链接]
2677|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flywith|  楼主 | 2011-8-18 21:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
cc2500(叫a)大部分时间接受来自单片机的数据,发送给另一块cc2500,叫b。30s 的时间,cc2500(叫a)发送命令给b,然后接受数据。接受不到就退出。  但是当cc2500 叫做a的,发送了一段时间就死机,
void halRfSendPacket(INT8U *txBuffer, INT8U size)
{
    halSpiWriteReg(CCxxx0_TXFIFO, size);                     //100
    halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据   //400
    halSpiStrobe(CCxxx0_STX); //进入发送模式发送数据             //10
    // Wait for GDO0 to be set -> sync transmitted
    while (!(P2IN&0x02));
  
    // Wait for GDO0 to be cleared -> end of packet
    while ((P2IN&0x02));
halSpiStrobe(CCxxx0_SFTX);
死在while里面,一直不动了,这个时间不确定的,有时长一个小时,有时间
10分钟的。 这个是什么情况

相关帖子

沙发
flywith|  楼主 | 2011-8-18 21:49 | 只看该作者
还有我一直发送数据的话很正常,不会死在while里面的

使用特权

评论回复
板凳
flywith|  楼主 | 2011-8-18 21:50 | 只看该作者
更加离谱的是叫做b机器的,一直没有问题,那个cc2500也是在收发之间切换的啊,只是一个是连续的收,30m发一次吧,呵呵

使用特权

评论回复
地板
flywith|  楼主 | 2011-8-18 21:51 | 只看该作者
哎。有没有人遇到过啊,

使用特权

评论回复
5
chunyang| | 2011-8-18 22:17 | 只看该作者
楼主可以将CC2500做交叉替换,即ab互换,如果问题依旧说明是你程序的问题,否则是CC2500及外电路的问题。

使用特权

评论回复
6
草履虫| | 2011-8-18 23:35 | 只看该作者
其实这个问题很好查.
如果怀疑下面的代码死掉了.那么根据P2IN的变化最长的时间设置一个计数器,如果超过了变化时间,那么程序就退出.同时做超时变量, 这样的话,就能够查到是不是真的是死在这两个地方了.
// Wait for GDO0 to be set -> sync transmitted
    while (!(P2IN&0x02));
  
    // Wait for GDO0 to be cleared -> end of packet
    while ((P2IN&0x02));

使用特权

评论回复
7
xaq79| | 2011-9-20 17:32 | 只看该作者
RX,TX要定期使能,FIFO满了RX就不行了,要CLEAR  FIFO

使用特权

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

本版积分规则

0

主题

26

帖子

1

粉丝