LIS3DSH测试基于 AN3393 page 78 (data:17-Oct-2014),9.2-Wake-Up 的例程编写,但是配置之后不管传感器怎么放置,在INT1始终有中断脉冲信号产生,如图中所示,由逻辑分析仪捕捉所得。其中,三轴的数据读取正常,寄存器写入和读回的数据也一致。但是根据下方的配置之后,三轴的加速度数据也不能正常读回了,就一直产生中断信号。 /*********************whoamI***********************/ LIS3DSH_GetWHO_AM_I(&tmp); printf("who am I ?......... \r\n"); if(vtmp==0x3F) printf("I am LIS3DSH (0x%d ) \r\n",tmp); else printf("I am ??? ~ \r\n"); /******************Reg_Config*************************/ LIS3DSH_WriteReg(0x21, 0x01); LIS3DSH_WriteReg(0x23, 0x48); LIS3DSH_WriteReg(0x20, 0x67); LIS3DSH_WriteReg(0x57, 0x55); LIS3DSH_WriteReg(0x59, 0xFC); LIS3DSH_WriteReg(0x5A, 0xFC); LIS3DSH_WriteReg(0x40, 0x05); LIS3DSH_WriteReg(0x41, 0x11); LIS3DSH_WriteReg(0x42, 0x00); LIS3DSH_WriteReg(0x43, 0x00); LIS3DSH_WriteReg(0x44, 0x00); LIS3DSH_WriteReg(0x45, 0x00); LIS3DSH_WriteReg(0x46, 0x00); LIS3DSH_WriteReg(0x47, 0x00); LIS3DSH_WriteReg(0x48, 0x00); LIS3DSH_WriteReg(0x49, 0x00); LIS3DSH_WriteReg(0x4a, 0x00); LIS3DSH_WriteReg(0x4b, 0x00); LIS3DSH_WriteReg(0x4c, 0x00); LIS3DSH_WriteReg(0x4d, 0x00); LIS3DSH_WriteReg(0x4e, 0x00); LIS3DSH_WriteReg(0x4f, 0x00); LIS3DSH_WriteReg(0x5B, 0x01); /**********************************************************/ file:///C:/Users/JORY/AppData/Roaming/Foxmail7/Temp-8620-20160310113739/Catch(03-03-12-5(03-10-12-29-19).jpg file:///C:/Users/JORY/AppData/Roaming/Foxmail7/Temp-8620-20160310113739/Catch0BD7(03-03-(03-10-12-29-19).jpg |
不是那样的,远比想象的复杂。似乎初始化漏掉了什么,把手册的例程全配置了一遍,要嘛一直中断,要么一点反应都没有。不知道你是否试过这个传感器的状态机
一般传感器读取whoami都可以直接读到,不必配置初始化,其他的参数配置或者读取XYZ参数就需要配置初始化,至少保证已经进入正常工作模式。