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