This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cc1100d的经验之谈

Other Parts Discussed in Thread: CC1100

1,配置问题,就因配置问题,我搞了半个月!!,要想得到最好的配置,一定要仿真软件给出才行.

2,发送问题,一不小心就会被硬便件锁死. while (GDO0_L),原因是上次为发送模式,你再启动发送命令,不用说,一定会被锁死.所以我加多一第指令,

Spi_Write_Strobe(CC_SIDLE);

进入空闲

Spi_Write_Strobe(CC_STX);

进入发送模式.

就不用管上次的模式,也不会被锁死.

3,接收问题,这可是主要问题,我相信刚开始搞CC1100的新手,(我也是,呵呵!),防止硬件锁死,在进入接收模式前,先进入空闲模式,Spi_Write_Strobe(CC_SIDLE);

空闲模式

Spi_Write_Strobe(CC_SRX);

接收模式,

成功进入接收模式,就可以接收.可是只接收一次,或只有几次,就不能接收了,我相信刚搞CC1100的朋友都遇到的.原因是CC1100接收缓冲区溢出,无法接收.只要有几个方面,不能准确无误的捕捉CGO0 的高电平,缓冲区很快就会溢出.我的解决方法是,用中断接收,一有中断就读出缓冲区数据,冲洗缓冲区.在没有处理完其它任务时不要进入接收模式.退出中断前进入接收模式,才能保证准确接收数据.

4,伪数据问题,刚开始我都以为CC1100 太假.想不明白,明明没有发送,怎么会收到数据呢,而且还能通过CRC 验证标志.经过查资料,和分析.和网上有人说的.可能是CC1100的内部噪音,或外部无线电干扰.引发GDO0电平变化,触发中断.那为为什么还能通过CRC 标志.我也不明白.我处理的方法是.在读出CC1100缓冲区数据前,先清单片机存储数据的缓冲区,

for (i = 0; i < n; i++) //数据清据

{ Rx_data[n] = 0; //}

然后将数据存储到单片机Rx_data.自己加入验证标志, 正反码对比,同步码对比.经以上处理,我现在的CC1100从没有到过错误的数据.

确实,我也遇到过程序进入死循环的情况。

【现象描述】:在单机发送中,要求该机发送完成后转入接收状态,等待接收。不管有没有接收到语音数据,若发送时刻到来,则必须启动发送。现在的问题是有时发送一会语音数据就不能正常发送了,正常工作的持续时间长短不一。测试发现,PC指针原来是一直停留在了while(!GDO0);这条语句上了。该条语句的功能是判断是不是开始发送数据,当GDO0有上升沿出现的时候,表示开始发送数据。

【解决方法】在开始发送数据之前,先向CC1100写SIDLE命令使无线芯片CC1100转入空闲状态。然后再往TX FIFO里写入数据。数据写完后,写命令STX转发送状态开始发送。

【结果分析】用该方法后,发现带有状态转换的单机发送能够持续成功发送了。仔细研究CC1100数据手