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

mma8653驱动编程相关推荐

  1. 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)

    这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...

  2. linux内核_Linux驱动编程的本质就是Linux内核编程

    由于Linux驱动编程的本质属于Linux内核编程,因此我们非常有必要熟悉Linux内核以及Linux内核的特点. 这篇文章将会帮助读者打下Linux驱动编程的基础知识. 本篇文章分为如下三个小节进行 ...

  3. Linux驱动编程 step-by-step (二) 简单字符设备驱动

    简单字符设备驱动 1.主次设备号 主设备号标识设备连接的的驱动,此设备好由内核使用,标识在相应驱动下得对应的设备 在linux中设备号是一个32位的dev_t类型 typedef __u32    _ ...

  4. Linux驱动编程 step-by-step (五)主要的文件操作方法实现

    主要的文件操作方法实现 文件操作函数有很多的操作接口,驱动编程需要实现这些接口,在用户编程时候系统调用时候会调用到这些操作 [cpp] view plaincopy struct file_opera ...

  5. 数据即代码:元驱动编程

    几个小伙伴在考虑下面这个各个语言都会遇到的问题: 问题:设计一个命令行参数解析API 一个好的命令行参数解析库一般涉及到这几个常见的方面: 1) 支持方便地生成帮助信息 2) 支持子命令,比如:git ...

  6. [内核编程] 内核环境及其特殊性,驱动编程基础篇

    [内核编程] 内核环境及其特殊性,驱动编程基础篇  在学习汉江独钓一书后,打算总结一下内核编程应该注意的事项,以及有关的一些基础知识.第一次接触内核编程,还真是很生疏,很多东西不能一下马上消化.这里做 ...

  7. linux驱动read函数 copytouser,Linux驱动编程 step-by-step (五)主要的文件操作方法实现...

    主要的文件操作方法实现 文件操作函数有很多的操作接口,驱动编程需要实现这些接口,在用户编程时候系统调用时候会调用到这些操作 structfile_operations { ... loff_t (*l ...

  8. CAN 总线嵌入式驱动编程

    摘要:介绍了uclinux 操作系统的内核结构以及设备驱动编程的基本原理,并对CAN 总线的嵌入式系统进行了硬件设计及软件驱动编程,提出CAN 总线技术应用于嵌入式系统的一种方案. 1 引言     ...

  9. Windows驱动编程基础教程

    前言     本书非常适合熟悉Windows应用编程的读者转向驱动开发.所有的内容都从最基础的编程方法入手.介绍相关的内核API,然后举出示范的例子.这本书只有不到70页,是一本非常精简的小册子.所以 ...

最新文章

  1. sqlDataAdapter的FillSchema用法
  2. 《你的灯亮着吗》读后感1
  3. TortoiseGit上传代码报错error:1407742E
  4. windosw应用提示内存不足
  5. 随想录(docker应用)
  6. 【C】C语言内存字节对齐
  7. Hive与RDBMS的区别
  8. android 版本更新下载进度框,Android版本更新(Service下载 Notification进度条)
  9. guet-acm-开挂的chair
  10. jsp超链接中怎么跳转页面跳转_JSP跳转页面汇总
  11. 微信公众平台开发(56)优惠券
  12. 可怕!Facebook 竟能识别出性工作者!你怎么看?
  13. wma格式怎么转换mp3
  14. 虚幻5新特性之EnhancedInput
  15. PHP底层入门的一些概念
  16. docker容器搭建discuz论坛
  17. Hadoop中解除 Name node is in safe mode的方法
  18. ActivityNet数据集解析
  19. 物联网安全解决方案_如何设计具有安全性的自制物联网解决方案
  20. java雪人程序_java的几种引用类型

热门文章

  1. 基于Java的网络编程实践
  2. google earth pro无法链接服务器的问题
  3. 【实战篇】39 # 如何实现世界地图的新冠肺炎疫情可视化?
  4. char *与char []的区别
  5. 5G有源、无源室分对比
  6. 热辊的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. CAD输入坐标的方式有哪些?
  8. Java核心技术之Comparator和Comparable在排序中的应用
  9. 大学专业课真题(百度拷贝过来的)
  10. 分布式服务框架Dubbo/Dubbox入门示例