单片机实验: 三轴磁场模块 GY-271
最近买了一块三轴磁场模块进行实验
名称: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的更多相关文章
- 【雕爷学编程】Arduino动手做(48)---三轴ADXL345模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验三:按键模块② — 点击与长点击
实验三:按键模块② - 点击与长点击 实验二我们学过按键功能模块的基础内容,其中我们知道按键功能模块有如下操作: l 电平变化检测: l 过滤抖动: l 产生有效按键. 实验三我们也会z执行同样的事情 ...
- 基于STM32的三轴数字罗盘HMC5883L模块的测试
最近买了个数字罗盘模块,调通后发现很不错,非常灵敏,测试的时候精度在1°以内.连续测量模式下,最快测量.输出速率可达75hz,模块每次测量完毕并将数据更新至寄存器后,其DRDY引脚便产生一个低电平脉冲 ...
- STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- 【iCore2双核心板视频教程】 AD模块(iM_AD_GP和iM_AD_SYNC)介绍及数据采集实验三
建议设定成 “超清” 模式并 “全屏” 观看. ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiao ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二:按键模块① - 消抖
实验二:按键模块① - 消抖 按键消抖实验可谓是经典中的经典,按键消抖实验虽曾在<建模篇>出现过,而且还惹来一堆麻烦.事实上,笔者这是在刁难各位同学,好让对方的惯性思维短路一下,但是惨遭口 ...
- 玩转X-CTR100 l STM32F4 l HMC5983/HMC5883L三轴磁力计传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 扩展HMC ...
- 「雕爷学编程」Arduino动手做(38)——joystick双轴摇杆模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
随机推荐
- 编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功)
编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功) ------by wangsh 2012.02.22 Mapnik 是一个开源的 Python/C++ 地图渲染引 ...
- (转载)QT中PRO文件写法的详细介绍,很有用,很重要!
版权声明:本文为博主原创文章,未经博主允许不得转载. 在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释从“#”开始,到 ...
- 将258.369 double值转为内存表示(科学计数法)
前言 庖丁解牛 - <<庄子>> 庖丁为文惠君解牛,手之所触, 肩之所倚, 足之所履, 膝之所踦, 砉然向然, 奏刀騞然, 莫不中音, 合于<桑林>之舞, 乃中&l ...
- shell 调用mysql 存储过程判断真假
mysql> create table TBL_STUDENT(id int,name char(10),CLASSNO int,BIRTH datetime); Query OK, 0 row ...
- MFC 关于对话框的注意点
1.对于模态对话框而言,单击确定以后对话框窗口对象即被销毁了,而对于非模态对话框来说,对话框的对象并未销毁而是隐藏起来(EndDialog函数),因此对于非模态对话框,必须重写OnOK这个虚函数,并在 ...
- nohup命令与&区别,jobs,fg,bg,Ctrl-Z、Ctrl-C、Ctrl-D
&方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/local/my ...
- C# MVC 自学笔记—2 MVC Movie简介
MVC Movie是微软官方的一个MVC入门项目,我们可以跟着这个项目来实践入门 这是官方地址 http://www.asp.net/mvc/tutorials/mvc-4/getting-start ...
- 使用apache daemon让java程序在unix系统上以服务方式运行
通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的 ...
- 一起来开发Android的天气软件(三)——使用Volley实现网络通信
距离上一篇一起来开发Android天气软件二的时间又将近半个月了,之间一直由于有事而没有更新实在抱歉,近期会加快更新的步伐.争取在2015年到来前写完这系列的博文,上一章我们已经使用LitePal框架 ...
- UE4的编程C++创建一个FPSproject(两)角色网格、动画、HUD、子弹类
立即归还,本文将总结所有这些整理UE4有关角色的网络格.动画.子弹类HUD一个简单的实现. (五)角色加入网格 Character类为我们默认创建了一个SkeletaMeshComponent组件,所 ...