关于cc1101中断接收死机问题

2019-07-18 14:24发布

最近在用cc1101做无线传输,可是如果使用轮询法接收,都挺正常的。但是使用外部中断,GPO0来进行触发接收的话,把halRFReceivePacket函数放到终端中,就会死机,死在“while(MISO);”上面。不知道这是为什么。查看cc1101手册上说 CSN拉低MISO会立即被拉低,除非CC1101进入SLEEP或者OXFF状态,可是我发送方每次只发送5字节数据。数据量很小了,不知道为什么会死机,让我很困扰,一直在调试。不知道有没有前辈能指教下,万分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
qq8512852
1楼-- · 2019-07-18 15:06
怎么没人回答啊
qq8512852
2楼-- · 2019-07-18 16:07
有没有做过的人来解释下 点拨下
zhang_forever
3楼-- · 2019-07-18 21:36
 精彩回答 2  元偷偷看……
zhang_forever
4楼-- · 2019-07-19 01:43
我查了下手册,如果你GPO0要产生中断信号给MCU的话,那么你得把GPO2的寄存器配置成0x06,用来检测是否接收到同步字。英文手册第56页有说明的,不然的话你的MCU永远不知道什么时候接收到数据了
zhang_forever
5楼-- · 2019-07-19 01:52
我觉的你那个不应该是while(MISO)应该是while(GDO0)。 因为当GDO0配置成0x06的时候,GPO0默认输出是高电平,当接收到同步字的时候就转换为低电平了,当接收完数据后又转换成高电平了。
我也不是很懂,大概就知道些,对不对你再看看手册吧。
我的接收函数就是
CC1101SetTRMode( RX_MODE );
                while(GDO0);
                while(!GDO0);
等这段程序执行完成后,FIFO里面就是接收到的数据了,你再用MCU通过SPI读出数据就行了。
qq8512852
6楼-- · 2019-07-19 04:48
zhang_forever 发表于 2013-12-25 11:19
我觉的你那个不应该是while(MISO)应该是while(GDO0)。 因为当GDO0配置成0x06的时候,GPO0默认输出是高 ...

你说的不错 我知道你说的这个  之所以出现你说的while(GDO0) 死在这里是 是因为使用的是查询法的原因。而我现在用的是 中断模式  根据GDO0的上升下降沿进入中断再 处理数据 不会出现你说的这个问题。之所以死在while(MISO)我翻阅了很多资料,看到一句话是 是等待电压调整稳定并且晶振运行才会在csn拉低的情况下,MISO拉低,所以有可能是晶振不同步导致的,但是不知道具体原因,这个要做成功的前辈们来解答了···

一周热门 更多>