CC1101嫁给STM32的那些事儿(斑竹,你好意思不给我加精么?)

2019-12-26 18:55发布

最近有个项目在做升级版,本来是用的TI的CC430F5137(本质是msp430 + CC1101),考虑到功能多且扩展的需求比较明显,所以选择了 STM32F107VC + CC1101.
在调试时,发现问题点还是挺多的,在这里稍微零散的总结一下,希望对有需要的兄弟姐妹有所帮助。

1、由于时间的关系,我可能会零散的写这个帖子,在我自己认为写完之前,我不会回答各位提出的任何问题以保持我资料的完整性(问的问题也许在后续中会提到);
2、错误在所难免,欢迎高手指正;但绝对不欢迎那种只说不好而不讲理由的。(换句话说,你说了自己的理由,哪怕是错误的也欢迎,但就是讨厌那种说一句牛逼讽刺的话就飘过的);
3、本帖子对STM32高手的帮助相当有限,如果阁下是STM32高手而又不愿意浪费时间,请绕行。
4、如果你看了我的帖子真的很有帮助,有想请我吃饭的,可以发消息给我 ^_^.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
77条回答
newidea
1楼-- · 2019-12-27 08:12
支持一下。能够写自己的切身体会是很难得的。
Louis_Bright
2楼-- · 2019-12-27 09:10
 精彩回答 2  元偷偷看……
Louis_Bright
3楼-- · 2019-12-27 10:39
第三个问题,寄存器配置。
有人说,不是有专门的TI提供的软件么?没错,我要说的就是这个软件,叫做 “Smart RF studio”。
只是,这个软件我本身也还没完全弄明白,希望有高手能补充。
1、设计时,要注意平衡,Data rate越高,那么灵敏度就会越低;
2、频段是有限的(比如433M其实是433.07MHz~433.92MHz),channel spacing越宽则能支持的channel就越少;
3、channel spacing至少要是data rate的1倍,当然间隔越大,越没那么容易干扰
4、个人还不是太明白“RX filter BW” 和 “Deviation”,我最初设计时是参考demo的做法,希望有牛人来解释一下。
5、注意中心频率的问题,以433M为例,你的频率间隔是50K,那么Base frequency应该是433.07M + 0.05M = 433.12M。
Louis_Bright
4楼-- · 2019-12-27 12:38
第四个问题,正常工作的模式设计。
简单说,是查询模式还是中断模式?
我在网上搜到的程序,包括TI官方的demo程序,都是查询模式,这个可以演示一下收发的功能。
但是,实际情况却是:天知道它什么时候来RF信号啊?
所以这里我要说的是中断模式。
CC1101的GDO是可以做这些功能的,让它接SMT32的外部中断。
深刻理解因为英文datasheet page 62上的那个表格。
Louis_Bright
5楼-- · 2019-12-27 14:01
有两种方式:(假定GDO没取反)
方式一、GDO配置成0x06.
这种模式,当处于接收状态,收到一个同步字时会变高,当收到一帧数据或者中间出错(地址错,溢出等)会变低。我们只要配置SMT32的外部中断为下降沿中断,就可以在中断程序中去读RX FIFO,能正确读出就去处理。
方式二、GDO配置 0x07 --> 0xXX
这种方式需要在切换收/发的时候还要去改变这个寄存器,比较烦而且容易出错,好处是不会产生过多的STM32外部中断。

个人推荐:
1、如果系统是主从模式,用方式一吧;
2、如果系统是星型结构,用方式二吧;
Louis_Bright
6楼-- · 2019-12-27 17:41
第五个问题,载波侦听。
也就是说,你在发RF信号的时候,要看看这个频段是否有人在用,如果有人在用的话,就再等等,等待时间太长就timeout吧!

CC1101_PKTSTATUS(0x38)的BIT4

一周热门 更多>