最近买了一块三轴磁场模块进行实验

名称:HMC5883L模块(三轴磁场模块)

型号:GY-271

使用芯片:HMC5883L

供电电源:3-5v

通信方式:IIC通信协议

测量范围:±1.3-8 高斯

MCU: STC89C52RC

遇到的问题与解决方法:

1) 我的实验板 P1.0, P1.1 直接连接了板载液晶1602的插口

而作为i2c协议的SDL, SCL输入, 我必须把 P1.0, P1.1 空出来,所以我用外接线连接了液晶

2) 看说明貌似 GY-271 输出是3.3V, 我先打算用上拉电阻, 而后用示波器看数据, 高电平是5V (怀疑 GY-271 上面已经有上拉电阻了 )

去掉上拉电阻一样工作

实验如上:

现在是显示水平的的角度, 我把GY-271以垂直方向为轴, 水平旋转, 显示屏显示 0-360, 看来实验成功了

有空再验证一下其他轴向

视频: http://video.sina.com.cn/v/b/108165740-2558327185.html

附 i2c 问题集:

上拉电阻。

硬件上,一般I2C都要求接上拉电阻,MCU可以内置上拉电阻除外。为什么呢?主要是因为I2C通信的ACK信号,当释放时,需要把DATA线拉高。

发送数据时序。

下降沿改变数据,上升沿发送数据。( SCL 下降后马上调整 SDL, 等SCL上升的时候, 就是其他模块来读取的时候) (SCL高电位的时候, 如何, SDL有变化,就不是数据传输而是启动停止)

SUB地址的选定。

这个SUB地址也是因芯片而多样化。如:

1、指定要编程的具体SUB REGISTER,如24C02,可以编写/读出内部的任何地址的数据;

2、内部没有指定的SUB 地址可选择,读或写时,都只能从某一固定的地址开始,例如:要读0X17的地址的数据,而该芯片固定只能从0X16开始读,则只能读出两字节。芯片如之前博文中提到的收音IC:SI47XXX

连续写。

I2C不仅提供了单个BYTE的读出/写入,也提供了连续地址的读出/写入,如SI47XXX。连续地址操作时,内部地址REGISTER会自动+1,只要连续往里送数据即可,但要注意ACK信号的回应。(每写8个数据,要检查一下ack)

ACK信号。

ACK是应答信号,出现在第九个CLK,但并不是每个BYTE都要出现。如接收一串连续的数据,当接收完成,在最后一个BYTE时,不需要回答ACK信号给芯片。

注意芯片的频率。

频率问题是因芯片而异的,有一些运行速度很快,400KHZ也正常;有一些比较慢,超过100us一个CLK。前者,对USER而言,现的问题不多,后者,却要令USER增加不少延时。这就是每个IC都有时序要求的说明文档,里面一定有各个时间值的最大或最小参考。

字节序

每个数据字节在传送时都是高位(MSB)在前。

单片机实验: 三轴磁场模块 GY-271的更多相关文章

  1. 【雕爷学编程】Arduino动手做(48)---三轴ADXL345模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...

  2. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验三:按键模块② — 点击与长点击

    实验三:按键模块② - 点击与长点击 实验二我们学过按键功能模块的基础内容,其中我们知道按键功能模块有如下操作: l 电平变化检测: l 过滤抖动: l 产生有效按键. 实验三我们也会z执行同样的事情 ...

  3. 基于STM32的三轴数字罗盘HMC5883L模块的测试

    最近买了个数字罗盘模块,调通后发现很不错,非常灵敏,测试的时候精度在1°以内.连续测量模式下,最快测量.输出速率可达75hz,模块每次测量完毕并将数据更新至寄存器后,其DRDY引脚便产生一个低电平脉冲 ...

  4. STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  5. STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  6. 【iCore2双核心板视频教程】 AD模块(iM_AD_GP和iM_AD_SYNC)介绍及数据采集实验三

    建议设定成 “超清” 模式并 “全屏” 观看. ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiao ...

  7. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二:按键模块① - 消抖

    实验二:按键模块① - 消抖 按键消抖实验可谓是经典中的经典,按键消抖实验虽曾在<建模篇>出现过,而且还惹来一堆麻烦.事实上,笔者这是在刁难各位同学,好让对方的惯性思维短路一下,但是惨遭口 ...

  8. 玩转X-CTR100 l STM32F4 l HMC5983/HMC5883L三轴磁力计传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 扩展HMC ...

  9. 「雕爷学编程」Arduino动手做(38)——joystick双轴摇杆模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

随机推荐

  1. Delphi中多标签页面的实现

    unit uMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  2. BCM wifi驱动学习

    BCMwifi驱动学习 一.wifi详解1 1.代码路径:Z:\home\stonechen\svn\TD550_X\TD550\3rdparty\wifi\BCM43362\special\bcmd ...

  3. Swift - 给表格添加移动单元格功能(拖动行)

    1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态  (2)在编辑状态下,可以看到单元格后面出现拖动按钮  (3)鼠标按住拖动按钮,可以 ...

  4. poj 1018 Communication System 枚举 VS 贪心

    Communication System Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21631   Accepted:  ...

  5. 让Delphi XE2程序支持UAC

    在win7下,开发的程序有的时候莫名其妙就不能正常工作了,其实都是因为权限不够,要想能够正常运行,就需要获得管理员权限,这就需要处理UAC.具体方法如下: 一,制作“uac.manifest”文件.新 ...

  6. 阿斯钢iojeg9uhweu9erhpu9hyw49

    http://www.huihui.cn/share/8424421 http://www.huihui.cn/share/8424375 http://www.huihui.cn/share/842 ...

  7. hdu 5138

    参考……!!!! #include <iostream> #include <cstdio> #include <cmath> #include <cstri ...

  8. form表单提交不成功提示

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  9. (step4.3.9)hdu 1584(蜘蛛牌——DFS)

    题目大意:本体是中文题,可以直接在OJ上看 /* * 1584_2.cpp * * Created on: 2013年8月22日 * Author: Administrator */ #include ...

  10. ZenCoding Syntax

    语法: 后代:> 缩写:nav>ul>li 兄弟:+ 缩写:div+p+bq 上级:^ 缩写:div+div>p>span+em^bq 缩写:div+div>p&g ...