ImageVerifierCode 换一换
格式:DOC , 页数:4 ,大小:27.50KB ,
资源ID:3533693      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3533693.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(gsensorMMA7660调试总结.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

gsensorMMA7660调试总结.doc

1、MMA7660 是 MMA7455 的简化,有 10 个寄存器可供设置其工作模式,采样速率,中断使能等。我们是深圳本土最受客户青睐、成长最快、最关注增值服务的 MID 电子元件提供商之一。我们深圳的长期大量现货型号有:MMA7660, MMA7455, MMA8452QR1, MXC6225XU, MMC3140MS, TS1003,MPU-3050, ALC5621, ALC5625, WM8988, ES8388,联系热线:13714686590,杨先生输入:mma7455.c 驱动一个,MMA7660 datasheet 一份,i800 原理图一份。输出:mma7660.c 驱动一个。辅

2、助设备:示波器一个。1. 把 drivers/hwmon/mxc_mma7450.c 复制为 mxc_mma7660.c,并修改drivers/hwmon/Kconfig 和 Makefile,使 MXC_MMA7660 出现在 menuconfig 中并可编译进内核。Kconfig 中加入:config MXC_MMA7660tristate “MMA7660 device driver“depends on MACH_MX51_3DSdefault nMakefile 中加入:obj-$(CONFIG_MXC_MMA7660) += mxc_mma7660.o2. 在 mx51_3stac

3、k.c 中为 mma7660 配置中断引脚 MX51_PIN_EIM_CS3(由原理图得到),及其所需的 DVDD 和 AVDD 电压。static void gpio_mma7660_get(void)mxc_request_iomux(MX51_PIN_EIM_CS3, OUTPUTCONFIG_GPIO, INPUTCONFIG_GPIO);mxc_set_gpio_direction(MX31_PIN_STX0, 1);static void gpio_mma7660_put(void)mxc_free_iomux(MX51_PIN_EIM_CS3, OUTPUTCONFIG_GPIO

4、, INPUTCONFIG_GPIO);static struct mxc_mma7660_platform_data mma7660_data = .reg_dvdd_io = “VVIDIO“,.reg_avdd = “VSD“,.gpio_pin_get = gpio_mma7660_get,.gpio_pin_put = gpio_mma7660_put,.irq = IOMUX_TO_IRQ(MX51_PIN_EIM_CS3),3. 修改 mma7660.c 中断、DVDD、AVDD 相关代码。经过以上步骤,mma7450 到 mma7660 的代码移植就完成了。接下来是开机调试,上

5、电后,kernel 正常启动,没有崩溃,说明成功了一半。查看 kernel 启动 log,add mma i2c driverinput: mma7450 as /devices/platform/i2c-adapter/i2c-0/0-001d/input/input1mma7450 0-001d: mma7450 device is probed successfully.说明驱动已经加载。进入 rootfs 后,抖动板子,屏幕没有任何反应,进入命令行查看,中断函数中的 log 没有打印出来,说明无中断产生(probe 函数里已经通过 I2C 打开了所有中断屏蔽位)。无中断产生无外乎 3

6、个原因:1.芯片供电不正常2.中断引脚 GPIO 配置不正确3.芯片模式设置不对使用示波器检测各管脚,发现 DVDD 和 AVDD 都供电正常,中断引脚一直为高,则排除第一个原因。第二个原因概率较小,先看看第三个原因。由于芯片 datasheet 上没有说明如何初始化,对于不知道如何初始化的芯片,可以用“灌寄存器”的方法来尝试。所谓灌寄存器,就是在向 sysfs 注册 driver 的时候提供这样一个结构体:static struct device_attribute mma7660_dev_attr = .attr = .name = “mma7660_ctl“,.mode = S_IRUS

7、R | S_IWUSR,.show = mma7660_show,.store = mma7660_store,;这个结构体向用户层暴露此芯片的所有寄存器。show 函数用于读取某个寄存器值,store 函数用于设置某个寄存器的值。设备属性结构体配置完后,用这个函数向 sysfs 注册这个设备属性:device_create_file(这样在 sys/devices/platform/i2c-adapter/i2c-0/0-001d/input/ 下会产生一个”mma7660_ctl”设备,通过 echo 和 cat 命令就可以实时读取和设置各寄存器的值。由于寄存器较多,排列组合情况很多,最后

8、锁定了 3 个寄存器,REG_INIT, REG_MODE,REG_SR。 REG_INIT 为中断屏蔽寄存器,这里打开所有中断,即无论是震动,位移,旋转,gsensor 都产生中断(反正现在是要不择手段的获得一个中断先。),REG_MODE 使其处于 active 模式, REG_SR 设置为休眠唤醒状态。上面 3 个寄存器可以通过 sysfs 这样设置:#cd sys/devices/platform/i2c-adapter/i2c-0/0-001d/input/#echo “setinit 127“ mma7450_ctl / 打开所有中断 11111111#echo “setmod 1

9、“ mma7450_ctl / 配置为 active mode 00000001#echo “setsr 12“ mma7450_ctl / 配置为休眠唤醒模式 00001100执行完以上命令,板子还是无反应,测量中断引脚的确无信号,由于现在还没有排除第二个原因,所以命令行无反应不等于没有中断,所以还是需要示波器实测。经过核对,发现 datasheet 上的 mode 寄存器位看反了。#echo “setmod 4“ mma7450_ctl / 配置为 active mode 00000100命令行出现源源不断的:#xyz motion detected#xyz motion detected

10、#xyz motion detected#xyz motion detected.示波器测量中断引脚出现了中断脉冲,周期大概在几十 ms。关闭中断屏蔽寄存器 REG_INIT 的除了 xyz 震动探测外的所有中断:#echo “setinit 3“ mma7450_ctl / shake detection 00000011这样,就只有在每敲击一次板子时才会产生一个中断。中断是产生了,但是桌面还是没有任何反应。#logcat提示 MODULE: sensors.freescale.so not found.进入 myandroid/hardware/libhardware/modules/ ,

11、有 lights, sensors, overlay 三个子文件夹,把 sensors/ 目录拷贝到 lights/modules/目录下,进入顶层目录 myandroid/, 执行 make sensors.freescale, 在myandroid_r3/out/target/product/generic/symbols/system/lib/ 下生成sensors.freescale.so, 把它拷贝到 rootfs 下的 system/lib/目录下,重新启动,窗口终于旋转了。要使自己写的 android 应用程序能够通过 gsensor 旋转屏幕,可以在AndroidManifes

12、t.xml 中选择 Application 选项卡,在 Application Notes 里选中你的项目后,在右边出现的 Attributes 窗口里的 Screen Orietation 一栏右边 的下拉菜单里选择 sensor, 选择之后,AndroidManifest.xml 代码里会自动添加类似代码:android:label=“string/app_name“ android:screenOrientation=“sensor“。我们是深圳本土最受客户青睐、成长最快、最关注增值服务的 MID 电子元件提供商之一。我们深圳的长期大量现货型号有:MMA7660, MMA7455, MMA8452QR1, MXC6225XU, MMC3140MS, TS1003,MPU-3050, ALC5621, ALC5625, WM8988, ES8388,联系热线:13714686590,杨先生以前听说 intel 的家伙是用脚本灌寄存器来启动一块芯片的,这次有点体会到了其中的含义,当要测试一块寄存器配置很复杂的新芯片时,可以直接用 cat一个脚本到 sysfs 的方法来配置其寄存器,这样就不用重新编译 kernel 了,不知道他们的灌寄存器是不是这个意思。 链接地址:http:/

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。