||
在网上搜到的帖子里很多人是用STM32的I2C来访问L3G4200D和ADXL345,很少有SPI方式读写的。由于在设计前只考虑了MEMS数据读取的速度,而没有考虑难度;此前也一直没用过STM32;因此“不幸”将两个MEMS连到了STM32的SPI,前者占SPI1,后者占SPI2。刚开始调试用硬件SPI控制器,偶尔能读到他们的DeviceID。后来干脆罢工了,甚至程序会死在等待状态置位的地方。万般无奈,以为是焊接不良;改写代码成GPIO模拟SPI时序的方式,发现模拟SPI时序,两个MEMS的读写都很正常,排除了焊接问题。晚上读了一个网友的在CC2430上的调试笔记,受到一些启发;因此又回过头对比两个程序的时序到底错在哪里。经过两天的斗争,终于搞定了使用SPI控制器读写两个MEMS的程序。