TEL:0755-32882616   公司简介 - 委托交易 - 收费标准 - 汇款方式 - 联系我们 - 免责申明 - 站点地图

设为桌面图标 | 设为首页 | 加入收藏夹 | IC型号 | 黑名单

   当前位置: IC37首页 > 博士 > 热帖推荐

cc2500 发送死机问题


用户名:flywith
注册时间:2011-8-18 21:48:00
楼主  发布时间:2013-3-13 17:11:38    点击率:4011

cc2500 发送死机问题

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:00
1楼  发布时间:2013-3-13 17:11:38
还有我一直发送数据的话很正常,不会死在while里面的

用户名:flywith
注册时间:2011-8-18 21:50:00
2楼  发布时间:2013-3-13 17:11:38
更加离谱的是叫做b机器的,一直没有问题,那个cc2500也是在收发之间切换的啊,只是一个是连续的收,30m发一次吧,呵呵

用户名:flywith
注册时间:2011-8-18 21:51:00
3楼  发布时间:2013-3-13 17:11:38
哎。有没有人遇到过啊,

用户名:chunyang
注册时间:2011-8-18 22:17:00
4楼  发布时间:2013-3-13 17:11:38
楼主可以将CC2500做交叉替换,即ab互换,如果问题依旧说明是你程序的问题,否则是CC2500及外电路的问题。

用户名:草履虫
注册时间:2011-8-18 23:35:00
5楼  发布时间:2013-3-13 17:11:38
其实这个问题很好查.
如果怀疑下面的代码死掉了.那么根据P2IN的变化最长的时间设置一个计数器,如果超过了变化时间,那么程序就退出.同时做超时变量, 这样的话,就能够查到是不是真的是死在这两个地方了.
// Wait for GDO0 to be set -> sync transmitted
    while (!(P2IN&0x02));
  
    // Wait for GDO0 to be cleared -> end of packet
    while ((P2IN&0x02));

用户名:xaq79
注册时间:2011-9-20 17:32:00
6楼  发布时间:2013-3-13 17:11:38
RX,TX要定期使能,FIFO满了RX就不行了,要CLEAR  FIFO
热门型号:
UA733C UA741ID UC2544DW UC3843AD1 UCC5950 UDZSTE-172.7B ULN2003ADRG3 UPA1524H UPA1802GR-9JG-E1 UPB587G-E1