导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[longxin1122]深圳市龙芯科技有限公司MMA7660FC



No.94083
作者:longxin1122
邮件:1105091895@qq.com
ID:149216
登陆:3次
文章数:11篇
最后登陆IP:116.24.25.116
最后登陆:2013/4/17 10:37:28
注册:2013/4/9 15:21:06
财富:160
发帖时间:2013/4/9 15:29:13
发贴者IP:116.24.233.230
标题:longxin1122:深圳市龙芯科技有限公司MMA7660FC MMA8452QR1 MXC6225XU[原创]
摘要:No.94083深圳市龙芯科技有限公司MMA7660FC MMA8452QR1 MXC6225XU[原创] MMA7660是MMA7455的简化,有10个寄存器可供设置其工作模式,采样速率,中断使能等。
我们是深圳本土最受客户青睐、成长最快、最关注增值服务的MID电子元件提供商之一。我们深圳的长期大量现货型号有:MMA7660, MMA7455, MMA8452QR1, MXC6225XU, MMC3140MS, TS1003,MPU-3050, ALC5621, ALC5625, WM8988, ES8388,联系热线:朱先生:15012827056

    TEL:0755-89486115    FAX:0755-83749019  QQ: 1105091895

输入:mma7455.c驱动一个,MMA7660 datasheet一份,i800原理图一份。
输出:mma7660.c驱动一个。
辅助设备:示波器一个。

1. 把drivers/hwmon/mxc_mma7450.c复制为mxc_mma7660.c,并修改drivers/hwmon/Kconfig和 Makefile,使MXC_MMA7660出现在menuconfig中并可编译进内核。
Kconfig中加入:
config MXC_MMA7660
        tristate "MMA7660 device driver"
        depends on MACH_MX51_3DS
        default n
Makefile中加入:
obj-$(CONFIG_MXC_MMA7660)        += mxc_mma7660.o

2. 在mx51_3stack.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, 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的代码移植就完成了。

接下来是开机调试,上电后,kernel正常启动,没有崩溃,说明成功了一半。

查看kernel启动log,
add mma i2c driver
input: mma7450 as /devices/platform/i2c-adapter/i2c-0/0-001d/input/input1
mma7450 0-001d: mma7450 device is probed successfully.
说明驱动已经加载。

进入rootfs后,抖动板子,屏幕没有任何反应,进入命令行查看,中断函数中的log没有打印出来,说明无中断产生(probe函数里已经通过 I2C打开了所有中断屏蔽位)。

无中断产生无外乎3个原因:
1.芯片供电不正常
2.中断引脚GPIO配置不正确
3.芯片模式设置不对

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

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:16毫秒 最大:5186毫秒 查询6次