参考地址:?uid=306328&do=blog&id=42866
这两天调好了3轴g-sensor ,mma7660, 可以用了. 倾斜晃动或改变板子的方向, mma7660就会产生中断, 并给出当前板子的姿态(水平/垂直, 上下,左右等).
1. 重力加速度计 mma7660
1.1 作用:
mma7660只是一个3轴g-sensor, 它主要用于测量倾斜角,惯性力,冲击力及震动.
1.2 工作原理:
mma7660是一种电容式g-sensor. 电容式g-sensor大多为欧美厂商, 其技术是在wafer的表面做出梳状结构, 当产生动作时,由侦测电容差来判断变形量, 反推出加速度的值.
与压阻式不同的是, 电容式很难在同一个结构中同时感测到三个轴(X,Y,Z)的变化, 通常都是X,Y和Z分开来的, (这也就是为什么当板子水平放置时,无论如何改变X,Y的位置,都不会有中断产生,因为这时它只能检测Z轴的变化,X,Y的变化它检测不到, 只有当我们将板子倾斜一个角度后才能检测X,Y的变化) . 而压阻式在同一个结构就能感测到三个轴的变化.
1.3 工作模式:
mma7660主要有三种工作模式.(通过设置MODE寄存器)
1). Standby(待机)模式
此时只有I2C工作,接收主机来的指令. 该模式用来设置寄存器. 也就是说, 要想改变mma7660的任何一个寄存器的值,必须先进入Standby模式. 设置完成后再进入Active或Auto-Sleep模式.
2). Active and Auto-Sleep (活动并且Auto-Sleep) 模式
mma7660的工作状态分两种, 一种是高频度采样, 一种是低频度采样. 为什么这样分呢, 为了节省功耗,但是在活动时又保持足够的灵敏度.
所以说mma7660的Active模式其实又分两种模式,一种是纯粹的Active模式, 即进了Active模式后一直保持高的采样频率,不变. 还有一种是Active & Auto-Sleep模式, 就是说系统激活后先进入高频率采样,经过一定时间后,如果没检测到有活动,它就进入低频率采样 ,所以就叫做Auto-Sleep, Sleep并不是真的Sleep , 只是说降低采样频率.
低频率采样模式又叫Auto-Wake摸式, 即自动唤醒模式.它不是睡眠模式, 它只是降低采样频率.
3). Auto-Wake (自动唤醒) 模式
Auto-Sleep后就进入低频率采样模式,这种模式就叫做Auto-Wake摸式, 即自动唤醒模式.它不是睡眠模式, 它只是降低采样频率.
1.4 初始化:
Init
|
| MODE=(0) 进入 Standby 模式,设置寄存器
|
| SRST=0x03,
| SR=(2,2,1),
| INTSU中,asint=1,plint=1,fbint=1
| MODE=(0, 1, 0, 1, 1, 0, 1)
|
Active & Auto-Sleep (64 Samples/Sec)
^ |
| state changes | SPCNT=0xA0 timeout
| interrupt |
| v
Auto-Wake ( = Half Sleep) (8 Samples/Sec)