个人博客:http://brainware360.cn/
QMC5883L源于Honeywell的HMC5883L,是一款表面贴装的集成了信号处理电路的三轴磁性传感器,应用场景主要包括罗盘、导航、无人机、机器人和手持设备等一些高精度的场合。
外形如下图所示:
Figure 1 QMC5883L外观
以下是QMC5883L的内部原理图:
Figure 2 QMC5883L内部原理图
模块定义:
AMR Bridge:三轴磁性传感器
MUX:多路复用通道
PGA:可编程控制的传感器信号增益放大器
Signal Conditioning:进行磁场信号校正及补偿的数字模块
ADC:16位的模数转换器
I2C:总线形式
NVM:用于校正的非易失性存储器
SET/RST Driver:用于初始化磁性传感器的内部驱动
Reference:用于内部偏移的电压/电流基准
Clock Gen.:内部振荡器,用于内部操作
POR:上电复位
Temperature Sensor:用于内部精度/偏移的温度传感器,也可以用于测量温度并输出
QMC5883L有两种工作模式:连续测量模式和待命模式。
连续测量模式:
此模式下,磁性传感器连续进行测量并把测量数据置于数据输出寄存器中。测量数据的偏移和温度的影响将会自动得到补偿。
Ø 正常情况下的读顺序:
1、检查DRDY引脚或轮询状态寄存器(06H)中DRDY 位的状态
2、读取测量数据,数据寄存器被读取的同时,DRDY和DOR被置0
3、数据寄存器一旦被读取,数据保护将启动。直到最后一个数据寄存器(05H)被读取,数据保护才会被解除。其流程图如下:
Figure 3 正常情况下的读顺序
Ø 测量时读取
测量过程中读取的将是之前测量过并保存过的数据,并且这一次测量完成后DRDY将不会被置“1”,即这一次测量的数据丢失掉了。
Figure 4 测量时读取
Ø 数据未读取
如果第N个数据被跳过,当前的数据将会被接下来的数据覆盖掉,此种情形下,DRDY保持高电平直到数据被读取,DOR被置“1”,表示有一串数据丢失,同样,下一次读取操作后DOR将被置“0”。
Figure 5 数据未读取
Ø 数据锁定直至下次测量结束
只要任意一个数据寄存器被读取,所有测量数据将处于被锁定状态。如果下一次测量结束后,最后一个数据寄存器(05H)仍未被读取,数据寄存器将会拒绝新数据更新当前数据的操作,注意看下图,新数据将会被丢失。此类情形下,DOR将会被置“1”,直至下下次数据被读取。
Figure 6 数据锁定直至下次测量结束
待命模式:
QMC5883L上电后默认为待命模式。此状态下,寄存器值将会通过一个超低功耗的LDO保持,对任意寄存器的读写操作都将会唤醒I2C总线接口。内部时钟被停止,同时也不会进行磁场测量。
以下是QMC5883L的寄存器列表:
Figure 7 寄存器列表
00H~05H是数据寄存器,分别存放的是三轴传感器的X、Y和Z轴的值,每两个寄存器构成一个轴的高低字节,表示范围:-32768~32768。
06H是状态寄存器,当传感器数据已测量完毕并准备好DRDY位被置“1”,数据寄存器一旦被读取,DRDY位将被置“0”。OVL是溢出位,当有任意一个轴的测量值超过范围,OVL将被置“1”,当下一次测量不超测量范围时,OVL将会被置“0”。当处于连续模式下测量数据被跳过时DOR被置“1”,而当数据寄存器被读写后置“0”。
07H~08H存放的是QMC5883L内置的温度传感器的输出数据。这里需要注意的是温度传感器的增益出厂前校正过,但偏移没有得到补偿,所以,温度传感器测得的相对值是准确的。温度系数100 LSB/℃。
09H~0AH是QMC5883L的控制寄存器。09H设置工作模式(MODE)、数据输出更新频率(ODR)、传感器测量范围(RNG)以及过采样率(OSR)。0AH设置中断使能(INT_ENB)、点翻转使能(POL_PNT)以及软复位(SOFT_RST)。09H寄存器的设置如下图所示:
Figure 8 09H寄存器设置
INT_ENB被置“0”时,中断引脚(即DRDY)将被使能,置“1”时中断被禁止。
ROL_PNT被置“0”时,I2C总线接口将不会自动在00H~06H间翻转,置“1”时自动翻转。
SOFT_RST被置“1”时对QMC5883L进行软复位,软复位可以发生于任何模式下的任何时段,软复位发生后所有寄存器将会被置默认值。
0BH控制QMC5883L的设置/复位时间,推荐值是设定为0x01。
0DH是器件标识寄存器,其值为0xFF。