Arduino 与无线模块 CC1101

    总结一下无线模块调试的体会。Arduino上已经有人做了这个模块的库了,但是自己根据手册写的也有一定的参考意义。

    无线模块是我认为比较难调试的模块之一,因为是双方互动的一种模块,通信失败有两方面的原因,不能从单一代码中找。代码写好了,也将各种信息写进去了,但就是收不到或者接收不到数据。首先想到的是检查设备的连线。因为是SPI通信,所以使用的是mega2560自带的SPI通道口,查看上篇文章介绍。

  除此之外CC1101有个GDO0 我连接在了板子上的48引脚、

   Arduino 与无线模块 CC1101_第1张图片

 确认连线。Arduino 与无线模块 CC1101_第2张图片

    其次就是测试SPI是否正常工作,在状态寄存器的0x31地址为0x14,如果你读取结果为0x14那么基本上SPI为静态工作的,查看芯片手册说这个Version状态寄存器的复位值为0x04,可能为手册的一处笔误。因为我们读取了3个模块,用了不同的代码都为这个值。

   我的检测CC1101的代码是这样写的

   

bool CC1101::selftest()
{
    return readstatus_by_addr(0x31)==0x14;
}

//然后在setup中使用下面代码片段判断CC1101是否正常工作
//根据这些信息就可以完成自检

 if(cc1101.selftest()) Serial.println("cc1101 connect success");
 else Serial.println("cc1101 connect failure");



    另外我们在测试的工程中常常用的是写Addr寄存器来测试读写是否正常,Addr寄存器地址为0x09,先写入后读出,如果前后一致,则你与芯片的通信基本上是没问题了。



   测试这些后如果你还是无法两个无线通信,那么确认信道是否一致。

   手册上建议IO电流不要超过10ma,但是经测试我直接用io口读取,电流为50mA也还正常工作。而且还有个很重要的一点,CC1101手册上说明是用3.3V供电,但是实际中发现直接连接5V也可以,而且效果更好! 用了两三天了5V没有出现问题

   

  

    源码工程地址

你可能感兴趣的:(Arduino 与无线模块 CC1101)