Arduino 与无线模块 CC1101
时间: 2015-07-09来源:OSCHINA
前景提要
总结一下无线模块调试的体会。Arduino上已经有人做了这个模块的库了,但是自己根据手册写的也有一定的参考意义。
无线模块是我认为比较难调试的模块之一,因为是双方互动的一种模块,通信失败有两方面的原因,不能从单一代码中找。代码写好了,也将各种信息写进去了,但就是收不到或者接收不到数据。首先想到的是检查设备的连线。因为是SPI通信,所以使用的是mega2560自带的SPI通道口,查看上篇文章介绍。
除此之外CC1101有个GDO0 我连接在了板子上的48引脚、

确认连线。
其次就是测试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没有出现问题


源码工程地址

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行