打印

关于CC1101的WOR模式的使用

[复制链接]
4611|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
e08610318|  楼主 | 2013-8-23 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 e08610318 于 2013-8-23 10:10 编辑

好久没有发帖了。
为了提高通信稳定性,最近把原来工作在2.4K波特率的设备更改到了1.2K,出了点问题:第一次唤醒成功后,设备就唤不醒了,2.4K下是Ok的。
调试了下,发现我自己写的协议栈有些BUG,主要调试现象是:
1.之所以第一次唤醒成功后就再也唤不醒了,发现在第一次唤醒成功后程序的确是执行了重新进入WOR模式的函数,但是进入WOR模式失败,估计仍然停留在空闲状态下,这个是我看电流的时候发现的。
2.在发出WOR滤波指令前发布SWORRST命令,问题仍然没有得到解决,通过读WORTIMER寄存器发现SWORRST命令发布后WORTIMER的值不会马上更改,最后我把程序改了下:不停的发布SWORRST直到读到的WORTIMER的高字节不小于某个值(根据“进入WOR时不能太靠近EVENT0事件点”),用的是while语句,语句块中还进行喂狗,担心执行时间太长,测了下OK,但是跑了不到一天,程序死掉了,估计也不行。
3.后来又看了下资料,做了下改动,2的改动不要了,然后我在退出WOR模式后立刻把RC晶振关掉,在需要回到WOR模式后我再把RC晶振重新打开,问题解决,但稳定性如何还在测试中。

个人感觉,这个问题还是和WOR定时器计数有关。相同字节长度的数据下,2.4K接收速度应该是1.2K的两倍,其中产生的时间差只能影响到WOR定时器的值,而WOR定时器又直接影响WOR周期的时序,感觉云里雾里的,这个问题的真正原因还没有找到......


相关帖子

沙发
zhao3462910| | 2013-8-23 11:45 | 只看该作者
LZ可以采用排除法,一个问题一个问题的来调试。混在一起的话,调试难度很大。

使用特权

评论回复
板凳
jdwang001| | 2013-11-1 15:28 | 只看该作者
可以去看下,an047应用手册里的例子,都是英文那个。就是对那四个寄存器进行配置。时间上,要满足条件。

使用特权

评论回复
地板
jess9188| | 2013-11-5 21:26 | 只看该作者
慢慢查,别着急

使用特权

评论回复
5
ixi354| | 2013-11-8 23:07 | 只看该作者
路过

使用特权

评论回复
6
dong00520| | 2013-11-19 18:49 | 只看该作者
好!

使用特权

评论回复
7
幸福至上| | 2015-1-16 14:37 | 只看该作者
这个问题应该是第二点,WOR定时器和SWOR命令之间的时间不够导致的,具体的还是AN47手册讲得比较详细

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:你可能不知道今天所做的事情会对未来有多大的干预能力!

67

主题

310

帖子

12

粉丝