nRF905有四种模式,Rxmode,Txmode,Standbymode,PowerdownMode。其中StandbyMode和PowerdownMode是节能模式。下图给出一些参数,晶振频率和提供给外部芯片(如MCU)使用的频率。
其中决定这几种模式的是三个引脚
这几种模式切换需要的时间:
注意:
while (1) {
TxMode();//三引脚赋值
RxMode();//三引脚赋值
}
这种代码最多只会发一次,RxMode切换需要时间,而且TxMode后面要判断DR管脚,如果没有发出去就切换模式会导致不确定结果,很可能发布出去。
修改后
while (1) {
TxMode();
while (LOBIT(DR)) ;//发完了DR脚会变高
RxMode();
msDly(1);
}
发现905还是很多细节要注意的,不知道是我编程不够规范,还是905datasheet上bug多。
情况一:如果我powerup管脚初始化没有拉低,然后直接拉高905可能会不工作,10个里面大概会出现一个这样的905吧
情况二:如果standby模式,我们如果只是把TRX_CE拉低,TXEN不管,那么接下来如果马上变成TX模式,这时判断DR是有问题的。。这样会导致发送不出去的情况。想不通,如果standby模式把TRX_CE和TXEN都拉低的话就不会有这样的问题,看datasheet觉得无解。。
下面示意代码可以出现这样的情况,cpu时钟16M
RxMode();
TxMode();
while (LOBIT(DR)) ;
standbyMode();
msDly(3);
TxMode();
RxMode();
msDly(25);
TxMode();
RxMode();
上面这段代码是不是看起来应该发送了三次数据,但是如果你的standbyMode只是拉低TRX_CE,没管TXEN的话,不好意思,数据只会发两次。如果两者都拉低了,恭喜你发了三次。无语。
整体的流程datasheet都有。
一点切记:转换状态是需要时间的,不要一拉管脚就想当然的认为状态转换了,大部分905问题都是这样导致的。
|
文件: | nRF905_v1.5.pdf |
大小: | 710KB |
下载: | 下载 |
|
阅读(1126) | 评论(0) | 转发(0) |