查看: 5285|回复: 8

[原创] 【FRDM-KL02】MMA8451Q加速度数据读取

[复制链接]
  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5786
    最后登录
    2025-5-7
    发表于 2015-11-25 21:07:48 | 显示全部楼层 |阅读模式
    本帖最后由 wambob 于 2015-11-26 16:09 编辑

    MMA8451Q是具有14位数据精度的智能低功耗3轴电容式微机械加速度传感器。这款加速度传感器具有灵活的、用户可编程的嵌入式功能,可对两个中断引脚进行配置。嵌入式中断功能可以节省整体功耗,使主处理器不必连续轮询数据。可以存取低通滤波数据,也可以存取高通滤波数据,从而最大限度地减少了颠簸检测对数据分析的需求,实现更快的数据转换。该器件经过配置,能够将可配置的嵌入式功能进行自由组合,生成惯性唤醒中断信号,这样使MMA8451Q能够在非活动期间保持低功耗模式不变,但仍可对事件进行监控。
    特性:
    主要特性
    • 1.95至3.6v电源电压
    • 1.6至3.6v接口电压
    • 全量程动态可选:±2g/±4g/±8g
    • 输出数据频率(ODR)范围:1.56 Hz至800 Hz
    • 99 μg/√Hz噪声
    • 14位和8位数字输出
    • I²C数字输出接口(采用4.7kΩ上拉电阻时,运行频率可达2.25 MHz)
    • 两个可编程中断引脚,支持7个中断源
    • 3个嵌入式通道用于运动检测
      • 自由落体或运动检测:一个通道
      • 脉冲检测:一个通道
      • 颠簸检测:一个通道
    • 方向(纵向/横向)检测,可设定滞后补偿
    • ODR自动变化,自动唤醒并返回到睡眠状态
    • 32采样FIFO
    • 每个采样均以FIFO方式提供高通滤波数据
    • 自检
    • 电耗:6 μA–165 μA

    FRDM-KL02板上有MMA8451Q加速度传感器。 11.JPG

    作为I2C从器件,首先确定地址。板上的SA0=1。

    12.JPG
    MMA8451有待机和激活两种模式。大部分设置可以在待机模式改变,但是只有激活后才更新或使能。动态范围只能在待机模式下改变。
    读取过程:1:进入激活模式  这个通过写0x2A 寄存器的bit0为1。
                      2:读状态寄存器0x00,判断有没有新的数据更新。
                      3:读X、y、Z轴数据寄存器0x01、0x02;0x03、0x04;0x05,0x06。


    1. #include <stdio.h>
    2. #include <string.h>
    3. #include "gpio.h"
    4. #include "common.h"
    5. #include "i2c.h"
    6. #include "uart.h"
    7. #include "at24cxx.h"

    8. int16_t accel_x, accel_y, accel_z;         
    9. uint8_t ret,ret0,ret1,ret2;
    10. uint8_t x1,x2,y1,y2,z1,z2;
    11. int main(void)
    12. {
    13.    
    14.     /* 开机延时 */
    15.     DelayInit();
    16.     /* UART 初始化 */
    17.     GPIO_QuickInit(HW_GPIOB, 6, kGPIO_Mode_OPP);
    18.     UART_QuickInit(UART0_RX_B2_TX_B1, 9600);
    19.     UART_ITConfig(HW_UART0, kUART_IT_Rx, true);
    20.     I2C_QuickInit(I2C0_SCL_PB03_SDA_PB04, 576000);
    21.     I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x0d, &ret) ;   
    22.     printf("WHO_AM_I:%x\r\n",ret);   
    23.     I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x0e, &ret1) ;
    24.     printf("WHO_AM_I:%x\r\n",ret1);
    25.    
    26.     I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x2a, &ret2);
    27.     I2C_WriteSingleRegister(HW_I2C0, 0x1d, 0x2a, ret2|0x01);
    28.    
    29.     while(1)
    30.     {
    31.       I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x00, &ret0) ; //读状态寄存器0x00,判断有没有新的数据更新
    32.       if(ret0&0f)
    33.     {
    34.       I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x01, &x1);
    35.       I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x02, &x2);
    36.       I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x03, &y1);
    37.       I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x04, &y2);
    38.       I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x05, &z1);
    39.       I2C_ReadSingleRegister(HW_I2C0, 0x1d, 0x06, &z2);
    40.       
    41.       accel_x=x1<<8;
    42.       accel_x|=x2;
    43.       accel_x>>=2;
    44.       
    45.       accel_y=y1<<8;
    46.       accel_y|=y2;
    47.       accel_y>>=2;
    48.       
    49.       accel_z=z1<<8;
    50.       accel_z|=z2;
    51.       accel_z>>=2;
    52.       
    53. printf("accel_x:%d\r\n",accel_x);
    54. printf("accel_y:%d\r\n",accel_y);
    55. printf("accel_z:%d\r\n",accel_z);
    56. printf("       \r\n");}
    57.       
    58. GPIO_ToggleBit(HW_GPIOB, 6);
    59.         DelayMs(1000);
    60.     }   
    61.    
    62. }
    复制代码
    未命名.JPG

    评分

    参与人数 1NXP金币 +15 收起 理由
    小七 + 15 赞一个!

    查看全部评分

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-4 23:20
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    9

    主题

    573

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1785
    最后登录
    2017-3-3
    发表于 2015-11-25 21:17:33 | 显示全部楼层
    谢谢分享 091541cr1iu0jkaf0zjmqc.png

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16856
    最后登录
    1970-1-1
    发表于 2015-11-25 21:58:21 | 显示全部楼层
    多谢分享
    回复

    使用道具 举报

    该用户从未签到

    61

    主题

    965

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2394
    最后登录
    1970-1-1
    发表于 2015-11-26 08:48:37 | 显示全部楼层
    谢谢分享              
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11

    主题

    251

    帖子

    0

    高级会员

    Rank: 4

    积分
    690
    最后登录
    2016-11-3
    发表于 2015-11-26 09:25:24 | 显示全部楼层
    谢谢分享                     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    555

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    1343
    最后登录
    2018-10-23
    发表于 2015-11-26 09:34:04 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-11-27 13:13:58 | 显示全部楼层
    谢谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-2-3 09:41
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    3

    主题

    732

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1802
    最后登录
    1970-1-1
    发表于 2015-12-23 10:30:02 | 显示全部楼层
    试试这个代码,不错呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    33
    最后登录
    2020-3-22
    发表于 2017-4-5 22:14:44 | 显示全部楼层
    谢谢分享!
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-2 17:13 , Processed in 0.097418 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表