磁力计基础HMC5833LHMC5983.docx

上传人:b****1 文档编号:23291118 上传时间:2023-05-16 格式:DOCX 页数:14 大小:906.48KB
下载 相关 举报
磁力计基础HMC5833LHMC5983.docx_第1页
第1页 / 共14页
磁力计基础HMC5833LHMC5983.docx_第2页
第2页 / 共14页
磁力计基础HMC5833LHMC5983.docx_第3页
第3页 / 共14页
磁力计基础HMC5833LHMC5983.docx_第4页
第4页 / 共14页
磁力计基础HMC5833LHMC5983.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

磁力计基础HMC5833LHMC5983.docx

《磁力计基础HMC5833LHMC5983.docx》由会员分享,可在线阅读,更多相关《磁力计基础HMC5833LHMC5983.docx(14页珍藏版)》请在冰豆网上搜索。

磁力计基础HMC5833LHMC5983.docx

磁力计基础HMC5833LHMC5983

三轴磁场传感器模块HMC5983

高精度

带温度补偿

IIC/SPI通信

兼容HMC5883L

最大220Hz输出速率

补偿数据将会被自动放置到数据输出寄存器中,如果想要补偿功能工作,那么必须设置使温度传感器工作(设置CRA7=1)

Setthisbittoenabletemperaturesensor.Temperaturesensorwillbemeasuredateachmagneticmeasurement.

EnableTemperaturesensorforautomaticcompensationofSensitivityovertemperature.

注意这里的MA1TOMA200=1是默认值

配置寄存器B:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Belowisanexampleofa(power-on)initializationprocessfor“continuous-measurementmode”viaI2Cinterface:

1.WriteCRA(00)–send0x3C0x000x70(8-average,15Hzdefault,normalmeasurement)

2.WriteCRB(01)–send0x3C0x010xA0(Gain=5,oranyotherdesiredgain)

3.WriteMode(02)–send0x3C0x020x00(Continuous-measurementmode)

4.Wait6msormonitorstatusregisterorDRDYhardwareinterruptpin

5.Loop

Send0x3D0x06(Readall6bytes.Ifgainischangedthenthisdatasetisusingpreviousgain)

Convertthree16-bit2’scomplimenthexvaluestodecimalvaluesandassigntoX,Z,Y,respectively.

Send0x3C0x03(pointtofirstdataregister03)

Waitabout67ms(if15Hzrate)ormonitorstatusregisterorDRDYhardwareinterruptpin

End_loop

Belowisanexampleofa(power-on)initializationprocessfor“single-measurementmode”viaI2Cinterface:

1.WriteCRA(00)–send0x3C0x000x70(8-average,15Hzdefaultoranyotherrate,normalmeasurement)

2.WriteCRB(01)–send0x3C0x010xA0(Gain=5,oranyotherdesiredgain)

3.Foreachmeasurementquery:

WriteMode(02)–send0x3C0x020x01(Single-measurementmode)

Wait6msormonitorstatusregisterorDRDYhardwareinterruptpin

Send0x3D0x06(Readall6bytes.Ifgainischangedthenthisdatasetisusingpreviousgain)

Convertthree16-bit2’scomplimenthexvaluestodecimalvaluesandassigntoX,Z,Y,respectively.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

HMC5583L

技术规格

启动时间I2C控制准备时间200µs

输出速率:

持续测量模式75Hz单一测量模式160Hz

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

芯片引脚;

自测

为了检测HMC5883L是否正常运行,传感器内部可产生标准磁场而进行的自测试,再去测量此标准磁场强度并输出。

在设置A寄存器上相应位MS的值,就可启动自测功能.

IIC

磁力计包含一个7-bit串行地址,并支持I2C协议。

这一装置可以支持标准和快速模式,分

别为100kHz和400kHz,但不支持高速模式(Hs)。

还需要外接电阻才能支持这些标准和快速模式。

寄存器的读取和写入优先于内部活动(例如:

测量)这一优先次序的安排是为了不让主机等待

 

寄存器列表

寄存器访问

本章节介绍读取和写入此装置的过程。

该装置使用地址指针来显示该寄存器地点是被读取或写入。

这些指针位置从主机发出到从机并成功获得的7位地址加1位读/写标识符。

为了尽量减少主机和装置之间的沟通,无主机干预下地址指针自动更新。

这个地址指针自动更新有两个附加的功能。

首先访问12或更高位的访问指针更新至地址00,其次是访问达到08,指针回滚到地址03。

从逻辑上说,

地址指针操作功能如下所示。

如果(地址指针=08),

则地址指针=03

否则,

如果(地址指针>=12),

则地址指针=0

其他(地址指针)=(地址指针)+1

地址指针本身值无法通过I2C总线读取。

任何企图读取无效的地址位置将返回0,而任何无效的地址位置的写入或在一个有效的地址位置中一个未定义的位均被该装置忽略。

要让地址指针移动到一个随机寄存器地址,首先对该寄存器地址发出“写”的指令,之后再跟一个无数据位。

例如,要让地址指针指向寄存器10,发出的指令为0×3C0×0A。

各个寄存器详见HMC5833L中文规格书。

配置寄存器A:

(括号中的数目显示的是位的默认值)

#defineCONFIG_REG_A0x00

常见配置:

CONFIG_REG_A,0x70

CRA7CRA6CRA5CRA4CRA3CRA2CRA1CRA0

(1)MA1

(1)MA0

(1)DO2

(1)DO1(0)DO0(0)MS1(0)MS0(0)

01110000

CRA7CRA7这个位必须清除以正确运行。

CRA6至CRA5MA1至MA0在每次测量输出中选择采样平均数(1-8)00=1;01=2;10=4;11=8(缺省)

常见配置:

11(默认采样平均数8)

CRA4至CRA2DO2至DO0数据输出速率位。

这些位设置数据写入所有三个数据输出寄器的速度。

CRA1至CRA0MS1至MS0测量配置位。

这些位定义装置的测量流程,特别是是否纳入适用的偏置到测量中去。

常见配置:

100(数据输出速率:

15HZ)

常见配置:

00(正常测量配置)

配置寄存器B

#defineCONFIG_REG_B0x01

常见配置:

CONFIG_REG_B,0xA0

设置装置的增益。

(括号中的数目显示的是位的默认值)

CRB7CRB6CRB5CRB4CRB3CRB2CRB1CRB0

GN2(0)GN1(0)GN0

(1)(0)(0)(0)(0)(0)

10100000

GN2GN1GN0推荐的传感器磁场范围增益(Counts/高斯)输出范围

001±1.3Ga1090(缺省)0xF800–0x07FF(-2048–2047)

101±4.7Ga3900xF800–0x07FF(-2048–2047)

模式寄存器

#defineMOD_REG0x02

常见配置:

MOD_REG,0x00

括号中的数字显示的是位的默认值。

MR7MR6MR5MR4MR3MR2MR1MR0

(1)(0)(0)(0)(0)(0)MD1(0)MD0

(1)

Continuous-MeasurementMode.Incontinuous-measurementmode,thedevicecontinuouslyperformsmeasurementsandplacestheresultinthedataregister.RDYgoeshighwhennewdataisplacedinallthreeregisters.Afterapower-onorawritetothemodeorconfigurationregister,thefirstmeasurementsetisavailablefromallthreedataoutputregistersafteraperiodof2/fDOandsubsequentmeasurementsareavailableatafrequencyoffDO,wherefDOisthefrequencyofdataoutput.

数据输出X寄存器A和BYZ同理

#defineDATA_X_MSB0x03

#defineDATA_X_LSB0x04

#defineDATA_Z_MSB0x05

#defineDATA_Z_LSB0x06

#defineDATA_Y_MSB0x07

#defineDATA_Y_LSB0x08

数据输出X寄存器是两个8位寄存器,数据输出寄存器A和B。

这些寄存器储存从通道X所测量结果。

数据输出X寄存器A储存一个来自测量结果中的MSB(高位数据),数据输出X寄存器B储存一个来自测量结果中的LSB(低位数据)。

存储在这两个寄存器的值是一个16位值以二进制的补码形式存在,其范围是0xF800到0x07FF。

括号中的数目显示该位的默认值。

DXRA7DXRA6DXRA5DXRA4DXRA3DXRA2DXRA1DXRA0

(0)(0)(0)(0)(0)(0)(0)(0)

DXRB7DXRB6DXRB5DXRB4DXRB3DXRB2DXRB1DXRB0

(0)(0)(0)(0)(0)(0)(0)(0)

数据输出寄存器操作

当一个或一个以上的输出寄存器在被读取时,如果所有六种数据输出寄存器未被读取完,那么新的数据不能被更新到相应的数据输出寄存器。

这一要求也影响DRDY和RDY,在新的数据未被更新到所有输出寄存器之前是不能被清除的。

状态寄存器

STATE_REG0x09

状态寄存器是一个8位只读寄存器。

该寄存器是表明装置的状态,

SR7SR6SR5SR4SR3SR2SR1SR0

(0)(0)(0)(0)(0)(0)LOCK(0)RDY(0)

SR7至SR20这些位预留

SR1LOCK数据输出寄存器锁存。

当六个数据输出寄存器上的一些但不是全部数据被读取时,该位置位。

当此位置位时,六个数据输出寄存器被锁定且任何新的数据将不会被更新至这些寄存器中,除非符合以下三个条件之一:

一,所有6个寄存器已被读取或模式改变,

二,模式发生变化,

三,测量配置发生变化。

SR0RDY准备就绪位。

当数据都写入了6个数据寄存器,该位置位。

在一个或几个数据写入输出寄存器以后且在装置开始向数据输出寄存器写入数据时该位被清除。

当RDY位已清除,RDY应保持清除状态至少250微秒。

DRDY引脚可被用来作为一种替代的状态寄存器的监测装置为测量数据。

识别寄存器ABC

IDENTIFY_REG_A0x0A

IDENTIFY_REG_B0x0B

IDENTIFY_REG_C0x0C

识别寄存器A是用来识别装置。

括号中的数目显示的默认值。

这是一个只读寄存器。

IRA7IRA6IRA5IRA4IRA3IRA2IRA1IRA0

01001000

I2C通信协议

数据传输速率是标准模式100kbps或400kbps速率,如I2C总线规格中所规定。

总线位格式是

一个8位数据/地址传送和1位应答位。

默认(出厂)HMC5883LL7位从机地址为0x3C的写

入操作,或0x3D的读出操作。

所有数据传输均由产生时钟信号的主机发起,数据传输是8位

进行。

所有装置都由I2C唯一的7位地址标注。

在每8位传输之后,主机装置产生一个第9

个时钟脉冲,并释放SDA的线。

接收装置(指向的从机)将SDA线拉至低位确认(ACK)传输

成功或使SDA线处于高位表示否定确认(NACK)

 

Allbustransactionsbeginwiththemasterdeviceissuingthestartsequencefollowedbytheslaveaddressbyte.Theaddressbytecontainstheslaveaddress;theupper7bits(bits7-1),andtheLeastSignificantbit(LSb).TheLSboftheaddressbytedesignatesiftheoperationisaread(LSb=1)orawrite(LSb=0).Atthe9thclockpulse,thereceivingslavedevicewillissuetheACK(orNACK).Followingthesebusevents,themasterwillsenddatabytesforawriteoperation,ortheslavewillclockoutdatawithareadoperation.Allbustransactionsareterminatedwiththemasterissuingastopsequence.

所有总线传送从主机发出启动序列开始,然后发出从机地址字节。

地址字节包含从机地址;先7

位(bits7-1)和最低有效位(LSB)。

如果指定的运作是一个读出(LSb=1)或写入(LSb=0),地址的LSb

字节会标志出来。

在第9个时钟脉冲,接收的从机装置会发出ACK(或NACK)。

这些总线事件以

后,主机将发送数据字节以便写入操作,或从机在读出操作时进行时钟输出。

所有总线的传送在

主机发出停止序列时终止。

I2C总线控制或可用任何硬件逻辑也可在软件中实现。

典型的硬件设

计将释放SDA和SCL适当地允许从机操作。

自测试操作

为确定HMC5883L是否能正常运行,其配备了自测功能模块以激励传感器偏移带产生一个待的

标称磁场强度(偏差磁场)。

为执行该自测,配置寄存器A的最低位(MS1和MS0)从00更改为

01。

然后,通过在模式寄存器中设置进入单一测量模式(0x01),在每个磁矢量其实有两次测量数

据。

第一次为置位脉冲后的外部磁场的测量数据。

第二次是由X、Y、Z三轴设置为正偏置模式,

传感器内部偏置带产生的正偏置电流(大约∼10mA),而创建一个1.1高斯的自测磁场,再加上

外部磁场的测量数据。

第二次测量值减去

比例因数校准

内置自测试程序可以用来定期地补偿由于温度变化而带来的比例误差。

通过将自测试的数据输

出与在已知的温度下得到的数据进行比较,可以找到一个补偿因数。

例如,如果室温下自测试数

据输出是1130,而在当前温度下数据输出是1150,那么(1130/1150)的比例因子应该应用于

所有当前的磁场读数中。

使用这种方式无须用到温度传感器。

外部电容器

两个外部电容器都应为陶瓷型结构,具有低ESR特性。

对于ESR值无具体要求但最好选择低于

200毫欧姆。

储能电容器C1电容的标称值为4.7μF,置位/复位电容器C2的电容标称值为0.22

μF。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1