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

2019-12-26 18:55发布

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

1、由于时间的关系,我可能会零散的写这个帖子,在我自己认为写完之前,我不会回答各位提出的任何问题以保持我资料的完整性(问的问题也许在后续中会提到);
2、错误在所难免,欢迎高手指正;但绝对不欢迎那种只说不好而不讲理由的。(换句话说,你说了自己的理由,哪怕是错误的也欢迎,但就是讨厌那种说一句牛逼讽刺的话就飘过的);
3、本帖子对STM32高手的帮助相当有限,如果阁下是STM32高手而又不愿意浪费时间,请绕行。
4、如果你看了我的帖子真的很有帮助,有想请我吃饭的,可以发消息给我 ^_^.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
78条回答
Louis_Bright
2019-12-27 00:33
SPI的速率问题。
我提这个问题可能很多人不屑一顾,但是,你的程序真的能让你的PSI跑那么高的速率吗?
你用示波器看看你的SPI的CLK波形,很有可能你发一串数据时,两个Byte之间有个挺长的时间间隔。
这里说说我自己的体会,第一,就是我不建议SPI使用中断,直接用查询方式反而会可靠一些,最重要的是,如果你的SPI速率比较快的话,使用中断,反而会使真正的速度(不是CLK速率,而是读写一串数据的速度)会慢下来。
那么接下来,除了初始化程序,其它的自己写的SPI的读写程序,最好不要调用ST的库函数,而直接去操作寄存器,可以省掉函数调用和一些堆栈的时间。
最后,程序也要非常有技巧性,哥写嵌入式程序好歹也有10多年了,还是第一次使用 goto语句(以前并不是不敢用,而是都可以找到替代的方法,觉得容易维护一些),这里就恕我不公布我的程序了,你懂的。

PS:
关于goto,我多说一句,很多人建议废除;其实我是不赞同的。说实在话,程序出问题是程序员的错,而不是goto,就想犯罪是人的错而不是金钱一样。但是另一方面我又极力的建议想办法不使用goto语句,因为它打断了程序的架构,也容易出现bug。goto只有在速度有非常强烈的需求时才能使用。

一周热门 更多>