我最近调试了24l01+和CC1101都会有死机的问题
多个从机向主机发,感觉好像是中断没处理好。为什么呢。收发一段时间后就收不到数据。 这些参数怎么配置才是最优啊,波特率,频道频率什么的。CC1101_W_Config_Reg(CC1101_IOCFG2,0x01); /*接收*/
CC1101_W_Config_Reg(CC1101_IOCFG1,0x2e);
CC1101_W_Config_Reg(CC1101_IOCFG0,0x06); /*发送指示用*/
CC1101_W_Config_Reg(CC1101_FIFOTHR,0x47); /*fifo界限*/
CC1101_W_Config_Reg(CC1101_SYNC1,0xd3);
CC1101_W_Config_Reg(CC1101_SYNC0,0x91);
CC1101_W_Config_Reg(CC1101_PKTLEN,0x11); /*包长度*/
CC1101_W_Config_Reg(CC1101_PKTCTRL1,0x05); /*地址检查 RSSI and LQI使能*/
CC1101_W_Config_Reg(CC1101_PKTCTRL0,0x04); /*CRC使能,固定长度*/
CC1101_W_Config_Reg(CC1101_ADDR,0xff); /*本身地址*/
CC1101_W_Config_Reg(CC1101_CHANNR,0x00); /*频道*/
CC1101_W_Config_Reg(CC1101_FSCTRL1,0x06);
CC1101_W_Config_Reg(CC1101_FSCTRL0,0x00);
CC1101_W_Config_Reg(CC1101_FREQ2,0x10);
CC1101_W_Config_Reg(CC1101_FREQ1,0xa7); /*载波频率*/
CC1101_W_Config_Reg(CC1101_FREQ0,0x62);
CC1101_W_Config_Reg(CC1101_MDMCFG4,0xc9);
CC1101_W_Config_Reg(CC1101_MDMCFG3,0x93); /*频道宽度速率调制模式曼彻斯特使能同步字频道间隔 */
CC1101_W_Config_Reg(CC1101_MDMCFG2,0x13);
CC1101_W_Config_Reg(CC1101_MDMCFG1,0x22);
CC1101_W_Config_Reg(CC1101_MDMCFG0,0xf8);
CC1101_W_Config_Reg(CC1101_DEVIATN,0x34);
CC1101_W_Config_Reg(CC1101_MCSM2,0x07);
CC1101_W_Config_Reg(CC1101_MCSM1,0x3c); /*发送接收完后状态, 发送后进入空闲,*/
CC1101_W_Config_Reg(CC1101_MCSM0,0x18);
CC1101_W_Config_Reg(CC1101_FOCCFG,0x16);
CC1101_W_Config_Reg(CC1101_BSCFG,0x6c);
CC1101_W_Config_Reg(CC1101_AGCCTRL2,0x43);
CC1101_W_Config_Reg(CC1101_AGCCTRL1,0x40);
CC1101_W_Config_Reg(CC1101_AGCCTRL0,0x91);
CC1101_W_Config_Reg(CC1101_WOREVT1,0x0a);
CC1101_W_Config_Reg(CC1101_WOREVT0,0x94);
CC1101_W_Config_Reg(CC1101_WORCTRL,0x31);
CC1101_W_Config_Reg(CC1101_FREND1,0x56);
CC1101_W_Config_Reg(CC1101_FREND0,0x10);
CC1101_W_Config_Reg(CC1101_FSCAL3,0xe9);
CC1101_W_Config_Reg(CC1101_FSCAL2,0x2a);
CC1101_W_Config_Reg(CC1101_FSCAL1,0x00);
CC1101_W_Config_Reg(CC1101_FSCAL0,0x1f);
/**/
CC1101_W_Config_Reg(CC1101_RCCTRL1,0x41);
CC1101_W_Config_Reg(CC1101_RCCTRL0,0x00);
CC1101_W_Config_Reg(CC1101_FSTEST,0x59);
CC1101_W_Config_Reg(CC1101_PTEST,0x7f);
CC1101_W_Config_Reg(CC1101_AGCTEST,0x3f);
CC1101_W_Config_Reg(CC1101_TEST2,0x81);
CC1101_W_Config_Reg(CC1101_TEST1,0x35);
CC1101_W_Config_Reg(CC1101_TEST0,0x09); 不死机了 你怎么解决的?贴出来让大家看看。 你怎么解决的?贴出来让大家看看。 你怎么解决的?贴出来让大家看看。 6# tramp1986
程序没处理好,好好处理下可能死机的地方就行了 楼主,你是怎么处理的?中断部分吗?我也遇到这种情况的~求指导!!! 接收一段时间后,必须重启才能再接收,感觉应该是主机状态控制的问题
RX_time超时了 dota_yy 发表于 2013-10-18 09:50 static/image/common/back.gif
接收一段时间后,必须重启才能再接收,感觉应该是主机状态控制的问题
RX_time超时了 ...
我也遇到了,接受一段时间后就卡死
cc1101_write_strobe(CCxxx0_SRX); //进入接收状态
上面这句执行完毕后,正常要等待GDO0变低,再继续读取,但GDO0却一直为高,就此卡死。我目前的处理是检测到GDO0超过100ms不变低,就初始化模块,一切重来。另外做了个计数器,死一次就加1
这个问题困扰了很久,试过死掉的时候用cc1101_read_status(CCxxx0_MARCSTATE) & 0x1f读取状态、重新进入接收模式等等都无果。目前这样算是暂时稳定的解决了,测试过连续工作10天OK,死机计数器每天都记录到5~10次死掉重来的…… lcpcsky 发表于 2014-4-11 01:07
我也遇到了,接受一段时间后就卡死
cc1101_write_strobe(CCxxx0_SRX); //进入接收状态
上面这句执行完毕 ...
我也遇到死机现象,怀疑是人手触摸住芯片引起的 FAQ 发表于 2014-5-9 08:40
我也遇到死机现象,怀疑是人手触摸住芯片引起的
你解决了吗
页:
[1]