先说说GDO0和GDO2,这两个东西是搞CC1101很重要的两个东西,它连着你的单片机的IO口。因此你完全可以利用中断来判断当前的模块处于一种什么样的情况,当然这个还跟你怎么去设置IFGDO0和IFGDO2这两个寄存器有关系了,详见CC1101中文手册64页。
不过我的发送没有用中断来做,因为查询够了。当然查询也看你怎么查了,我见到过的有两种,如下:
1.先判断GDO0/GDO2(看你怎么连了)是否变高电平,然后再判断是否变低电平,这么一个过程就是发送一帧数据的过程。
2.判断CC1101的状态寄存器,这个也要看你的设置了,如果你发送完之后是IDLE状态则等待0x01如果发送完之后是接收状态则等待0x0d;
说到发送数据,这里说明一下,CC1101发送数据的时候是先发送前导码和同步字的,然后在发送FIFO数据长度、地址(如果接收端开启了地址过滤)以及FIFO中的数据。
在这里要说明一点:当时我和同事一起做这个的时候发现当低速率的时候他发送的数据我总是接收不到。原因就是我发送完之后等待IDLE的时间太短,所以数据根本就没发完就超时了。
说到寄存器,那CC1101的功能那么多,寄存器自然就很多。其实真正我们需要手动去设置的寄存器却不是很多,大多数寄存器都是SmartRF来自动生成的,在这里说说几个比较重要的寄存器:
<
本文介绍了在学习和开发CC1101无线通信模块过程中,GDO0和GDO2的重要性,以及如何通过中断和状态寄存器进行数据发送和接收的管理。内容涵盖了FIFOTHR、PKTLEN、PKTCTRL0和1、MCSM0和1等关键寄存器的作用,强调了设置这些寄存器对于通信效率和数据完整性的关键影响。同时,文章提及了在低速率通信中可能出现的数据接收问题及解决办法。
最低0.47元/天 解锁文章
4672





