关于tiny4412的重力传感器MMA7600实验以及解析

本文详细介绍了在Tiny4412开发板上定制MMA7600三轴加速度及角速度传感器驱动的过程。通过分析IIC通信协议,了解mma7600的板级信息,包括使用i2cSDA3和i2cSCL3,外部中断XEINT25,以及寄存器GPA1_2, GPA1_3, GPX3_1。文中提供了mma7600的设备树配置示例,包括从机地址0x4c,I2c3的200kHz频率设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在tiny4412底板集成了重力传感器mma7600
这是一款三轴加速度传感器以及角速度传感器(陀螺仪)
linux内核中以及为我们写好了驱动代码,现在我们卸载该驱动然后写一个属于我们自己的mma7600驱动,mma7600该芯片支持的通信协议有很多,目前主流的都是使用IIC协议
阅读这篇文章需要有一点的IIC,驱动框架,输入子系统作为知识铺垫

我们就不介绍IIC协议的通信原理了,不了解的童鞋可以在优快云上搜索

下图是mma7600的底板图
在这里插入图片描述
从图中可以知道,
我们使用的是i2cSDA3以及i2cSCL3,还有一个外部中断XEINT25
通过电路连接查询可以找到相应的寄存器GPA1_2,GPA1_3,GPX3_1
在这里插入图片描述

tiny4412有自带的驱动,现在一般都是采用设备树形式配置从设备节点,但是可以作为我们的参考,在arch/arm/mach-exynos/mach-tiny4412.c中包含了mma7660的板级信息。

#include <linux/mma7660.h>
static struct mma7660_platform_data mma7660_pdata = {
	.irq			= IRQ_EINT(25),
	.poll_interval	= 100,
	.input_fuzz		= 4,
	.input_flat		= 4,
};
#endif

static struct s3c2410_platform_i2c tiny4412_i2c3_data __initdata = {
	.flags			= 0,
	.bus_num		= 3,
	.slave_addr		= 0x10,
	.frequency		= 200*1000,//频率200kHz
	.sda_delay		= 100,
};

static struct i2c_board_info smdk4x12_i2c_devs3[] __initdata = {
#ifdef CONFIG_MXC_MMA845X
	{
		.type = "mma845x",
		.addr = 0x1D,		/*mma845x i2c slave address*/
		.platform_data = (void *)&mma845x_data,
	},
#endif
#ifdef CONFIG_SENSORS_MMA7660
	{
		I2C_BOARD_INFO("mma7660", 0x4c),
		.platform_data = &mma7660_pdata,
	},
#endif
};

可以看出从机mma7600的地址是0x4c,I2c3的频率是200kHz,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值