QMC5883芯片I2C驱动开发指南

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

第一部分 硬件连接


画的很简陋,看看就可以了。
在这里插入图片描述

第二部分 软件驱动


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

2.1 I2C读写寄存器功能

u8 QMC5883_ReadReg(u8 dAddr, u8 Reg)
{
    u8 Value = 0;
    //1.启动IIC
    IIC_Start();
    //2.写设备地址
    IIC_Send_Byte((dAddr << 1)|0);
    //3.wait
    if(IIC_Wait_Ack())
    {
        IIC_Stop();
    }
    //4.寄存器地址
    IIC_Send_Byte(Reg);
    //5.wait
    if(IIC_Wait_Ack())
    {
        IIC_Stop();
    }
    //6.启动IIC
    IIC_Start();
    //7.设备地址
    IIC_Send_Byte((dAddr << 1)|1);
    //8.wait read ack
    if(IIC_Wait_Ack())
    {
        IIC_Stop();
    }
    Value = IIC_Read_Byte(0);
    //9.stop
    IIC_Stop();
    return Value;
}

void QMC5883_WriteReg(u8 dAddr, u8 Reg, u8 Value)
{
    //1.启动IIC
    IIC_Start();
    //2.写设备地址
    IIC_Send_Byte((dAddr << 1)|0);
    //3.wait
    while(IIC_Wait_Ack());
    //4.写寄存器地址
    IIC_Send_Byte(Reg);
    //5.wait
    IIC_Wait_Ack();
    //6.写value
    IIC_Send_Byte(Value);
    //7.wait
    IIC_Wait_Ack();
    //8.stop
    IIC_Stop();
}

2.2 驱动部分

void QMC5883_Init()
{
    u8 uChipID = 0;
   
    // 1.Device Reset & check Device
    //QMC5883_WriteReg(QMC5883_DEV,0x0A,0x41); //PowerReset
    QMC5883_WriteReg(QMC5883_DEV,0x0B,0x01); //PowerReset
    QMC5883_WriteReg(QMC5883_DEV,0x20,0x40); //PowerReset
    QMC5883_WriteReg(QMC5883_DEV,0x21,0x01); //PowerReset
    QMC5883_WriteReg(QMC5883_DEV,0x09,0x0d); //PowerReset
    delay_ms(5000);                           // wait stable
    while( uChipID!= 0xFF) 
    {   
        uChipID = QMC5883_ReadReg(QMC5883_DEV,0x0D); // Read ID
        delay_ms(2000);        // device check
    }
    printf("QMC5883 check Pass!:deviceID = 0x%x \r\n",uChipID);
}
void QMC5883_ReadMuti(u8 dAddr, u8 Len, u8 Reg, u8* Buff)
{
    u8 i = 0;
    for(i = 0;i<Len; i++)
    {
        *(Buff+i) = QMC5883_ReadReg(dAddr,Reg+i);
    }   
}
void QMC5883_dataGet(void)
{
    QMC5883_ReadMuti(QMC5883_DEV,6,0x0,uQMC5883_Data.buffer);// 读取数据部分是前六个寄存器0x0~0x5
    printf("%d %d %d ", \
    (s16)(uQMC5883_Data.stData.AX), (s16)(uQMC5883_Data.stData.AY), (s16)(uQMC5883_Data.stData.AZ));
    /*printf("AX=%d AY=%d AZ=%d ", \
    (s16)(uQMC5883_Data.stData.AX), (s16)(uQMC5883_Data.stData.AY), (s16)(uQMC5883_Data.stData.AZ));*/
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/525854.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【工作实践-10】uniapp打包前注意事项

1.代码是否为最新代码 当前所要打包的分支是否已包含各个分支最新代码&#xff0c;是否是最新版。 2.APP版本是否需要提升 若APP用于上架&#xff0c;每次更改APP版本需要提升。依据版本规范来提升版本号。 3.APP启动界面配置 4.APP打包模块配置是否已配置好所需功能&#x…

Node.js创建第一个web服务

如果用PHP来编写后端代码&#xff0c;需要用Apache或者Nginx的服务器,来处理客户的请求响应。对于Node.js时&#xff0c;不仅实现了应用&#xff0c;同时还实现了整个HTTP服务器. 安装 Node Snippets插件&#xff08;编程自带提示&#xff09; console.log(你好nodejs); //表…

【漏洞复现】泰博云平台 solr SSRF漏洞

0x01 产品简介 泰博云平台,就是指以电商集群的方式,通过供应链有效连接组成“商务云”生态系统,在产品、服务、营销推广等方面实现资源共享,“物”就是线下实体店网络,以众包模式,将行业制造商、分销商、零售商,和提供本土化设计、物流、安装的优质服务商,纳入统一的云…

Vue项目打包成exe文件(electron)

1.将写好的vue项目打包 1.1运行vue ui命令 输出目标文件 如果打开index.html是空白的&#xff0c;而且控制台报错获取xxx资源失败的问题&#xff0c;你需要在vue.config.js 上加一个命令&#xff0c;如果没有你需要创建一个。 2.下载electron官方示例 git clone https://gith…

华为ensp中PPP(点对点协议)中的PAP认证 原理和配置命令

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月8日14点31分 PPP协议&#xff08;Point-to-Point Protocol&#xff09;是点到点协议&#xff0c;是一种常用的串行链路层协议&#xff0c;用于在两个节点之间建立点…

2024年4月7日16:58:09答辩笔记

尚硅谷总结毕业设计编写&#xff1a;&#xff08;ppt尽量好看点&#xff0c;放图&#xff08;流畅图&#xff0c;时序图放一放&#xff09;&#xff0c;少字&#xff0c;&#xff09; 总结&#xff1a;&#xff08;这样给人体验感要好&#xff0c;语言、逻辑清晰&#xff09; 1…

【LeetCode热题100】118. 杨辉三角(动态规划)

一.题目要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二.题目难度 简单 三.输入样例 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示…

笔记 | 编译原理L1

重点关注过程式程序设计语言编译程序的构造原理和技术 1 程序设计语言 1.1 依据不同范型 过程式(Procedural programming languages–imperative)函数式(Functional programming languages–declarative)逻辑式(Logical programming languages–declarative)对象式(Object-or…

Python基础教程:网络爬虫的工作原理

网络爬虫是一种数据收集的方式&#xff0c;广泛用于搜索引擎、市场分析等领域。 爬虫从一个或若干种子页面开始&#xff0c;获得种子页面上的链接&#xff0c;并根据需求来追踪其中的一些链接&#xff0c;达到遍历所有网页的目的。在抓取网页的过程中&#xff0c;一方面提取需…

「漫画」数据工程师面试常见问题之数据倾斜

话说&#xff0c;闹钟一响&#xff0c;现实照进梦想&#xff0c;又是李大虎面试找工作的一天。 李大虎心里一直有个想法&#xff0c;如果一天睡20个小时&#xff0c;然后这20个小时全做美梦&#xff0c;醒来的4个小时用来吃喝拉撒&#xff0c;这样岂不就和那些富二代一样了&am…

【机器学习入门】集成学习之梯度提升算法

系列文章目录 第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 第5章 逻辑斯蒂回归和分类 第5章 支持向量机 第6章 人工神经网络(一) 第6章 人工神经网络(二) 卷积和池化 第6章 使用pytorch进行手写数字识别 实操练习 使用Yolo模型进…

机器视觉系统光源的分类及选择

机器视觉系统 机器视觉系统是一种基于计算机视觉技术的智能系统&#xff0c;主要用于对图像或视频进行分析、处理和识别。一个典型的机器视觉系统通常由以下几个组成部分构成&#xff1a; 光源 机器视觉光源是机器视觉系统的关键组成部分之一。机器视觉光源直接影响图像质量&am…

Qt:窗口、按钮类、行编辑器、标签类

作业&#xff1a;QQ登录界面 mywidget.h #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> #include<QMovie> #include <QLabel> #include <QPushButton> #include <QLineEdit> class MyWidget : public QWid…

jest单元测试——项目实战

jest单元测试——项目实战 一、纯函数测试二、组件测试三、接口测试四、React Hook测试&#x1f4a5; 其他的疑难杂症另&#xff1a;好用的方法 &#x1f31f; 温故而知新&#xff1a;单元测试工具——JEST 包括&#xff1a;什么是单元测试、jest的基本配置、快照测试、mock函数…

加州大学欧文分校英语基础语法专项课程02:Questions, Present Progressive and Future Tenses 学习笔记

Questions, Present Progressive and Future Tenses Course Certificate 本文是学习 Questions, Present Progressive and Future Tenses 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Questions, Present Progressive and Future TensesWeek 01: …

大语言模型(LLM)为什么会产生幻觉?

一、幻觉的概念 在大语言模型&#xff08;LLM&#xff09;的语境之下&#xff0c;“幻觉”&#xff08;hallucination&#xff09;指的是模型在没有足够证据支持的情况下&#xff0c;生成的错误或虚构的信息。这种现象在自然语言处理&#xff08;NLP&#xff09;任务中尤其突出…

2024年MathorCup妈妈杯数学建模思路C题思路解析+参考成品

1 赛题思路 (赛题出来以后第一时间在群内分享&#xff0c;点击下方群名片即可加群) 2 比赛日期和时间 报名截止时间&#xff1a;2024年4月11日&#xff08;周四&#xff09;12:00 比赛开始时间&#xff1a;2024年4月12日&#xff08;周五&#xff09;8:00 比赛结束时间&…

jdk8新特性 方法引用

简介 lambda表达式是用来简化匿名内部类的方法引用 使用来简化 lambda表达式的 方法引用的标志 两个冒号 静态方法 静态方法 class CompareByAge {public static int compare(Student o1, Student o2) {return o1.getAge() - o2.getAge();} }静态方法引用 Arrays.sort(students…

游戏商业化活动通用测试点

备注:本文为博主原创文章,未经博主允许禁止转载。如有问题,欢迎指正。 个人笔记(整理不易,有帮助点个赞) 笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔:工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客 …

谷歌(Google)技术面试——在线评估问题(三)

谷歌&#xff08;Google&#xff09;面试过程的第一步&#xff0c;你可能会收到一个在线评估链接。 评估有效期为 7 天&#xff0c;包含两个编码问题&#xff0c;需要在一小时内完成。 以下是一些供你练习的在线评估问题。 在本章结尾处&#xff0c;还提供了有关 Google 面试不…