- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
关于cc1101中断接收死机问题
怎么没人回答啊
有没有做过的人来解释下 点拨下
GPO0和GPO1引脚的功能是可以自己配置的,所以可以看看引脚功能是否配置正确。因为GPO0和1都可以用来检测数据到来
我查了下手册,如果你GPO0要产生中断信号给MCU的话,那么你得把GPO2的寄存器配置成0x06,用来检测是否接收到同步字。英文手册第56页有说明的,不然的话你的MCU永远不知道什么时候接收到数据了
我觉的你那个不应该是while(MISO)应该是while(GDO0)。 因为当GDO0配置成0x06的时候,GPO0默认输出是高电平,当接收到同步字的时候就转换为低电平了,当接收完数据后又转换成高电平了。
我也不是很懂,大概就知道些,对不对你再看看手册吧。
我的接收函数就是
CC1101SetTRMode( RX_MODE );
while(GDO0);
while(!GDO0);
等这段程序执行完成后,FIFO里面就是接收到的数据了,你再用MCU通过SPI读出数据就行了。
你说的不错 我知道你说的这个 之所以出现你说的while(GDO0) 死在这里是 是因为使用的是查询法的原因。而我现在用的是 中断模式 根据GDO0的上升下降沿进入中断再 处理数据 不会出现你说的这个问题。之所以死在while(MISO)我翻阅了很多资料,看到一句话是 是等待电压调整稳定并且晶振运行才会在csn拉低的情况下,MISO拉低,所以有可能是晶振不同步导致的,但是不知道具体原因,这个要做成功的前辈们来解答了···
o 我大概明白你的意思了。 MISO口其实就是GDO1口, CSN拉低后,MISO会返回一个低电平,表示1101芯片已经准备好了,可以开始传送数据了。又由于MISO口是SPI的一个端口,所以它还要用来传送数据, 所以当你使用玩了RecPackets函数以后,MISO口的电平状态已经被更改过了,所以while(MISO)才可能会停留。 因为RecPackets函数里面封装了 ReadReg(读取1101寄存器的函数),而ReadReg一般再书写的时候已经进行了while(MISO)或者是while(GDO1)的判断了。
不知道这个解释对不对。
恩,那该如何解决这个问题呢。我在中断中放一个标志位,出中断根据标志位的置位再来处理RecPacket函数就不会死在while(MISO),如果将RecPacket放在中断去处理就会出现这情况,这又怎么解释
这个我也真的不太了解了,你试试在while(MISO)前加个CSN =0的拉低语句。我之前那个项目,都是自己读1101的状态,然后看到底是什么问题,慢慢磨出来了,好久不用也记不太清了。
while(MISO);之间本来就有csn=0拉低,不然是无法正常工作的。呵呵,不过还是谢谢你。你之前的项目是什么要求呢,是一个接一个收,还是两个都要接受呢?
我是新手, 帮顶了。
我也碰到了这个问题 一到while(MISO)就没法继续运行了 小编解决了吗?当我直接把MISO置为0才能继续跑下去程序
最近也在看这个
中断首发出问题
先检查有没有进中断
中断函数处理卡住没
卡住的时候查询下datasheet里是否中断pin是否符合要求
通用解决方法 还没在1101上碰到过。
我是新手, 帮顶了。
海尔集成半导体推出了个芯片型号HW3000,用量巨大,距离有2.5公里双向,与si4463差不多,比si4432 si4438远,比A7108 和A7139好很多,如果是10kpbs,比sx1278 远。LoRa没办法快速率,可了解,推荐!HW3000超低双向无线fsk模块完美替代CC1101、CC1120、A7139、A7108、si4432、si4438、si4463
cc1101好用吗
使用中断,你应该是有标志没清干净。
上一篇:单片机与gprs通信的代码
下一篇:CC1310如何实现低功耗接收?