关键词不能为空

当前您在: 主页 > 英语 >

最详细的MPU6050寄存器说明手册-中文

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 18:36
tags:

-

2021年2月1日发(作者:水之奥)


1.



//


技术文档未公布的寄存器



主要用于官方


DMP


操作


2.



#define MPU6050_RA_XG_OFFS_TC 0x00


//[bit7] PWR_MODE, [6:1] XG_OFFS_TC, [bit 0]


OTP_BNK_VLD



3.



#define MPU6050_RA_YG_OFFS_TC 0x01


//[7] PWR_MODE, [6:1] YG_OFFS_TC, [0] OTP_BNK_VLD



4.



//bit7


的定义


,

当设置为


1,


辅助


I2C


总线高电平是


VDD


。当设置为


0,


辅助


I2C


总线高电平是


VLOGIC



5.




6.



#define MPU6050_RA_ZG_OFFS_TC 0x02


//[7] PWR_MODE, [6:1] ZG_OFFS_TC, [0] OTP_BNK_VLD



7.



#define MPU6050_RA_X_FINE_GAIN 0x03


//[7:0] X_FINE_GAIN



8.



#define MPU6050_RA_Y_FINE_GAIN 0x04


//[7:0] Y_FINE_GAIN



9.



#define MPU6050_RA_Z_FINE_GAIN 0x05


//[7:0] Z_FINE_GAIN



10.





11.



#


define MPU6050_RA_XA_OFFS_H 0x06


//[15:0] XA_OFFS


两个寄存器合在一起



12.



#


define MPU6050_RA_XA_OFFS_L_TC 0x07



13.





14.



#


define MPU6050_RA_YA_OFFS_H 0x08


//[15:0] YA_OFFS


两个寄存器合在一起



15.



#


define MPU6050_RA_YA_OFFS_L_TC 0x09



16.





17.



#


define MPU6050_RA_ZA_OFFS_H 0x0A


//[15:0] ZA_OFFS


两个寄存器合在一起



18.



#


define MPU6050_RA_ZA_OFFS_L_TC 0x0B



19.





20.



#


define MPU6050_RA_XG_OFFS_USRH 0x13


//[15:0] XG_OFFS_USR


两个寄存器合在一起



21.



#


define MPU6050_RA_XG_OFFS_USRL 0x14



22.





23.



#


define MPU6050_RA_YG_OFFS_USRH 0x15


//[15:0] YG_OFFS_USR


两个寄存器合在一起



24.



#


define MPU6050_RA_YG_OFFS_USRL 0x16



25.





26.



#


define MPU6050_RA_ZG_OFFS_USRH 0x17


//[15:0] ZG_OFFS_USR


两个寄存器合在一起



27.



#


define MPU6050_RA_ZG_OFFS_USRL 0x18



28.





29.



/


*


陀螺仪的采样频率


*/



30.



/


*


传感器的寄存器输出


,FIFO


输出< /p>


,DMP


采样、运动检测、



31.




*


零运动检测和自由落体检测都是基于采样率。



32.




*


通过


SMPLRT_DIV


把陀螺仪输 出率分频即可得到采样率



33.




*


采样率


=


陀螺仪输出率


/ (1 + SMPLRT_DIV)



34.




*


禁用


DL PF


的情况下


(DLPF_CFG = 0



7)


,陀螺仪输出率


= 8 khz



35.




*


在启用


DLPF(


见寄存器

< p>
26)


时,陀螺仪输出率


= 1 khz



36.




*


加速度传感器输出率是


1 khz< /p>


。这意味着


,


采样率大于


1 khz



,



37.




*


同一个加速度传感器的样品可能会多次输入到


FIFO



DMP


和传感器寄存器


*/



38.



#


define MPU6050_RA_SMPLRT_DIV 0x19


//[0-7]


陀螺仪输出分频采样率



39.





40.



/


*


配置外部引脚采样和


DLPF


数字低通 滤波器


*/



41.



#


define MPU6050_RA_CONFIG 0x1A



42.



/


/bit5-bit3


一个连接 到


FSYNC


端口的外部信号可以通过配置

EXT_SYNC_SET


来采样



43.



/


/


44.



/


/





也 就是说


,


这里设置之后


,FSYNC< /p>


的电平


0



1< /p>


进入最终数据寄存器


,


具体如下



0


不使用


1 FSYNC


电平进入所有数据寄存器


2 FSYNC


电平进入


GYRO_XOUT_L 3 FSYNC


电平进入


GYRO_YOUT_L



45.



/


/


46.



/


/




4


FSYNC


电平进入


GYRO_ZOUT_L


5


FSYNC


电平进入


ACCEL_XOUT_L


6


FSYNC


电平进入


ACCEL_YOUT_L



7 FSYNC


电平进入


SYNC_A CCEL_ZOUT_L



47.



/


/bit2-bit0


数字低通滤波器



用于滤除高频干扰



高于这个频率的干扰被滤除掉



48.



/


*


对应关系如下



49.




* *




|


加速度传感器


|


陀螺仪



50.




* * DLPF_CFG |


带宽


|


延迟


|


带宽


|


延迟


|


采样率



51.




* -------------+--------+-------+--------+------+--- ----------



52.




* 0



| 260Hz | 0ms | 256Hz | 0.98ms | 8kHz



53.




* 1



| 184Hz | 2.0ms | 188Hz | 1.9ms | 1kHz



54.




* 2



| 94Hz | 3.0ms | 98Hz | 2.8ms | 1kHz



55.




* 3



| 44Hz | 4.9ms | 42Hz | 4.8ms | 1kHz



56.




* 4



| 21Hz | 8.5ms | 20Hz | 8.3ms | 1kHz



57.




* 5



| 10Hz | 13.8ms | 10Hz | 13.4ms | 1kHz



58.




* 6



| 5Hz | 19.0ms | 5Hz | 18.6ms | 1kHz



59.




* 7



| Reserved | Reserved | Reserved



60.




* */



61.





62.





63.



/


*


陀螺仪的配置


,


主要是配置陀螺仪的量 程与自检


(


通过相应的位


7 6 5


开启自检


)*/



64.



#


define MPU6050_RA_GYRO_CONFIG 0x1B



65.



/


/bit4-bit3


量程设置如下



66.



/


/


67.



/


/


68.



/


/


69.



/


/


70.









0 = +/- 250



/




1 = +/- 500



/




2 = +/- 1000



/




3 = +/- 2000



/< /p>



*/



71.



/


*


加速度计的配置


,


主要是配置加速度计 的量程与自检


(


通过相应的位


7 6 5


开启自检


)



72.




*


另外


,


还能配置系统的高通滤波器


*/



73.



#


define MPU6050_RA_ACCEL_CONFIG 0x1C



74.



/


/bit7


启动


X


自检



加速度计的自检



75.



/


/bit6


启动


Y


自检



76.



/


/bit5


启动


Z


自检



77.



/


/bit4-bit3


加速度传感器的量程配置



78.



/


/


79.



/


/


80.



/


/


81.



/


/






0 = +/- 2g



1 = +/- 4g



2 = +/- 8g



3 = +/- 16g*/



82.



/


/ bit0



bit2


加速度传感器的高通滤波器



83.



/


* DHPF


是在路径中连接于运动探测器


(


自由落体


,


运动阈值


,


零运动


)


的一个滤波器模块。



84.




*


高通滤波器的输出值不在数据寄存器中



85.




*


高通滤波器有三种模式:



86.




*


重置


:


在一个样本中将滤波器输出值设 为零。


这有效的禁用了高通滤波器。


这种模式可以快速切换滤波 器的设置


模式。



87.




*


开启


:


高通滤波器能通过高于截止频率 的信号



88.




*


持续


:< /p>


触发后


,


过滤器持续当前采样。过滤器输 出值是输入样本和持续样本之间的差异



89.




*


设置值如下所示



90.




* ACCEL_HPF |


高通滤波模式


|


截止频率



91.




* ----------+-------------+------------------



92.




* 0 | Reset | None



93.




* 1 | On | 5Hz



94.




* 2 | On | 2.5Hz



95.




* 3 | On | 1.25Hz



96.




* 4 | On | 0.63Hz



97.




* 7 | Hold | None



98.




*/



99.





100.



#define MPU6050_RA_FF_THR 0x1D



101.



102.



103.



104.



/*


自由落体加速度的阈值



*


这个寄存器为自由落体的阈值检测进行配置。



*FF_THR


的单位是


1LSB = 2mg


。当加速度传感器测量而得的三个轴的绝对值



*


都小于检测阈值时,就可以测得自由落体值。这种情况下,


(


加速度计每次检测到就


+1


以下


,


所以还要依


靠加 速度采样率


)



105.



106.



107.



108.



109.



110.



111.



112.



113.



114.



115.



116.



117.



118.



119.



120.



121.



122.



123.



124.



*


自由落体时间计数器计数一次


(


寄 存器


30)


。当自由落体时间计数器达到



*FF_DUR


中规定的时间时,自由落体被中断


(


或发生自由落体中断


)


**/




#define MPU6050_RA_FF_DUR 0x1E



/*



*


自由落体加速度的时间阈值



*


这个寄存器为自由落体时间阈值计数器进行配置。



*


时间计数频率为


1 khz,


因此


FF_DUR


的单位是


1 LSB = 1


毫秒。



*


当加速度器测量而得的绝对值都小于检测阈值时,



*


自由落体时间计数器计数一次。当自由落体时间计数器



*


达到该寄存器的规定时间时,自由落体被中断。



* (


或发生自由落体中断


)



* */




#define MPU6050_RA_MOT_THR 0x1F



/*



*


运动检测的加速度阈值



*


这个寄存器为运动中断的阈值检测进行配置。



*MOT_THR


的单位是


1LSB = 2mg




125.



126.



127.



128.



129.



130.



131.



132.



133.



134.



135.



136.



137.



138.



139.



140.



141.



142.



143.



144.



145.



146.



147.



148.



149.



150.



151.



152.



153.



*


当加速度器测量而得的绝对值都超过该运动检测的阈值时,



*


即可测得该运动。这一情况下,运动时间检测计数器计数一 次。



*


当运动检测计数器达到


MOT_DUR


的规定时间时,运动检测被中断。

< br>


*


运动中断表明了被检测的运动

< br>MOT_DETECT_STATUS (Register 97)


的轴和极性。



*/




#define MPU6050_RA_MOT_DUR 0x20



/*



*


运动检测时间的阈值。


< p>
*


这个寄存器为运动中断的阈值检测进行配置。



*


时间计数器计数频率为


1 kHz


,因此


MOT_THR


的单位是


1LSB = 1ms




*


当加速度器测量而得的绝对值都超过该运动检测的阈值时

(Register 31)




*


运动检测时间计数器计数一次。当运动检测计数器达到该寄存器规定的时间时,



*


运动检测被中断。



**/




#define MPU6050_RA_ZRMOT_THR 0x21



/*



*


零运动检测加速度阈值。



*


这个寄存器为零运动中断检测进行配置。



* ZRMOT_THR


的单位是


1LSB = 2mg




*


当加速度器测量而得的三个轴的绝对值都小于检测阈值时,



*


就可以测得零运动。这种情况下,零运动时间计数器计数一次


(


寄存器


34)



*


当自零运动时间计数器达到


ZRMOT_DUR (Register 34)


中规定的时间时,零运动被中断。



*


与自由落体或运动检测不同的是,


当零运动首次检测到以及当零运动检测不到时,


零运动检测都被中断。

< br>


*


当零运动被检测到时


,< /p>


其状态将在


MOT_DETECT_STATUS


寄存器


(


寄存器


97)


中显示出来。



*

< br>当运动状态变为零运动状态被检测到时


,


状态位设置为< /p>


1


。当零运动状态变为运动状态被检测到时


,



*


状态位设置为


0




**/



154.



155.



156.



157.



158.



159.



160.



161.



162.



163.



164.



165.



166.



167.



168.



169.



170.



171.



172.



173.



174.



175.



176.



177.



178.



179.



180.



181.



182.




#define MPU6050_RA_ZRMOT_DUR 0x22



/*



*


零运动检测的时间阈值



*


这个寄存器为零运动中断检测进行时间计数器的配置。



*


时间计数器的计数频率为


16 H z,


因此


ZRMOT_DUR


的单位是


1 LSB = 64 ms




*


当加速度器测量而得的绝对值都小于检测器的阈值


(Register 33)


时,



*


运动检测时间计数器计数一次。当零运动检测计数器达到该 寄存器规定的时间时,



*


零运动检测被中断。



**/





/*



*


设 备的各种


FIFO


使能


,


包括温度



加速度



陀螺仪



从机



*


将相关的数据写入


FIFO


缓冲中



**/



#define MPU6050_RA_FIFO_EN 0x23



//bit7


温度


fifo


使能



//bit6


陀螺仪


Xfifo


使能



//bit5

陀螺仪


Yfifo


使能



//bit4


陀螺仪


Zfifo


使能



//bit3

加速度传感器


fifo


使能



//bit2


外部从设备


2fifo


使能



//bit1


外部从设备


1fifo


使能



//bit0


外部从设备


0fifo


使能




#define MPU6050_RA_I2C_MST_CTRL 0x24



//


配置单主机或者多主机 下的


IIC


总线



//bit7


监视从设备总线


,


看总线是否可用


MULT_MST_EN


设置为


1



,MPU-60X0


的总线仲裁检测逻辑被打




183.



184.



//bit6

< p>
延迟数据就绪中断


,


直达从设备数据也进入主机再 触发



相当于数据同步等待



//bit5


当设置为


1

< p>


,



Slave3 < /p>


相连的外部传感器数据


(


寄存器


73


到寄存器


96)


写入


FIFO


缓冲中


,



次都写入



185.



//bit4


主机读取一个从机到下一个从机读取之间的动作




0


读取之间有一个


restart,



1


下一 次读取


前会有一个重启


,


然后



186.



187.



188.



189.



190.



191.



192.



193.



194.



195.



196.



197.



198.



199.



200.



201.



202.



203.



204.



205.



206.



207.



208.



209.



210.



//



一直读取直到切换写入或者切换设备



//bit3-bit0


配置


MPU


作为


IIC


主机时的时钟


,


基于


MPU


内部


8M


的分频



/* I2C_MST_CLK | I2C


主时钟速度


| 8MHz


时钟分频器



* ---- --------+------------------------+---------------- ---



* 0




| 348kHz | 23



* 1




| 333kHz | 24



* 2




| 320kHz | 25



* 3





| 308kHz | 26



* 4





| 296kHz | 27



* 5





| 286kHz | 28



* 6





| 276kHz | 29



* 7





| 267kHz | 30



* 8





| 258kHz | 31



* 9





| 500kHz | 16



* 10




| 471kHz | 17



* 11




| 444kHz | 18



* 12




| 421kHz | 19



* 13




| 400kHz | 20



* 14




| 381kHz | 21



* 15




| 364kHz | 22



* */






/**************************MPU


链接


IIC


从设备控制寄存器


,


没 使用从机连接的基本不用考虑这些


************************ ************/



211.



212.



213.



214.



/*


指定


slave (0-3)



I2C


地址



*


注意


Bit 7 (MSB)


控制了读


/


写模式。如果设置了

< p>
Bit 7,


那么这是一个读取操作


,



*


如果将其清除


,

< br>那么这是一个编写操作。其余位


(6-0)


< p>
slave


设备的


7-bit

设备地址。



*


在读取模式中< /p>


,


读取结果是存储于最低可用的


EXT_ SENS_DATA


寄存器中。



215.



216.



217.



218.



219.



220.



221.



222.



223.



224.



225.



226.



227.



228.



229.



230.



231.



232.



233.



234.



235.



236.



237.



238.



239.



240.



241.



* MPU-6050


支持全


5



sla ve


,但


Slave 4


有其特殊功能


(getSlave4*


setSlave4*)




*


如寄存器


25

中所述,


I2C


数据转换通过采样率体现。用户负责确保< /p>


I2C


数据转换能够



*


在一个采样率周期内完成。



* I2C slave


数据传输速率可根据采样率来减小。



*


减小的传输速率是由


I2C_MS T_DLY(


寄存器


52)


所决定的。



* slave


数据传输速率是否根 据采样率来减小是由


I2C_MST_DELAY_CTRL (


寄存器


103)


所决定的。



* slave


的处理指令是固定的。


Slave


的处理顺序是


Slave 1, Slave 2, Slave 3



Slave 4




*


如 果某一个


Slave


被禁用了,那么它会被自动忽略。



*


每个


slave


可按采样率或降低的采样率来读取。在有些


slave


以采样率读取有些以减小



*


的采样率读取的情况下,


slave


的读取顺序依旧不 变。然而,



*


如果一些

< p>
slave


的读取速率不能在特定循环中进行读取,那么它们会被自动忽略



*


更多降低的读取速率相关信息< /p>


,


请参阅寄存器


52



* Slave


是否按采样率 或降低的采样率来读取由寄存器


103



Delay Enable


位来决定



**/




//


从机


0


设置相关



#define MPU6050_RA_I2C_SLV0_ADDR 0x25



//bit7


当前


IIC


从设备

< br>0


的操作


,1


为读取

< p>
0


写入



//bit6-bit0


从机设备的地址



/*


要读取或者要写入的设备内部的寄存器地址


,


不管读 取还是写入


*/



#define MPU6050_RA_I2C_SLV0_REG 0x26



/*iic


从机系统配置寄存器


*/



#define MPU6050_RA_I2C_SLV0_CTRL 0x27



//bit7


启动或者禁 止这个设备的


IIC


数据传送过程



//bit6


当设置为


1

< p>


,


字节交换启用。当启用字节交换时

< p>
,


词对的高低字节即可交换



//bit5



I2C_SLV0_REG_DIS



1


,只能进行读取或者写入数据。当该位清


0


,可以再读取



//



或写入数据之前写入一个寄存器地址。当指定从机设备内部的 寄存器地址进行发送或接收



242.



243.



244.



245.



246.



//



数据时,该位必须等于


0



//bit4


指定从寄存器收到的字符对的分组顺序。当该位清


0


,寄存器地址



//



//



0



1,


2



3


的字节是分别成对


(甚至,


奇数寄存器地址





作为一个字符对。


当该位置


1




寄存器地址


1



2



3



4


的字节是分别成对的,作为一个字符对



//bit3-bit0


指定从机


0


发送字符的长度。由


Slave 0


转换而来和转换至


Slave 0


的 字节数


,(IIC



次传输的长度


)



247.



248.



249.



250.



251.



252.



253.



254.



255.



256.



257.



258.



259.



260.



261.



262.



263.



264.



265.



266.



267.



268.



269.



270.



271.



272.



273.



//




/*IIC SLAVE1


配置寄存器


,



0


相同


*/




#define MPU6050_RA_I2C_SLV1_ADDR 0x28



#define MPU6050_RA_I2C_SLV1_REG 0x29



#define MPU6050_RA_I2C_SLV1_CTRL 0x2A




/*IIC SLAV E2


配置寄存器


,


< br>0


相同


*/



#define MPU6050_RA_I2C_SLV2_ADDR 0x2B



#define MPU6050_RA_I2C_SLV2_REG 0x2C



#define MPU6050_RA_I2C_SLV2_CTRL 0x2D




/*IIC SLAV E3


配置寄存器


,


< br>0


相同


*/



#define MPU6050_RA_I2C_SLV3_ADDR 0x2E



#define MPU6050_RA_I2C_SLV3_REG 0x2F



#define MPU6050_RA_I2C_SLV3_CTRL 0x30




/*slave4



I2C


地址


I IC4


与前几个的寄存器定义有所不同


*/


#define MPU6050_RA_I2C_SLV4_ADDR 0x31



//



IIC SLAVE1


类似





该位清


0



I2C_SLV0_EN


位自动置


0.



#define MPU6050_RA_I2C_SLV4_REG 0x32


/*slave4


的当前内部寄存器


*/



#define MPU6050_RA_I2C_SLV4_DO 0x33




/*


写于


s lave4


的新字节这一寄存器可储存写于


slave4


的数据。



*


如 果


I2C_SLV4_RW


设置为


1< /p>


(设置为读取模式),那么该寄存器无法执行操作


*/

< p>


#define MPU6050_RA_I2C_SLV4_CTRL 0x34



//


当设置为


1


时,此位启用了


slave4

的转换操作。当设置为


0


时,则禁用该操作



#define MPU6050_I2C_SLV4_EN_BIT 7


-


-


-


-


-


-


-


-



本文更新与2021-02-01 18:36,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/594491.html

最详细的MPU6050寄存器说明手册-中文的相关文章