HMC5883L手册总结与经验分析详解

    xiaoxiao2026-08-20  7

    通信方式:IIC

    工作电压:2.16~3.6V

    工作电流:100uA

    罗盘航向精度:1°~2°

    当达到预定的最大输出频率,才需要监控DRDY中断引脚

    I2C接口

    装置包含一个7-bits串行地址,并且支持标注和快速模式(100kHZ和400kHz)。主机的活动(读写操作)优先于内部活动。

    操作模式

    连续测量模式

    在选择的速率下进行连续的测量,并将所测量的更新数据输出寄存器。如果有必要数据可已多次读取(同一次测量值)。如果主机没有在下次测量完成之前读取上一次的测量值,旧数据将被新数据覆盖。连续测量模式下I2C总线可被网络内的其他装置启用。

    单词测量模式

    这个是预设的供电模式。在单测量模式数据都会被存入相应的寄存器,在完成测量和输出寄存器的更新以后,通过设置MD[n] bits ,该装置至于闲置模式,模式寄存器变更为闲置模式,单一测量模式影响测量配置(bits MS[n])。

    闲置模式

       

    在闲置模式下,装置可被I2C总线访问,但是主要能耗被禁止,且这个模式下所有寄存器保留数值。  

    寄存器

    寄存器列表:

       

    该装置使用地址指针来显示该寄存器是被读或者写。这些指针位置从主机发出到从机并获得7位地址+1位读写表示符

       

    无主机干预下地址指针自动更新:

    ①首先访问12或更高的访问指针更新至地址00

    ②当访问达到08时,指针回滚到地址03

       

    eg:

    if(地址指针 = 08)

    {

    地址指针 = 03

    }

    Else if(地址指针 >= 12 )

    {

    地址指针 = 00

    }

       

    地址指针本身无法通过I2C读取

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

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

     

    配置寄存器A

    配置寄存器B

       

    模式寄存器

    数据输出X寄存器A和B

       

    数据输出Y寄存器A和B

    数据输出Z寄存器A和B

       

       

    状态寄存器

       

       

       

    I2C通信协议

    HMC5883L使用的时一个IIC协议收定义的简化后的通信接口协议,传输速率是标准的100kpbs或者400kpbs。

    总线格式是一个 8位数据/地址传送和1位应答位。有效的数据字节格式应是区分大小写的ASCII字符或二进制字符;返回值为二进制数据,负的二进制将以补码形式传回。

    HMC5883L的默认7位从机地址为0x3C的写入,0x3D的读写操作。

    SCL与SDA线需要10K的上拉电阻。

    ①主机发送启动序列②发送从机地址③第九个时钟脉冲接收的从设备会发送ACK或NACK④主机发送数据字节以便写入操作或从机在读操作时进行时钟输出。⑤总机发送停止序列的时候终止总线传输。

       

    地址直接包含从机地址 先7位(bits7-1)和最低有效位(LSB;读操作LSB = 1;写操作LSB = 0)

       

       

    实例操作

    -需要配置寄存器:配置寄存器A、配置寄存器B、模式寄存器

    -读取数据寄存器(03~08)循环读寄存器的值(6次);开始寄存器为0x30

    -等待67ms

    -结束循环

       

    转载请注明原文地址: https://ju.6miu.com/read-1311378.html
    最新回复(0)