Arduino 与无线模块 CC1101

    总结一下无线模块调试的体会。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没有出现问题

   

  

    源码工程地址

转载于:https://my.oschina.net/000quanwei/blog/476712

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值