AKM的AK09918调试驱动过

4 篇文章 0 订阅
4 篇文章 0 订阅
本文档详细介绍了AK09918磁力计通过I2C协议进行数据读写的步骤,包括寄存器定义、数据状态检查以及在读取三轴数据时遇到的DRDY标志问题。解决方法是在读取数据前先读取ST2或TMPS寄存器以清除就绪标志。提供了Linux和STM32平台的驱动程序源代码供参考。
摘要由CSDN通过智能技术生成

一、描述

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcWluZ2VyYXRlY2g=,size_20,color_FFFFFF,t_70,g_se,x_16

 二、AK09918是通过标准的I2C协议读写数据的,速率支持100KHz(标准)-400KHz快速模式的。

三、寄存器


enum {
	COMPANY_ID = 0x48,
	DEVICE_ID = 0x0C,
};


#define AK09918_SLAVE_ADDR						0x0C



//
//公司名称Company ID->AKM
#define WIA1_CO_ID_REG								0x00

//
//设备ID Device ID->AK09918
#define WIA2_DEVICE_ID_REG						0x01

//
//数据状态寄存器1。bit0就绪位DRDY->0:Normal。1:Data is ready。bit1超时位DOR->0:Normal。1:Data OVerrun
//ST2或测量寄存器(HXL to TMPS)被读的时候都是返回0。溢出是连续测量模式下寄存器数据未被及时读走
#define ST1_REG												0x10

//
//X轴低八位数据,default:0。range of axis is -32752 to 32752
#define HXL_REG												0x11

//
//X轴高八位数据,default:0。range of axis is -32752 to 32752
#define HXH_REG												0x12

//
//Y轴低八位数据,default:0。range of axis is -32752 to 32752
#define HYL_REG												0x13

//
//Y轴高八位数据,default:0。range of axis is -32752 to 32752
#define HYH_REG												0x14

//
//Z轴低八位数据,default:0。range of axis is -32752 to 32752
#define HZL_REG												0x15

//
//Z轴高八位数据,default:0。range of axis is -32752 to 32752
#define HZH_REG												0x16

//
//哑读操作寄存器
#define TMPS_DUMMY_REG								0x17

//
//状态寄存器2。bit4-HOFL:溢出标志->0:Normal。1:Magnetic sensor overflow occurred
//溢出数据无效,数据有效与否的标志,读取(HXL to TMPS)数据之后需要读溢出ST2寄存器
#define ST2_REG												0x18

//
//哑读/写操作寄存器
#define CNTL1_DUMMY_REG								0x30

//
//操作模式寄存器
#define CNTL2_MODE_REG								0x31

//
//复位寄存器->1:Reset。0:Normal
#define CNTL3_RST_REG									0x32

四、地址需要注意,右移一位:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcWluZ2VyYXRlY2g=,size_20,color_FFFFFF,t_70,g_se,x_16

 五、读取三轴数据的时候,判断数据就绪的标志。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcWluZ2VyYXRlY2g=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcWluZ2VyYXRlY2g=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 但是,按照手册设置模式后直接判断DRDY读取三轴数据,DRDY会一直是0。

.

.

.

在寄存器ST1看到watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcWluZ2VyYXRlY2g=,size_20,color_FFFFFF,t_70,g_se,x_16

DRDY就绪后需要读ST2或者HXL-TMPS寄存器才会置零。

所以需要在读标志之前进行一次读ST2或者TMPS寄存器。

以上就是我读写AK09918时遇到的问题和解决方法,水平有限,如有不妥,请见谅,请指出。谢谢。

需要源代码的朋友去:ak09918Linux平台和STM32平台驱动程序,实测,亲自调试-Linux文档类资源-CSDN下载

下载去。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值