用MSP430G系列芯片控制24L01已经很长时间了,如此简单的功能,反反复复,拖拖拉拉搞了差不多半年的时间。可是悲剧的是,近日接到新的需求才发现,搞了这么久的东西,也只不过是调通了430控制24L01的发射部分,接收部分还从来没有涉足。不过还好,关于2.4G的收发之前在别的设备上有调试成功的经验,所以还是有例可循的。
MSP430G2553控制24L01+的接收代码是在发射+SHT11温湿度传感器控制的基础上增加的功能,代码很快就修改完毕了,但是同样配置的代码,24LE1接收时成功的,但是2553的板子却始终不见任何接收的响应。仿真一步步跟踪,查找问题根本原因,只是发现了读到的状态寄存器值不正确,感觉像是24L01根本没有工作,可是之前调试它明明就是工作了啊。于是对了24LE1接收上每一次写操作的返回值查看2553每一次操作的返回值,是的,状态寄存器的值确实不正确。穷途末路的时候想到,看看之前G2212控制的24L01寄存器的状态是否正确,也是这样的灵机一动,给我了希望。单步跟踪的时候发现了问题所以,原来是在代码移植的时候忘记修改输入MISO管脚所对应的IO引脚了。突然就联想到了之前看过别人写的代码,为什么要多此一举专门将读某一个IO管脚的输入值设置为宏定义了,原来是为什么了避免对代码本身的修改,将所有的移植修改操作都放在了宏定义处。
IO输入引脚改好了之后,看到了希望,因为状态寄存器的值正确了,但是程序还是很难进入24L01接收中断,再仔细对比代码,移植的代码中接收模式设置完成之后缺少一个DELAY(1)的操作,因为在发射函数的注释中看到这个操作主要是为了防止数据包发射不成功,就想当然的以为既然这个是接收设置的函数,而且也不希望发ACK包,这个操作的有无也就不那么重要了。把这个操作加上之后一切就顺利成章的走上正轨,终于可以接收了,迈出了成功的第一步。
在调试接收功能的时候为了防止其他的操作对它的

本文记录了使用MSP430G2553微控制器控制24L01实现2.4G无线收发过程中遇到的问题及解决方法。在开发过程中,作者发现仅实现了发射功能,而接收部分存在问题。通过调试,找出状态寄存器值不正确的原因是输入MISO管脚的IO引脚未正确设置,以及接收模式设置后缺少必要的延迟操作。修复这些问题后,成功实现了2.4G的接收。在整合发射功能时,又遇到了发射和接收互相干扰的问题,经过细致分析,发现CE信号的控制时机不当导致发射失败。调整CE信号的控制逻辑后,最终实现了2.4G收发的完整功能。
最低0.47元/天 解锁文章
1570

被折叠的 条评论
为什么被折叠?



