HMC5883L地磁传感器驱动

article/2025/10/13 16:04:39

   霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器,并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动器、偏差校准、能使罗盘精度控制在 1°~2°的 12 位模数转换器.简易的 I2C 系列总线接口。HMC5883L 是采用无铅表面封装技术,带有 16 引脚,尺寸为 3.0X3.0X0.9mm。HMC5883L 的所应用领域有手机、笔记本电脑、消费类电子、汽车导航系统和个人导航系统

   HMC5883主要有接口是IIC,同时提供一个数据中断引脚,一般而言,电路设计如下


  该传感器芯片的驱动并不复杂,主要是设置几个寄存器,如下所示

//HMC5883寄存器定义
//寄存器地址定义
#define HMC_CONFIG_A_REG	0X00	//配置寄存器A
//bit0-bit1 xyz是否使用偏压,默认为0正常配置
//bit2-bit4 数据输出速率, 110为最大75HZ 100为15HZ 最小000 0.75HZ
//bit5-bit5每次采样平均数 11为8次 00为一次#define HMC_CONFIG_B_REG	0X01	//配置寄存器B
//bit7-bit5磁场增益 数据越大,增益越小 默认001#define HMC_MODE_REG		0X02	//模式设置寄存器
//bit0-bit1 模式设置 00为连续测量 01为单一测量#define HMC_XMSB_REG		0X03	//X输出结果
#define HMC_XLSB_REG		0X04#define HMC_ZMSB_REG		0X05	//Z输出结果
#define HMC_ZLSB_REG		0X06#define HMC_YMSB_REG		0X07	//Y输出结果
#define HMC_YLSB_REG		0X08#define HMC_STATUS_REG		0X09	//只读的状态
//bit1 数据更新时该位自动锁存,等待用户读取,读取到一半的时候防止数据改变
//bit0 数据已经准备好等待读取了,DRDY引脚也能用#define HMC_CHEAK_A_REG		0X0A	//三个识别寄存器,用于检测芯片完整性
#define HMC_CHEAK_B_REG		0X0B
#define HMC_CHEAK_C_REG		0X0C#define HMC_CHECKA_VALUE	0x48	//三个识别寄存器的默认值
#define HMC_CHECKB_VALUE	0x34
#define HMC_CHECKC_VALUE	0x33

建议选择最大速率,八倍采样输出,同时该传感器支持读写地址指针自动变化,但是针对随机读取的驱动而言,该特性不重要

另外,一般而言,地址为0x3c,驱动代码如下

#include "hmc5883.h"
#include "math.h"struct HMCVALUE hmcValue;
u8 dataReady = 0;//IO方向设置
#define HMC_SDA_IN()  {GPIOC->CRH&=0XFFFFFFF0;GPIOC->CRH|=8;}
#define HMC_SDA_OUT() {GPIOC->CRH&=0XFFFFFFF0;GPIOC->CRH|=3;}//IO操作函数	 
#define HMC_SCL    PCout(9) //SCL
#define HMC_SDA    PCout(8) //SDA	 
#define HMC_READ_SDA   PCin(8)  //输入SDA #define HMC_DRDY	PCin(7)/**************************HMC5883 IIC驱动函数*********************************/static void Hmc5883IOInit(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(	RCC_APB2Periph_GPIOC, ENABLE );	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);//PC7 drdy引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ;   //浮空输入GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);HMC_SCL = 1;HMC_SDA = 1;
}//发送IIC起始信号
static void ComStart(void)
{HMC_SDA_OUT();     //sda线输出HMC_SDA=1;	  	  HMC_SCL=1;DelayUs(5);HMC_SDA=0;//START:when CLK is high,DATA change form high to low DelayUs(5);HMC_SCL=0;//钳住I2C总线,准备发送或接收数据
}
//发送IIC停止信号
static void ComStop(void)
{HMC_SDA_OUT();//sda线输出HMC_SDA=0;//STOP:when CLK is high DATA change form low to highHMC_SCL=1;DelayUs(5);HMC_SDA=1;//发送I2C总线结束信号DelayUs(5);		
}
//等待ACK,为1代表无ACK 为0代表等到了ACK
static u8 ComWaitAck(void)
{u8 waitTime = 0;HMC_SDA_OUT();//sda线输出HMC_SDA = 1;DelayUs(5);HMC_SDA_IN();      //SDA设置为输入HMC_SCL=1;DelayUs(5);while(HMC_READ_SDA){waitTime++;DelayUs(1);if(waitTime > HMC_ACK_WAIT_TIME){ComStop();return 1;}}HMC_SCL = 0;return 0;}static void ComSendAck(void)
{HMC_SCL = 0;HMC_SDA_OUT();HMC_SDA = 0;DelayUs(2);HMC_SCL = 1;DelayUs(5);HMC_SCL = 0;DelayUs(5);
}static void ComSendNoAck(void)
{HMC_SCL = 0;HMC_SDA_OUT();HMC_SDA = 1;DelayUs(2);HMC_SCL = 1;DelayUs(5);HMC_SCL = 0;DelayUs(5);
}
//返回0 写入收到ACK 返回1写入未收到ACK
static u8 ComSendByte(u8 byte)
{u8 t;   HMC_SDA_OUT(); 	for(t=0;t<8;t++){              HMC_SDA=(byte&0x80)>>7;byte<<=1; 	   HMC_SCL=1;DelayUs(5); HMC_SCL=0;	DelayUs(5);}	 return ComWaitAck();
}static void ComReadByte(u8* byte)
{u8 i,receive=0;HMC_SDA_IN();//SDA设置为输入for(i=0;i<8;i++ ){receive <<= 1;HMC_SCL=1; DelayUs(5);if(HMC_READ_SDA)receive++;HMC_SCL=0; DelayUs(5); }					  *byte = receive;
}/**************************HMC5883 IIC驱动函数*********************************///向HMC写入一个字节数据,失败返回1 成功返回0
u8 Hmc5883WriteReg(u8 regValue,u8 setValue)
{u8 res;ComStart();                 	//起始信号res = ComSendByte(HMC_ADDR);    //发送设备地址+写信号if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endifreturn res;}res = ComSendByte(regValue);    //内部寄存器地址if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endifreturn res;}res = ComSendByte(setValue);    //内部寄存器数据if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endifreturn res;}ComStop();                   	//发送停止信号return res;
}//**************************************
//从I2C设备读取一个字节数据
//**************************************
u8 Hmc5883ReadReg(u8 regAddr,u8* readValue)
{u8 res;ComStart();                 		//起始信号res = ComSendByte(HMC_ADDR);    	//发送设备地址+写信号if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endifreturn res;}res = ComSendByte(regAddr);     	//发送存储单元地址,从0开始	if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endifreturn res;}ComStart();                 		//起始信号res = ComSendByte(HMC_ADDR+1);  	//发送设备地址+读信号if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endifreturn res;}ComReadByte(readValue);     		//读出寄存器数据ComSendNoAck();               		//发送非应答信号ComStop();                  		//停止信号return res;
}static void HmcDefaultConfig(void)
{Hmc5883WriteReg(HMC_CONFIG_A_REG,HMC_DEFAULT_CONFIGA_VALUE);Hmc5883WriteReg(HMC_CONFIG_B_REG,HMC_DEFAULT_CONFIGB_VALUE);Hmc5883WriteReg(HMC_MODE_REG,HMC_DEFAULT_MODE_VALUE);
}//配置HMC drdy引脚中断
void HmcDrdyPinIntInit(void)
{EXTI_InitTypeDef EXTI_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;//GPIOC.7 中断线以及中断初始化配置   下降沿触发GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource7);EXTI_InitStructure.EXTI_Line=EXTI_Line7;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;	EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;	//下降沿中断EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);	 	//根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;			//使能所在的外部中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = HMC_DRDY_PreemptionPriority;	//抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = HMC_DRDY_SubPriority;					//子优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;								//使能外部中断通道NVIC_Init(&NVIC_InitStructure);
}//对应的外部中断处理函数
void EXTI9_5_IRQHandler()
{if(EXTI_GetFlagStatus(EXTI_Line7) == SET){EXTI_ClearFlag(EXTI_Line7);dataReady = 1;}
}
//失败返回1,初始化通过之后基本通讯就没有问题了就可以不再判定通讯结果了
u8 HmcInit(void)
{u8 hmcCheckValue = 0x00;u8 res = 0;Hmc5883IOInit();	//接口初始化while(HMC_DRDY == 1);//等待数据引脚正常HmcDrdyPinIntInit();//配置中断DelayMs(100);//验证A识别res = Hmc5883ReadReg(HMC_CHEAK_A_REG,&hmcCheckValue);if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endif}if(hmcCheckValue != HMC_CHECKA_VALUE)	//自检通过{return 1;}//验证B识别res = Hmc5883ReadReg(HMC_CHEAK_B_REG,&hmcCheckValue);if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endif}if(hmcCheckValue != HMC_CHECKB_VALUE)	//自检通过{return 1;}//验证C识别res = Hmc5883ReadReg(HMC_CHEAK_C_REG,&hmcCheckValue);if(res){#ifdef HMC_DEBUGprintf("file=%s,func=%s,line=%d\r\n",__FILE__,__FUNCTION__,__LINE__);#endif}if(hmcCheckValue != HMC_CHECKC_VALUE)	//自检通过{return 1;}HmcDefaultConfig();//全部验证通过return 0;
}void Hmc5883Reflush(void)
{u16 xValue = 0x00,yValue = 0x00,zValue = 0x00;u8 temp;Hmc5883ReadReg(HMC_XMSB_REG,&temp);xValue |= temp;xValue <<=8;Hmc5883ReadReg(HMC_XLSB_REG,&temp);xValue |=  temp;Hmc5883ReadReg(HMC_ZMSB_REG,&temp);zValue |=  temp;zValue <<=8;Hmc5883ReadReg(HMC_ZLSB_REG,&temp);zValue |=  temp;Hmc5883ReadReg(HMC_YMSB_REG,&temp);yValue |=  temp;yValue <<=8;Hmc5883ReadReg(HMC_YLSB_REG,&temp);yValue |=  temp;hmcValue.hmcXvalue = (s16)xValue;hmcValue.hmcYvalue = (s16)yValue;hmcValue.hmcZvalue = (s16)zValue;hmcValue.hmcAxis = atan2((double)hmcValue.hmcYvalue,(double)hmcValue.hmcXvalue) * (180 / 3.14159265) + 180; // angle in degrees#ifdef HMC_DEBUGprintf("x = %d \t y = %d \t z = %d \t axis = %f\r\n",xValue,yValue,zValue,hmcValue.hmcAxis);#endif
}

头文件定义如下(中断有优先级请自行定义)

#ifndef __HMC5883_H_
#define __HMC5883_H_#include "common.h"
#include "stm32f10x.h"
#include "delay.h"
#include "ioremap.h"
#include "uart.h"#define HMC_DEBUG	1	//是否输出调试信息//没有主机改变地址的话地址是可以自动更新的,不过该驱动没有用这个模式//HMC5883寄存器定义
//寄存器地址定义
#define HMC_CONFIG_A_REG	0X00	//配置寄存器A
//bit0-bit1 xyz是否使用偏压,默认为0正常配置
//bit2-bit4 数据输出速率, 110为最大75HZ 100为15HZ 最小000 0.75HZ
//bit5-bit5每次采样平均数 11为8次 00为一次#define HMC_CONFIG_B_REG	0X01	//配置寄存器B
//bit7-bit5磁场增益 数据越大,增益越小 默认001#define HMC_MODE_REG		0X02	//模式设置寄存器
//bit0-bit1 模式设置 00为连续测量 01为单一测量#define HMC_XMSB_REG		0X03	//X输出结果
#define HMC_XLSB_REG		0X04#define HMC_ZMSB_REG		0X05	//Z输出结果
#define HMC_ZLSB_REG		0X06#define HMC_YMSB_REG		0X07	//Y输出结果
#define HMC_YLSB_REG		0X08#define HMC_STATUS_REG		0X09	//只读的状态
//bit1 数据更新时该位自动锁存,等待用户读取,读取到一半的时候防止数据改变
//bit0 数据已经准备好等待读取了,DRDY引脚也能用#define HMC_CHEAK_A_REG		0X0A	//三个识别寄存器,用于检测芯片完整性
#define HMC_CHEAK_B_REG		0X0B
#define HMC_CHEAK_C_REG		0X0C#define HMC_CHECKA_VALUE	0x48	//三个识别寄存器的默认值
#define HMC_CHECKB_VALUE	0x34
#define HMC_CHECKC_VALUE	0x33//HMC5883地址定义
#define HMC_ADDR          0X3C          //写地址,读地址+1//HMC5883 初始化宏定义
#define HMC_DEFAULT_CONFIGA_VALUE		0x78	 //75hz 8倍采样 正常配置
#define HMC_DEFAULT_CONFIGB_VALUE		0x00	 //+-0.88GA增益
#define HMC_DEFAULT_MODE_VALUE			0x00     //连续测量模式#define HMC_ACK_WAIT_TIME	200		//iic通讯时的ack等待时间//HMC5883驱动结构体定义
typedef struct HMCVALUE 
{s16 hmcXvalue;s16 hmcYvalue;s16 hmcZvalue;double hmcAxis;
}HMCVALUE;u8 HmcInit(void);u8 Hmc5883WriteReg(u8 regValue,u8 setValue);u8 Hmc5883ReadReg(u8 regAddr,u8* readValue);void Hmc5883Reflush(void);extern struct HMCVALUE hmcValue;
extern u8 dataReady;#endif

引脚连接电路如下



http://chatgpt.dhexx.cn/article/D1OfbpPg.shtml

相关文章

Arduino Uno + HMC5883L电子罗盘 实验

实现 HMC5883L 电子罗盘 简单的数据读取实验 实验效果 本实验&#xff0c;简单显示从HMC5883L 读取到的数据 BOM表 Arduino Uno * 1 HMC5883L&#xff08;gy-273&#xff09; * 1 跳线若干 接线图 Arduino Uno <----> HMC5883L 5v …

【模块学习】关于磁力计HMC5883L型号探索

关于磁力计HMC5883L型号探索 一&#xff0e;序言 在众多磁力计中&#xff0c;HMC5883L因为其廉价实用而受到大多数嵌入式开发小白的追捧。然而某宝上不仅仅有HMC5883L这一款&#xff0c;还有QMC5883和HMC5983&#xff0c;常有商家搞不清芯片就出售&#xff0c;导致提供的数据手…

HMC5883Lnbsp;磁力计校准

原文地址&#xff1a;HMC5883L 磁力计校准 作者&#xff1a;WalkAnt 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blog.sina.com.cn/s/blog_8240cbef0101i7gn.html 如果磁力计在含有…

【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

目录 硬知识简介操作模式HMC5883L连续测量模式单次测量模式闲置模式 QMC5883L连续测量模式待命模式 主要差异寄存器寄存器列表HMC5883LQMC5883L 配置寄存器HMC5883L配置寄存器 A配置寄存器 B模式寄存器 QMC5883L控制寄存器1控制寄存器2SET/RESET Period Register 数据输出寄存器…

ESP32设备驱动-HMC5883L磁场传感器驱动

HMC5883L磁场传感器驱动 1、HMC5883L介绍 霍尼韦尔 HMC5883L 是一款表面贴装、多芯片模块,专为低场磁场传感而设计,具有数字接口,适用于低成本罗盘和磁力计等应用。 HMC5883L 包括我们先进的高分辨率 HMC118X 系列磁阻传感器和一个 ASIC,该 ASIC 包含放大、自动消磁带驱动…

STM32读取HMC5883L的偏航角数据

HMC5883L是一种IIC通信的电子罗盘芯片&#xff0c;输出与北的角度偏差&#xff0c;数值是0-360度&#xff0c;靠西方向增长&#xff0c;可以理解为逆时针为正。配合GPS模块简直就是四轴飞行器的铁杆标配。 5883的初始化 HMC5883L也是一个IIC器件&#xff0c;具体的操作方式和…

HMC5883L 磁力计校准

原文地址&#xff1a; http://blog.sina.com.cn/s/blog_402c071e0102v8ie.html 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blog.sina.com.cn/s/blog_8240cbef0101i7gn.html 如果磁…

使用Arduino和HMC5883L磁力计的数字罗盘

原文&#xff1a;https://circuitdigest.com/microcontroller-projects/digital-compass-with-arduino-and-hmc5883l-magnetometer 使用Arduino和HMC5883L磁力计的数字罗盘 ARDUINO的 经过**阿斯温斯拉吉(Aswinth Raj)** 2018年11月6日 人脑由复杂的结构层构成&#xff0c…

地磁计HMC5883L

信方式&#xff1a;IIC 工作电压&#xff1a;2.16~3.6V 工作电流&#xff1a;100uA 罗盘航向精度&#xff1a;1~2 当达到预定的最大输出频率&#xff0c;才需要监控DRDY中断引脚 I2C接口 装置包含一个7-bits串行地址&#xff0c;并且支持标注和快速模式&#xff08;100kHZ和400…

3轴数字罗盘IC HMC5883L介绍

3轴数字罗盘IC HMC5883L简介 霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块&#xff0c;并带有数字接口的弱磁传感器芯片&#xff0c;应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率HMC118X 系列磁阻传感器&#xff0c;并附带霍尼韦尔专利的集成电路包括放大…

HMC5883L

霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块&#xff0c;并带有数字接口的弱磁传感器芯片&#xff0c;应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器&#xff0c;并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动器、偏差校…

STM32模拟I2C协议获取HMC5883L电子罗盘磁角度数据 (HAL)

STM32模拟I2C协议获取HMC5883L电子罗盘磁角度数据(HAL) HMC5883L 传感器采用霍尼韦尔各向异性磁阻(AMR)技术&#xff0c;应用于罗盘和三轴磁场角度检测领域&#xff0c;常用于水平物体转动的角度识别。HMC5883L 采用I2C总线接口&#xff0c;2.16~3.6V供电范围&#xff0c;带有…

[11]ESP32+三轴磁罗盘HMC5883L移植与调试

文章目录 一、开发笔记二、初始化与工作流程1. 设置测量模式2. 设置采样率&#xff08;默认15Hz&#xff09;3. 设置测量范围4. 校准5. 开始测量6. 自测试操作&#xff08;可选&#xff09; 三、寄存器表1. 00-配置寄存器A2. 01-配置寄存器B3. 02-模式寄存器4. 09-状态寄存器5.…

STM32 HAL I2C读取HMC5883L磁偏角的实践

STM32 HAL I2C读取HMC5883L磁偏角的实践 源由成果代码头文件 G85HAL.h子文件 G85HAL.C主程序调用配置I2C引脚参考链接 源由 用传统的方式编写I2C总线数据读取&#xff0c;程序代码细碎&#xff0c;不好维护&#xff0c;移植性不好。CUBE MX配置方便灵活&#xff0c;程序架构好…

(二十六)树莓派3B+ 获取HMC5883L的磁场数据

模块介绍 霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块&#xff0c;并带有数字接口的弱磁传感器芯片&#xff0c;应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器&#xff0c;并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动…

HMC5883L校准

HMC5883L 磁力计校准 (2015-02-14 11:48:21) 转载▼ 标签&#xff1a; hmc5883 磁力计 校准 分类&#xff1a; 电子技术 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blo…

STC 51单片机53——电子指南针HMC5883l

#include <REG51.H> #include <math.h> //Keil library #include <stdio.h> //Keil library #include <INTRINS.H> #define uchar unsigned char #define uint unsigned int //使用的端口&#xff0c;请按照以下接线 sbit …

HMC5883l磁力计数据读取

1.数据手册地址 2.芯片介绍 设备的7位地址为0x1e&#xff0c;读地址为0x3d&#xff0c;写地址为0x3c。如图 2.主要需要配置的寄存器有3个。分别是配置寄存器A&#xff08;0x00&#xff09;&#xff0c;配置寄存器B&#xff08;0x01&#xff09;和模式寄存器&#xff08;0x03&…

ESP8266-Arduino编程实例-HMC5883L磁场传感器

HMC5883L磁场传感器 1、HMC5883L介绍 霍尼韦尔 HMC5883L 是一款表面贴装、多芯片模块,专为低场磁场传感而设计,具有数字接口,适用于低成本罗盘和磁力计等应用。 HMC5883L 包括我们先进的高分辨率 HMC118X 系列磁阻传感器和一个 ASIC,该 ASIC 包含放大、自动消磁带驱动器、…

HMC5883L电子罗盘原理及应用,全网最详细~

寄存器配置部分 HMC5883L模块具有两个配置寄存器&#xff0c;配置寄存器A用来配置该装置设置的数据输出速率和测量配置&#xff1b;配置寄存器 B 设置装置的增益。 模式寄存器则是用来设定装置的操作模式&#xff0c;有连续测量模式&#xff0c;单一测量模式和闲置模式等。具…