QMI8658芯片I2C驱动开发指南

2024-03-15 13:20

本文主要是介绍QMI8658芯片I2C驱动开发指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个芯片纯国产挺好用的,电路很好设计,我这垃圾焊功,纯手焊,,居然能用。
在这里插入图片描述

第一部分 硬件连接


画的很简陋,看看就可以了,这里I2C总线需要接10K上拉没有画出来,这个需要注意一下。
在这里插入图片描述

第二部分 软件驱动


I2C的具体时序实现需要自己搞定!!

2.1 I2C读写寄存器功能

u8 QMI8658_ReadReg(u8 dAddr, u8 Reg)
{u8 Value = 0;//1.启动IICIIC_Start();//2.写设备地址IIC_Send_Byte((dAddr << 1)|0);//3.waitif(IIC_Wait_Ack()){IIC_Stop();return 1;}//4.寄存器地址IIC_Send_Byte(Reg);//5.waitif(IIC_Wait_Ack()){IIC_Stop();return 1;}//6.启动IICIIC_Start();//7.设备地址IIC_Send_Byte((dAddr << 1)|1);//8.wait read ackif(IIC_Wait_Ack()){IIC_Stop();return 1;}Value = IIC_Read_Byte(1);//9.stopIIC_Stop();return Value;
}void QMI8658_WriteReg(u8 dAddr, u8 Reg, u8 Value)
{//1.启动IICIIC_Start();//2.写设备地址IIC_Send_Byte((dAddr << 1)|0);//3.waitwhile(IIC_Wait_Ack());//4.写寄存器地址IIC_Send_Byte(Reg);//5.waitIIC_Wait_Ack();//6.写valueIIC_Send_Byte(Value);//7.waitIIC_Wait_Ack();//8.stopIIC_Stop();
}

2.2 qmi8658驱动部分

void QMI8658_Init()
{u8 uChipID = 0;u16 AX=0,AY=0,AZ=0,GX=0,GY=0,GZ=0;// 1.Device Reset & check DeviceQMI8658_WriteReg(QMI8658_DEV,CTRL9,0xA2); //PowerResetdelay_ms(2000);                           // wait stableuChipID = QMI8658_ReadReg(QMI8658_DEV,0x00); // Read IDwhile(uChipID != 0x5) delay_ms(2000);        // device checkprintf("QMC5883 check Pass!:deviceID = 0x%x \r\n",uChipID);//2.Device SettingsQMI8658_WriteReg(QMI8658_DEV,CTRL1,0x40); //地址自增,小端QMI8658_WriteReg(QMI8658_DEV,CTRL2,0x33); //配置加速度计 量程+-16g,采样率ODR==1kHZQMI8658_WriteReg(QMI8658_DEV,CTRL3,0x73); //配置陀螺仪  量程±2048 dps ,采样率是940HZQMI8658_WriteReg(QMI8658_DEV,CTRL5,0x0); //不使用低通滤波器QMI8658_WriteReg(QMI8658_DEV,CTRL6,0x0); //不使用Motion on DemandQMI8658_WriteReg(QMI8658_DEV,CTRL7,0x03); // 使能加速度计和陀螺仪  delay_ms(2000);   for(;;){AX = (u16)QMI8658_ReadReg(QMI8658_DEV,AX_H);AX = AX<<8;AX = AX | (u16)QMI8658_ReadReg(QMI8658_DEV,AX_L);AY = (u16)QMI8658_ReadReg(QMI8658_DEV,AY_H);AY = AY<<8;AY = AY | (u16)QMI8658_ReadReg(QMI8658_DEV,AY_L);AZ = (u16)QMI8658_ReadReg(QMI8658_DEV,AZ_H);AZ = AZ<<8;AZ = AZ | (u16)QMI8658_ReadReg(QMI8658_DEV,AZ_L);GX = (u16)QMI8658_ReadReg(QMI8658_DEV,GX_H);GX = GX<<8;GX = GX | (u16)QMI8658_ReadReg(QMI8658_DEV,GX_L);GY = (u16)QMI8658_ReadReg(QMI8658_DEV,GY_H);GY = GY<<8;GY = GY | (u16)QMI8658_ReadReg(QMI8658_DEV,GY_L);GZ = (u16)QMI8658_ReadReg(QMI8658_DEV,GZ_H);GZ = GZ<<8;GZ = GZ | (u16)QMI8658_ReadReg(QMI8658_DEV,GZ_L);printf("QMC5883 GX=%d\r\n", GX);printf("QMC5883 GY=%d\r\n", GY);printf("QMC5883 GZ=%d\r\n", GZ);delay_ms(60000);  }
}

最后!!!注意,这里跑出来的数值是没有经过二阶低通滤波的,芯片是带这个功能的。可以配置

这篇关于QMI8658芯片I2C驱动开发指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812106

相关文章

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)