概要:按照官方代码,读不到正常数据。初步估计原因可能有以下几个:1、SPI驱动有问题。可是呢IO口没有引出,没法测试。2、主芯片和LIS3DH之间的连接有问题,导致不能正常通信。看了看引脚太小,没法测试。具体过程描述如下。
LinkNode上有一个LIS3DH,可是官方手册上并没有给出参考代码。就连SPI的参考代码都没有。不过linksprite的wiki上有,可以在以下网址找到(
http://linksprite.com/wiki/index ... IS3DH_accelerometer)。
本来想利用mbed的库从头建个工程看看,但是搜索了以下,发现LIS3DH的库和项目都只有2个,而且都是i2c接口的。虽然芯片CS拉高就是i2c模式,但是看原理图,并没有看到有接i2c上拉电阻,所以还是乖乖用SPI,参考官方代码来写吧。有时间再转换一下i2c驱动到SPI吧。
官方代码比较简单,就是写了一个SPI的初始化,读写寄存区的子函数,然后调用。结果烧写以后满屏的“device err”。这又是什么鬼??!!
看了下代码,每次读数都会查看下芯片的ID,如果是0x33,表示有芯片,如果不是,则显示上图的出错信息。
打印了一下收到的who am i,发现都是255。这说明MI上全是高电平啊。
绕过who am I检测,强制读取三轴的值就是这么个死相
改造下显示代码,其实是以下这么回事,也就是说,读到的全是1。和读who am I的结果一致。真是醉了
可怜的SPI引脚也没有引出,无法测试。有没有人可以跑动这个例程的呢?