mma8653驱动编程

本文详细介绍了如何通过I2C控制器驱动mma8653加速度传感器,包括其测量范围、工作模式、设备地址、寄存器操作及加速度值的读取方法。驱动实现依赖于iic_init、iic_start等函数,读写寄存器涉及特定的步骤。加速度值存储在0x01~0x06寄存器中,X、Y、Z轴数据需按位组合解析。通过切换CTRL_REG1寄存器的第0位可将芯片切换至ACTIVE模式。
摘要由CSDN通过智能技术生成

1) 该芯片的测量范围
           +-2g (默认)
           +-4g
           +-8g
  2)该芯片有几种工作模式
     OFF
     STANDBY(待机)
     ACTIVE
   3)该芯片的从设备地址
     0x1d
   4)该芯片大概有多少个特殊功能寄存器
      大约有50个寄存器
    5)ID值存储在哪个寄存器中
     WHO_AM_I (0x0d)
    6)加速度值存在哪些寄存器中
     0x01~0x06的寄存器中

该驱动本质上也是去操作mma8653内部的特殊功能寄存器
       实现该驱动的基础:I2C控制器的驱动
           iic_init
           iic_start  iic_tx  iic_stop:   发
           iic_start  iic_rx  iic_stop:收
       读mma8653的datasheet
           从设备地址:0x1d
           内部有接近50个特殊功能寄存器
           读写其内部寄存器的方式
           
           写的过程:mma8653_write
              主设备 发start
                     发0x1d<<1|0
                     收ACK
                     发寄存器地址
                     收ACK
                     发data
                     收ACK
                     ...
                     发data
                     收ACK
                     发stop

           读的过程:mma8653_read
               主设备 发start
                      发0x1d<<1|0
                      收ACK
                      发寄存器地址
                      收ACK
                      重发start
                      发0x1d<<1|1
                      收ACK
                      收data
                      发ACK
                      ...
                      收data
                      不发ACK
                      发STOP

读取加速度值
  mma8653 datasheet
     1)加速度值存在于哪个寄存器中
              0x01~0x06寄存器
    0x01和0x02寄存器前2bit共10bit存放X轴加速度值
    0x03和0x04寄存器前2bit共10bit存放Y轴加速度值
    0x05和0x06寄存器前2bit共10bit存放Z轴加速度值
     2)地址为0x00的寄存器的作用
              数据状态寄存器,可以检测XYZ轴寄存器中数据状态,相应位表示是否被覆盖以及是否产生新数据
     3)如何切换为active
        CTRL_REG1
            [0]  1 ,切换为ACTIVE模式                          
    问题:我是如何读取到加速度值的
    以X轴数据为例:
    X = arr[01]<<24 | arr[02]<<16 
    X = X>>22 

    错误实例:
    X = arr[01]<<8 | arr[02] 
    X = X>>6           

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗里い着迷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值