关于cc1101中断接收死机问题

2019-07-18 14:24发布

最近在用cc1101做无线传输,可是如果使用轮询法接收,都挺正常的。但是使用外部中断,GPO0来进行触发接收的话,把halRFReceivePacket函数放到终端中,就会死机,死在“while(MISO);”上面。不知道这是为什么。查看cc1101手册上说 CSN拉低MISO会立即被拉低,除非CC1101进入SLEEP或者OXFF状态,可是我发送方每次只发送5字节数据。数据量很小了,不知道为什么会死机,让我很困扰,一直在调试。不知道有没有前辈能指教下,万分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
zhang_forever
1楼-- · 2019-07-19 08:25
qq8512852 发表于 2013-12-25 21:15
你说的不错 我知道你说的这个  之所以出现你说的while(GDO0) 死在这里是 是因为使用的是查询法的原因。而 ...

o 我大概明白你的意思了。  MISO口其实就是GDO1口, CSN拉低后,MISO会返回一个低电平,表示1101芯片已经准备好了,可以开始传送数据了。又由于MISO口是SPI的一个端口,所以它还要用来传送数据, 所以当你使用玩了RecPackets函数以后,MISO口的电平状态已经被更改过了,所以while(MISO)才可能会停留。   因为RecPackets函数里面封装了 ReadReg(读取1101寄存器的函数),而ReadReg一般再书写的时候已经进行了while(MISO)或者是while(GDO1)的判断了。
不知道这个解释对不对。
qq8512852
2楼-- · 2019-07-19 12:45
 精彩回答 2  元偷偷看……
zhang_forever
3楼-- · 2019-07-19 15:39
qq8512852 发表于 2013-12-26 13:53
恩,那该如何解决这个问题呢。我在中断中放一个标志位,出中断根据标志位的置位再来处理RecPacket函数就 ...

这个我也真的不太了解了,你试试在while(MISO)前加个CSN =0的拉低语句。我之前那个项目,都是自己读1101的状态,然后看到底是什么问题,慢慢磨出来了,好久不用也记不太清了。
qq8512852
4楼-- · 2019-07-19 19:28
zhang_forever 发表于 2013-12-26 20:33
这个我也真的不太了解了,你试试在while(MISO)前加个CSN =0的拉低语句。我之前那个项目,都是自己读110 ...

while(MISO);之间本来就有csn=0拉低,不然是无法正常工作的。呵呵,不过还是谢谢你。你之前的项目是什么要求呢,是一个接一个收,还是两个都要接受呢?
自由狂风
5楼-- · 2019-07-19 22:37
我是新手, 帮顶了。
一曲说
6楼-- · 2019-07-20 00:06
本帖最后由 一曲说 于 2015-11-26 21:33 编辑

我也碰到了这个问题  一到while(MISO)就没法继续运行了   楼主解决了吗?当我直接把MISO置为0才能继续跑下去程序

一周热门 更多>