
MMA7455芯片手册中文.doc
7页MMA7455典型应用移动、PDA等图像稳定、文本滚动,硬盘的自由落体检测,笔记本电脑的防盗、计步器,运动感应等加速度和输出数值关系如下表所示由上表可见,数值输出为补码形式,以2g量程为例,测量范围为-2g~+2g,数值输出为-128~+127INT1引脚一般作为数据准备好中断DRDY,用于提示测量数据已经准备好,同时在状态寄存器(STATUS地址0X09)中的DRDY位也会置位,中断时输出高电平,并一直维持高电平直到三个输出寄存器中的一个被读取如果下一个测量数据在上一个数据被读取前写入,那么状态寄存器中的DOVR位将被置位默认情况下,三轴XYZ都被启用,也可被禁用可以选择检测信号的绝对值或信号的正负值检测运动时,可采用XorYorZ>阈值检测自由落体,可采用X&Y&Z<阈值电平检测模式下,一旦一个加速度电平达到了设定阈值,中断引脚将变为高电平并一直维持高电平,直到中断被清除可以检测绝对值或正/负值,在CONTROL1寄存器中(地址0x18)设置,阈值在LDTH寄存器(地址0x1A)中设置如果Control寄存器中的THOPT位为0,则LDTH中的数为无符号数,表示绝对值反之,LDTH中的数为有符号数。
应用一:运动检测条件X轴>阈值 或 Y轴>阈值 或 Z轴>阈值THOPT=1(有符号数) LDPL=0(检测极性为正且检测条件为3轴做或运算),若阈值为3g,量程为8g(127,0x7F),则可设置LDTH寄存器=0X2F(地址0x1A)应用二:运动检测条件 |X|轴>阈值 或 |Y|轴>阈值 或 |Z|轴>阈值THOPT=0(无符号数) LDPL=0(检测极性为正且检测条件为3轴做或运算),若阈值为3g,量程为8g(127,0x7F),则可设置LDTH寄存器=0X2F(地址0x1A)应用三:自由落体检测条件 X轴<阈值 且 Y轴<阈值 且 Z轴<阈值THOPT=1(有符号数),LDPL=1(检测极性为负,检测条件为三轴做与运算),若阈值为0.5g,量程为8g,则可设置LDTH寄存器=0X07(地址0x1A)应用四:自由落体检测条件 |X|轴<阈值 且 |Y|轴<阈值 且 |Z|轴<阈值THOPT=0(无符号数),LDPL=1(检测极性为负,检测条件为三轴做与运算),若阈值为0.5g,量程为8g,则可设置LDTH寄存器=0X07(地址0x1A)脉冲检测在脉冲检测模式下,所有功能都可以使用,包括测量电平,电平检测中断。
有两个中断引脚分别分配给电平检测中断和脉冲检测中断中断引脚的分配在寄存器Control1中指定,中断引脚的分配有三种组合形式,通过Control1寄存器中的INTREG[1:0]设置INTREG[1:0]INT1INT200电平检测脉冲检测01脉冲检测电平检测10单个脉冲检测单个或双个脉冲检测MMA7455有一个10位的ADC进行采样、转换并在得到请求的时候传回数据在时钟信号的下降沿,8位的命令字开始传输,传输命令字需要8个时钟数据回传的时候,高位在前,低位在后MMA7455可以使用SPI接口进行通信在通信时,MMA7455作为slave(从属)设备,单片机作为master设备,单片机提供时钟信号scl和片选信号csSPI接口包含两根控制线和两根数据线分别是片选线CS,时钟线SCL,输入线SDI和输出线SDO片选线CS低电平有效,由单片机提供片选信号传输结束后,片选线回到高电平SCL线提供传输时的同步时钟脉冲SDO和SDI线上的数据在时钟信号下降沿时启动,并在上升沿的时候被读取读写寄存器命令至少需要16个时钟脉冲,如多字节传送则,则需要8的倍数个时钟脉冲才能完成SPI读操作:一次SPI读操作的传输包括一个bit的读/写信号和6个bit地址,和一个多余的bit。
在下一次传送时,被读取的数据将由SPI接口送出如下图所示SPI写操作:写寄存器需要先向MMA7455发送一个8bit的写命令该写命令包括最高位一个bit(0表示读,1表示写)用于表示操作类型,后续6个bit表示地址,还有一个多余的bit如下图所示MAA7455的各寄存器地址和用途如下图所示1. 寄存器1 XOUTL(10bit输出X轴输出低8位) 地址00 只读D7D6D5D4D3D2D1D0XOUT[7]XOUT[6]XOUT[5]XOUT[4]XOUT[3]XOUT[2]XOUT[1]XOUT[0]00000000读取XOUTL,将锁定XOUTH以完成10位数据的读取XOUTH在XOUTL读取完毕后直接读取2. 寄存器2 XOUTL(10bit输出X轴输出高2位) 地址0X01 只读D7D6D5D4D3D2D1D0------------XOUT[9]XOUT[8]000000003. 寄存器3 YOUTL(10bit输出Y轴输出低8位) 地址0X02 只读4. 寄存器4 YOUTH(10bit输出Y轴输出高2位) 地址0X03 只读5. 寄存器5 ZOUTL(10bit输出Z轴输出低8位) 地址0X04 只读6. 寄存器6 ZOUTH(10bit输出Z轴输出高2位) 地址0X05 只读(Y轴和Z轴的寄存器参考X轴即可)7. 寄存器7 XOUT8(8bit输出X轴) 地址0X06 只读D7D6D5D4D3D2D1D0XOUT[7]XOUT[6]XOUT[5]XOUT[4]XOUT[3]XOUT[2]XOUT[1]XOUT[0]000000008. 寄存器8 YOUT8(8bit输出Y轴) 地址07 只读9. 寄存器9 ZOUT8(8bit输出Z轴) 地址08 只读10. 寄存器10 STATUS(状态寄存器) 地址0X09 只读D7D6D5D4D3D2D1D0----------PERRDOVRDRDY00000000(1) DRDY 1:数据准备好 0:数据未准备好(2) PERR 1: Parity error is detected in trim data. Then, self-test is disabled0: Parity error is not detected in trim data(3) DOVR 1:数据被覆盖 0:数据未被覆盖11. 寄存器11 DETSRC(检测源寄存器) 地址0X0A 只读D7D6D5D4D3D2D1D0LDXLDYLDZPDXPDYPDZINT2INT100000000LDX1:正在检测X轴0:没有检测X轴LDY1:正在检测Y轴0:没有检测Y轴LDZ1:正在检测Z轴0:没有检测Z轴PDX1:X轴检测到脉冲0:X轴没有检测到脉冲PDY1:Y轴检测到脉冲0:Y轴没有检测到脉冲PDZ1:Z轴检测到脉冲0:Z轴没有检测到脉冲INT1 INT2(参考寄存器Control1内容,地址0x18)1:检测到中断0:没有检测到中断12. 寄存器14 I2CAD(I2C地址寄存器) 地址0X0D读/写D7D6D5D4D3D2D1D0I2CDISDVAD[6]DVAD[5]DVAD[4]DVAD[3]DVAD[2]DVAD[1]DVAD[0]00011101I2CDIS0:I2C和SPI都可以使用1:I2C被禁用DVAD[6]:[0]:I2C地址,默认0X1D13. 寄存器15 USRINF(用户信息寄存器) 地址0E 只读D7D6D5D4D3D2D1D0UI[7]UI[6]UI[5]UI[4]UI[3]UI[2]UI[1]UI[0]0000000014. 寄存器16 WHOAMI(我是谁寄存器) 地址0X0F 只读D7D6D5D4D3D2D1D0ID[7]ID[6]ID[5]ID[4]ID[3]ID[2]ID[1]ID[0]0000000015. 寄存器17 XOFFL(X轴漂移补偿低字节) 地址0X10 只读D7D6D5D4D3D2D1D0XOFF[7]XOFF[6]XOFF[5]XOFF[4]XOFF[3]XOFF[2]XOFF[1]XOFF[0]00000000这些寄存器是用来设置并存储0g时的漂移补偿校准的,可参考freescale应用指南AN3745以获得详细过程。
16. 寄存器18 XOFFH(X轴漂移补偿高字节) 地址0X11 只读D7D6D5D4D3D2D1D0----------XOFF[10]XOFF[9]XOFF[8]0000000017. 寄存器19 YOFFL(Y轴漂移补偿低字节) 地址0X12 只读D7D6D5D4D3D2D1D0YOFF[7]YOFF[6]YOFF[5]YOFF[4]YOFF[3]YOFF[2]YOFF[1]YOFF[0]00000000这些寄存器是用来设置并存储0g时的漂移补偿校准的,可参考freescale应用指南AN3745以获得详细过程18. 寄存器20 YOFFH(X轴漂移补偿高字节) 地址0X13 只读D7D6D5D4D3D2D1D0----------YOFF[10]YOFF[9]YOFF[8]0000000019. 寄存器21 ZOFFL(Z轴漂移补偿低字节) 地址14 只读D7D6D5D4D3D2D1D0ZOFF[7]ZOFF[6]ZOFF[5]ZOFF[4]ZOFF[3]ZOFF[2]ZOFF[1]ZOFF[0]00000000这些寄存器是用来设置并存储0g时的漂移补偿校准的,可参考freescale应用指南AN3745以获得详细过程。
20. 寄存器22 ZOFFH(Z轴漂移补偿高字节) 地址0X15 只读D7D6D5D4D3D2D1D0----------ZOFF[10]ZOFF[9]ZOFF[8]0000000021. 寄存器23 MCTL(模式控制寄存器) 地址0X16 读/写D7D6D5D4D3D2D1D0--DRP。
