hmc5983驱动解析
HMC5983驱动详解
- 简述
- 一、寄存器
- 二、命令
- 1.代码
- 2.命令详解
- 三、读取详解
- 四、校准
简述
17届智能车智能视觉组需要获取航向角,为此我尝试了hmc5983这款磁力计,它可以看成hmc5883l的上位替代,相比5883l最快输出75hz频率,它可以达到220hz并且设置了温度补偿位。
一、寄存器
我们主要会用到前8个寄存器,通过配置Register A,Register B,Mode Register来设置传感器模式,通过读取下面6个寄存器来读取x,y,z三个轴上的磁分量。
二、命令
1.代码
/**传感器控制配置参数*/
// ConfigRegA temperature sensor, 开启后可以自动补偿温漂
#define Temprature_Sensor 0x80
// ConfigRegA valid sample averaging
#define SampleAveraging_1 0x00
#define SampleAveraging_2 0x20
#define SampleAveraging_4 0x40
#define SampleAveraging_8 0x60
// ConfigRegA valid data output rates
#define DataOutputRate_0_75HZ 0x00
#define DataOutputRate_1_5HZ 0x04
#define DataOutputRate_3HZ 0x08
#define DataOutputRate_7_5HZ 0x0C
#define DataOutputRate_15HZ 0x10
#define DataOutputRate_30HZ 0x14
#define DataOutputRate_75HZ 0x18
#define DataOutputRate_220HZ 0x1C
// ConfigRegA Measurement Mode
#define Normal_Measurement 0x00
#define Positive_Measurement 0x01
#define Negative_Measurement 0x10
#define Temperature_Measurement 0x11//ConfigRegB Gain
#define Ga_0_88 0x00
#define Ga_1_3 0x20
#define Ga_1_9 0x40
#define Ga_2_5 0x60
#define Ga_4_0 0x80
#define Ga_4_7 0xA0
#define Ga_5_6 0xC0
#define Ga_8_1 0xE0//ModeRegister, 太麻烦,只写出我需要的两种模式,其他的白嫖怪请自己参考英文手册写
#define ContinuousConversion 0x00
#define SingleConversion 0x01
2.命令详解
#define MAG_ADDRESS 0x1E#define ConfigRegA 0x00
#define ConfigRegB 0x01
#define ModeRegister 0x02
#define MAG_DATA_REGISTER 0x03
#define StatusReg 0x09
#define IDRegA 0x0A
#define IDRegB 0x0B
#define IDRegC 0x0C
先配置寄存器A吗,再配置寄存器B,最后配置模式寄存器;
代码如下(示例):
iic_write_reg(HMC5983_IIC, MAG_ADDRESS, ConfigRegA, Temprature_Sensor|SampleAveraging_4|DataOutputRate_220HZ|Normal_Measurement);
rt_thread_delay(1);
iic_write_reg(HMC5983_IIC, MAG_ADDRESS, ConfigRegB, Ga_2_5);
rt_thread_delay(1);
iic_write_reg(HMC5983_IIC, MAG_ADDRESS, ModeRegister, ContinuousConversion);
一般来说,普通使用的话只用配置SampleAveraging,DataOutputRate,Ga就可以了。
- Ga详解
三、读取详解
可以看到6个寄存器是连在一个的,故可以从0x03开始读6位
- 代码示例
uint8_t buf[6];iic_read_reg_bytes(HMC5983_IIC, MAG_ADDRESS, MAG_DATA_REGISTER, buf, 6);x_mag = buf[0] << 8 | buf[1];z_mag = buf[2] << 8 | buf[3];y_mag = buf[4] << 8 | buf[5];
四、校准
可以从数据手册中看出hmc5983中拥有内置偏置电流发生器,通过配置寄存器A
#define Positive_Measurement 0x01
#define Negative_Measurement 0x10
可以在内部产生磁场从而来校准;目前我还没有研究出来。至于地磁计,如果只需要获取航向角的话就只需要将磁力计原地旋转进行椭圆校准就行,如果需要做AHRS就需要椭球校准了。
hmc5983驱动解析相关推荐
- usb 转 uart cp210x 驱动解析
USB 转 uart (cp210x.c) 驱动解析 * usb_serial_driver 结构体解析 include/linux/usb/serial.h/** 描述一个usb 串口设备驱动 * ...
- 第三章 PX4-Pixhawk-SPI底层驱动解析
第三章 PX4-SPI底层驱动解析 这一章节我们会对PX4的底层驱动进行解析,我们这里主要解析的是SPI协议,因为这个协议是所有传感器的一个协议,至于IIC和串口就可以类似的读写一下,大家看完这个解析 ...
- 第三章 PX4-SPI底层驱动解析
版权声明:本文为博主原创文章,未经博主允许不得转载. 第三章 PX4-SPI底层驱动解析 这一章节我们会对PX4的底层驱动进行解析,我们这里主要解析的是SPI协议,因为这个协议是所有传感器的一个协议, ...
- Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析
Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析 上篇文章中,我们模拟了WAV API.现在进入我们正在要解析的Wave 驱动的架构.我们了解一个驱动的时候,先不去看具体跟硬 ...
- AW9523 linux 按键驱动解析
AW9523 linux 按键驱动解析 硬件介绍 AW9523是国产芯片,中文手册也是看着方便很多,我从datasheet中摘录一些编写驱动过程中重要信息贴到下面,当然,最好还是看芯片手册,项目使用A ...
- 图像sensor的特性和驱动解析视频教程-第4/11季-海思-朱有鹏-专题视频课程
图像sensor的特性和驱动解析视频教程-第4/11季-海思-122人已学习 课程介绍 本季课程以配置的2款图像sensor为案例来讲解图像sensor的关键特性和相关数据结构,I2C ...
- 【usb】linux内核USB键盘驱动解析--普通键值上报及转化
一.概况 建议阅读前置文章[usb]linux内核USB键盘驱动解析–特殊键值上报及转化 以Linux5.10内核中USB键盘驱动为例进行解析:https://mirrors.edge.kernel. ...
- linux选择usb功能,USB gadget设备驱动解析(1)——功能体验
利用Linux USB gadget设备驱动可以实现一些比较有意思的功能,举两个例子: 1.一个嵌入式产品中的某个存储设备,或是一个存储设备的某个分区,可以作为一个U盘被PC:设别,从而非常方便的完成 ...
- linux触摸屏代码解析,Linux触摸屏驱动解析
Linux下开发触摸屏驱动,最好的范例莫过于mc68328digi.c的实现.在没有看到原文之前,我把其中用到的结构解析一下. 1,struct ts_pen_info 该结构是触摸屏的核心数据结构. ...
最新文章
- 机器学习——线性回归的原理,推导过程,源码,评价
- python怎么样才算入门编程-编程零基础应当如何开始学习 Python?
- 【Android开发】Android 删除指定文件和文件夹
- 解密Redis持久化
- JPA和Hibernate级联类型的初学者指南
- 刚刚!北京高考时间和开学时间定了
- SVN的各种符号含义,svn的星号,感叹号,问号等含义
- 论文阅读《Vision-Aided RAIM: A New Method for GPS Integrity Monitoring in Approach and Landing Phase》3
- 基于Java毕业设计大学生旅游拼团网站源码+系统+mysql+lw文档+部署软件
- mysql复制一行sql语句_MySQL复制表数据操作sql语句
- android的popwindow控件,及控件设为圆角
- 2022 极术通讯-基于安谋科技 “星辰” STAR-MC1的灵动MM32F2570开发板深度评测
- C#怎么选中datagridview中的一行,并获得它的数据?
- Android安装busybox
- SSIS_创建SSIS包和数据源
- idea创建文件时生成文档注释
- 阿里云大数据组件零碎点总结(不定时更新)
- 2021年Java者未来的出路在哪里
- 100个囚犯的脱狱问题
- 桌面PC/服务器 ubuntu18.04 Linux内核编译升级与机制分析