MMA8451三轴加速度传感器.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MMA8451三轴加速度传感器,16引脚,QFN封装,数字I2C输出,8位/14位精度可选,量程2g/4g/8g可选,电源供电1.95v~3.6v可选。输出数据速率从1.56到800Hz。有两个可编程的中断引脚,7个中断源。可检测自由落体、运动、脉冲、振动等、倾角等。 32个采样FIFO,每次采样都通过高通滤波后传入FIFO。 典型应用有:电子罗盘,静态姿态、运动检测,笔记本电子书等便携设备的翻滚、自由落体检测,实时的方向检测可用于虚拟现实设备或3d游戏中的位置检测,便携设备的节能应用中的运动检测等等。 芯片外形 不同姿态下X、Y、Z三轴对应的重力输出 典型连接 引脚定义如下: 引脚编号 引脚名称 引脚描述 引脚状态 1 VDDIO 内部电源供电(1.62~3.6v) 输入 2 BYP 旁路电容 输入 3 NC 悬空引脚 开路 4 SCL I2C串行时钟 漏极开路 5 GND 接地 输入 6 SDA I2C串行数据 漏极开路 7 SA0 I2C最低有效位地址 输入 8 NC 悬空引脚 开路 9 INT2 中断请求引脚2 输出 10 GND 接地 输入 11 INT1 中断请求引脚1 输出 12 GND 接地 输入 13 NC 悬空引脚 开路 14 VDD 电源(1.95~3.6v) 输入 15 NC 悬空引脚 开路 16 NC 悬空引脚 开路 灵敏度由count/g表示,2g量程下,可达4096/g,4g量程下,可达2048/g,8g量程下,可达1024/g MMA8451状态转换图 MMA8451内部框图,分为数字部分和模拟部分 在OFF模式下,数字部分和模拟部分都不工作 在STANDBY模式下,IIC通信照常进行,但模拟模块被禁止,内部时钟停止 在ACTIVE模式下(WAKE或SLEEP),IIC通信照常进行,数字和模拟模块都正常工作 I2C串行通信 MMA8451使用I2C串行通信和外部交换数据,MMA8451可通过中断信号指示新的采样序列可用,也可通过设置使用中断信号指示设备的移动、自由落体、瞬变、方向、单/双击。 I2C总线使用三根信号线进行通信,分别是SCL、SDA和SA0,外部上拉电阻需要将SDA和SCL接到VDDIO上,当总线空闲时,这两根线表现为高电平状态。MMA8451的I2C接口可工作在快速模式400KHz或普通模式100KHz。 总线传输开始由START信号触发,START信号定义为,当数据线从高电平跳变到低电平,而时钟线SCL仍然保持高电平。由主机发送START信号过后,I2C总线被认为从空闲(free)状态进入忙(busy)状态。紧接着START信号后主机发送的字节,前7位用于指示从机地址,第8位用于指示数据方向是读出(1数据从从机到主机)还是写入(0数据从主机到从机)。地址发送完毕后,总线上的所有从机将自己的地址和总线上接收到的地址进行比较,地址匹配的设备即为主机选中设备。第9个脉冲为应答响应,发送设备必须在这个ACK周期内释放数据线,而接收设备则需要在ACK周期的时钟高电平期间将数据线拉低。 SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。停止条件将终止发送器的发送。 主机也可重复发出起始(START)条件,对于MMA8451,重复的起始条件可用于读取一些特殊的寄存器。 MMA8451的地址被设置为0x1c或0x1d,可用引脚7(SA0)的高低电平来选择。当SA0为高电平时,0x1d地址被选中有效,当SA0为低电平时,0x1c地址被选中有效。 重点概念: START条件:时钟线SCL为高电平期间,数据线从高电平跳变到低电平 START代码,使用IO口模拟IIC /******************************************* I2C START信号 时钟脉冲高电平期间,数据线负跳变 ********************************************/ void IIC_start(void) { IIC_SCL=0;//时钟线低 IIC_SDA=1;//数据线高 _asm(nop); IIC_SCL=1;//时钟线高 _asm(nop); IIC_SDA=0;//数据线从高跳变到低 _asm(nop); IIC_SCL=0;//时钟线低 } STOP条件: 时钟线SCL为高电平期间,数据线从低电平跳变到高电平 /******************************************* I2C STOP信号 时钟脉冲高电平期间,数据线正跳变 ***********************************

文档评论(0)

laoshang_m + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档