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

相关文章

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD