最近在做低功耗的项目,要用到stm32l1和4个lis3dh。
刚开始调试的时候,4个lis3dh焊在同一板上,同用一个spi总线,spi的SCK,MISO,MOSI都外部上拉,中断脚INT1也并到一起接到L1的PA0上,没加外部上拉,PA0设成内部上拉,下降沿中断;因为lis3dh可以设置成加速度产生一定变化就产生中断,所以打算用这个中断来唤醒停止模式下的L1。
经过反复调试,最后效果是,在L1停止模式、4个lis3dh都跑1HZ的情况下功耗为17uA,可倾斜一下lis3dh产生中断唤醒L1(因为4个传感器在同一板上,所以有可能出现4个都产生中断的现象),唤醒后读出4个传感器当前的加速度,然后L1再进入停止模式。一切正常。
可当我将4个lis3dh的板剪开,去用单个lis3dh实现上述的功能后,发现不稳定的情况:
1.PA0内部上拉、下降沿中断,lis3dh读数不正常,并且不断产生中断;
2.PA0浮空、下降沿中断,lis3dh读数正常,可以产生中断,但如果MCU不是一直轮询lis3dh的输出寄存器的话,中断产生不了,之前用4个测试的时候没有这种情况,只需要初始化一下lis3dh就可以,不用一直轮询它的输出寄存器也可以产生中断;
外部加上拉,搞了半天还是不行。
所以来这里跟大家探讨一下,有没有大神用过lis3dh,多多指教!
另外L1的低功耗目前跑MSI的4M主频,停止模式最低也就4uA,有相关低功耗经验的也欢迎大家来探讨!
|