最详细的MPU6050寄存器说明手册中文.docx
《最详细的MPU6050寄存器说明手册中文.docx》由会员分享,可在线阅读,更多相关《最详细的MPU6050寄存器说明手册中文.docx(28页珍藏版)》请在冰豆网上搜索。
最详细的MPU6050寄存器说明手册中文
1.//技术文档未公布的寄存器主要用于官方DMP操作
2.#defineMPU6050_RA_XG_OFFS_TC0x00//[bit7]PWR_MODE,[6:
1]XG_OFFS_TC,[bit0]OTP_BNK_VLD
3.#defineMPU6050_RA_YG_OFFS_TC0x01//[7]PWR_MODE,[6:
1]YG_OFFS_TC,[0]OTP_BNK_VLD
4.//bit7的定义,当设置为1,辅助I2C总线高电平是VDD。
当设置为0,辅助I2C总线高电平是VLOGIC
5.
6.#defineMPU6050_RA_ZG_OFFS_TC0x02//[7]PWR_MODE,[6:
1]ZG_OFFS_TC,[0]OTP_BNK_VLD
7.#defineMPU6050_RA_X_FINE_GAIN0x03//[7:
0]X_FINE_GAIN
8.#defineMPU6050_RA_Y_FINE_GAIN0x04//[7:
0]Y_FINE_GAIN
9.#defineMPU6050_RA_Z_FINE_GAIN0x05//[7:
0]Z_FINE_GAIN
10.
11.#defineMPU6050_RA_XA_OFFS_H0x06//[15:
0]XA_OFFS两个寄存器合在一起
12.#defineMPU6050_RA_XA_OFFS_L_TC0x07
13.
14.#defineMPU6050_RA_YA_OFFS_H0x08//[15:
0]YA_OFFS两个寄存器合在一起
15.#defineMPU6050_RA_YA_OFFS_L_TC0x09
16.
17.#defineMPU6050_RA_ZA_OFFS_H0x0A//[15:
0]ZA_OFFS两个寄存器合在一起
18.#defineMPU6050_RA_ZA_OFFS_L_TC0x0B
19.
20.#defineMPU6050_RA_XG_OFFS_USRH0x13//[15:
0]XG_OFFS_USR两个寄存器合在一起
21.#defineMPU6050_RA_XG_OFFS_USRL0x14
22.
23.#defineMPU6050_RA_YG_OFFS_USRH0x15//[15:
0]YG_OFFS_USR两个寄存器合在一起
24.#defineMPU6050_RA_YG_OFFS_USRL0x16
25.
26.#defineMPU6050_RA_ZG_OFFS_USRH0x17//[15:
0]ZG_OFFS_USR两个寄存器合在一起
27.#defineMPU6050_RA_ZG_OFFS_USRL0x18
28.
29./*陀螺仪的采样频率*/
30./*传感器的寄存器输出,FIFO输出,DMP采样、运动检测、
31.*零运动检测和自由落体检测都是基于采样率。
32.*通过SMPLRT_DIV把陀螺仪输出率分频即可得到采样率
33.*采样率=陀螺仪输出率/(1+SMPLRT_DIV)
34.*禁用DLPF的情况下(DLPF_CFG=0或7),陀螺仪输出率=8khz
35.*在启用DLPF(见寄存器26)时,陀螺仪输出率=1khz
36.*加速度传感器输出率是1khz。
这意味着,采样率大于1khz时,
37.*同一个加速度传感器的样品可能会多次输入到FIFO、DMP和传感器寄存器*/
38.#defineMPU6050_RA_SMPLRT_DIV0x19//[0-7]陀螺仪输出分频采样率
39.
40./*配置外部引脚采样和DLPF数字低通滤波器*/
41.#defineMPU6050_RA_CONFIG0x1A
42.//bit5-bit3一个连接到FSYNC端口的外部信号可以通过配置EXT_SYNC_SET来采样
43.//也就是说,这里设置之后,FSYNC的电平0或1进入最终数据寄存器,具体如下
44.//0不使用1FSYNC电平进入所有数据寄存器2FSYNC电平进入GYRO_XOUT_L3FSYNC电平进入GYRO_YOUT_L
45.//4FSYNC电平进入GYRO_ZOUT_L5FSYNC电平进入ACCEL_XOUT_L6FSYNC电平进入ACCEL_YOUT_L
46.//7FSYNC电平进入SYNC_ACCEL_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./*陀螺仪的配置,主要是配置陀螺仪的量程与自检(通过相应的位765开启自检)*/
64.#defineMPU6050_RA_GYRO_CONFIG0x1B
65.//bit4-bit3量程设置如下
66.//0=+/-250度/秒
67.//1=+/-500度/秒
68.//2=+/-1000度/秒
69.//3=+/-2000度/秒*/
70.
71./*加速度计的配置,主要是配置加速度计的量程与自检(通过相应的位765开启自检)
72.*另外,还能配置系统的高通滤波器*/
73.#defineMPU6050_RA_ACCEL_CONFIG0x1C
74.//bit7启动X自检加速度计的自检
75.//bit6启动Y自检
76.//bit5启动Z自检
77.//bit4-bit3加速度传感器的量程配置
78.//0=+/-2g
79.//1=+/-4g
80.//2=+/-8g
81.//3=+/-16g*/
82.//bit0到bit2加速度传感器的高通滤波器
83./*DHPF是在路径中连接于运动探测器(自由落体,运动阈值,零运动)的一个滤波器模块。
84.*高通滤波器的输出值不在数据寄存器中
85.*高通滤波器有三种模式:
86.*重置:
在一个样本中将滤波器输出值设为零。
这有效的禁用了高通滤波器。
这种模式可以快速切换滤波器的设置模式。
87.*开启:
高通滤波器能通过高于截止频率的信号
88.*持续:
触发后,过滤器持续当前采样。
过滤器输出值是输入样本和持续样本之间的差异
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.#defineMPU6050_RA_FF_THR0x1D
101./*自由落体加速度的阈值
102.*这个寄存器为自由落体的阈值检测进行配置。
103.*FF_THR的单位是1LSB=2mg。
当加速度传感器测量而得的三个轴的绝对值
104.*都小于检测阈值时,就可以测得自由落体值。
这种情况下,(加速度计每次检测到就+1以下,所以还要依靠加速度采样率)
105.*自由落体时间计数器计数一次(寄存器30)。
当自由落体时间计数器达到
106.*FF_DUR中规定的时间时,自由落体被中断(或发生自由落体中断)
107.**/
108.
109.#defineMPU6050_RA_FF_DUR0x1E
110./*
111.*自由落体加速度的时间阈值
112.*这个寄存器为自由落体时间阈值计数器进行配置。
113.*时间计数频率为1khz,因此FF_DUR的单位是1LSB=1毫秒。
114.*当加速度器测量而得的绝对值都小于检测阈值时,
115.*自由落体时间计数器计数一次。
当自由落体时间计数器
116.*达到该寄存器的规定时间时,自由落体被中断。
117.*(或发生自由落体中断)
118.**/
119.
120.#defineMPU6050_RA_MOT_THR0x1F
121./*
122.*运动检测的加速度阈值
123.*这个寄存器为运动中断的阈值检测进行配置。
124.*MOT_THR的单位是1LSB=2mg。
125.*当加速度器测量而得的绝对值都超过该运动检测的阈值时,
126.*即可测得该运动。
这一情况下,运动时间检测计数器计数一次。
127.*当运动检测计数器达到MOT_DUR的规定时间时,运动检测被中断。
128.*运动中断表明了被检测的运动MOT_DETECT_STATUS(Register97)的轴和极性。
129.*/
130.
131.#defineMPU6050_RA_MOT_DUR0x20
132./*
133.*运动检测时间的阈值。
134.*这个寄存器为运动中断的阈值检测进行配置。
135.*时间计数器计数频率为1kHz,因此MOT_THR的单位是1LSB=1ms。
136.*当加速度器测量而得的绝对值都超过该运动检测的阈值时(Register31),
137.*运动检测时间计数器计数一次。
当运动检测计数器达到该寄存器规定的时间时,
138.*运动检测被中断。
139.**/
140.
141.#defineMPU6050_RA_ZRMOT_THR0x21
142./*
143.*零运动检测加速度阈值。
144.*这个寄存器为零运动中断检测进行配置。
145.*ZRMOT_THR的单位是1LSB=2mg。
146.*当加速度器测量而得的三个轴的绝对值都小于检测阈值时,
147.*就可以测得零运动。
这种情况下,零运动时间计数器计数一次(寄存器34)。
148.*当自零运动时间计数器达到ZRMOT_DUR(Register34)中规定的时间时,零运动被中断。
149.*与自由落体或运动检测不同的是,当零运动首次检测到以及当零运动检测不到时,零运动检测都被中断。
150.*当零运动被检测到时,其状态将在MOT_DETECT_STATUS寄存器(寄存器97)中显示出来。
151.*当运动状态变为零运动状态被检测到时,状态位设置为1。
当零运动状态变为运动状态被检测到时,
152.*状态位设置为0。
153.**/
154.
155.#defineMPU6050_RA_ZRMOT_DUR0x22
156./*
157.*零运动检测的时间阈值
158.*这个寄存器为零运动中断检测进行时间计数器的配置。
159.*时间计数器的计数频率为16Hz,因此ZRMOT_DUR的单位是1LSB=64ms。
160.*当加速度器测量而得的绝对值都小于检测器的阈值(Register33)时,
161.*运动检测时间计数器计数一次。
当零运动检测计数器达到该寄存器规定的时间时,
162.*零运动检测被中断。
163.**/
164.
165.
166./*
167.*设备的各种FIFO使能,包括温度加速度陀螺仪从机
168.*将相关的数据写入FIFO缓冲中
169.**/
170.#defineMPU6050_RA_FIFO_EN0x23
171.//bit7温度fifo使能
172.//bit6陀螺仪Xfifo使能
173.//bit5陀螺仪Yfifo使能
174.//bit4陀螺仪Zfifo使能
175.//bit3加速度传感器fifo使能
176.//bit2外部从设备2fifo使能
177.//bit1外部从设备1fifo使能
178.//bit0外部从设备0fifo使能
179.
180.#defineMPU6050_RA_I2C_MST_CTRL0x24
181.//配置单主机或者多主机下的IIC总线
182.//bit7监视从设备总线,看总线是否可用MULT_MST_EN设置为1时,MPU-60X0的总线仲裁检测逻辑被打开
183.//bit6延迟数据就绪中断,直达从设备数据也进入主机再触发相当于数据同步等待
184.//bit5当设置为1时,与Slave3相连的外部传感器数据(寄存器73到寄存器96)写入FIFO缓冲中,每次都写入
185.//bit4主机读取一个从机到下一个从机读取之间的动作为0读取之间有一个restart,为1下一次读取前会有一个重启,然后
186.//一直读取直到切换写入或者切换设备
187.//bit3-bit0配置MPU作为IIC主机时的时钟,基于MPU内部8M的分频
188./*I2C_MST_CLK|I2C主时钟速度|8MHz时钟分频器
189.*------------+------------------------+-------------------
190.*0|348kHz|23
191.*1|333kHz|24
192.*2|320kHz|25
193.*3|308kHz|26
194.*4|296kHz|27
195.*5|286kHz|28
196.*6|276kHz|29
197.*7|267kHz|30
198.*8|258kHz|31
199.*9|500kHz|16
200.*10|471kHz|17
201.*11|444kHz|18
202.*12|421kHz|19
203.*13|400kHz|20
204.*14|381kHz|21
205.*15|364kHz|22
206.**/
207.
208.
209.
210./**************************MPU链接IIC从设备控制寄存器,没使用从机连接的基本不用考虑这些************************************/
211./*指定slave(0-3)的I2C地址
212.*注意Bit7(MSB)控制了读/写模式。
如果设置了Bit7,那么这是一个读取操作,
213.*如果将其清除,那么这是一个编写操作。
其余位(6-0)是slave设备的7-bit设备地址。
214.*在读取模式中,读取结果是存储于最低可用的EXT_SENS_DATA寄存器中。
215.*MPU-6050支持全5个slave,但Slave4有其特殊功能(getSlave4*和setSlave4*)。
216.*如寄存器25中所述,I2C数据转换通过采样率体现。
用户负责确保I2C数据转换能够
217.*在一个采样率周期内完成。
218.*I2Cslave数据传输速率可根据采样率来减小。
219.*减小的传输速率是由I2C_MST_DLY(寄存器52)所决定的。
220.*slave数据传输速率是否根据采样率来减小是由I2C_MST_DELAY_CTRL(寄存器103)所决定的。
221.*slave的处理指令是固定的。
Slave的处理顺序是Slave1,Slave2,Slave3和Slave4。
222.*如果某一个Slave被禁用了,那么它会被自动忽略。
223.*每个slave可按采样率或降低的采样率来读取。
在有些slave以采样率读取有些以减小
224.*的采样率读取的情况下,slave的读取顺序依旧不变。
然而,
225.*如果一些slave的读取速率不能在特定循环中进行读取,那么它们会被自动忽略
226.*更多降低的读取速率相关信息,请参阅寄存器52。
227.*Slave是否按采样率或降低的采样率来读取由寄存器103得DelayEnable位来决定
228.**/
229.
230.//从机0设置相关
231.#defineMPU6050_RA_I2C_SLV0_ADDR0x25
232.//bit7当前IIC从设备0的操作,1为读取0写入
233.//bit6-bit0从机设备的地址
234./*要读取或者要写入的设备内部的寄存器地址,不管读取还是写入*/
235.#defineMPU6050_RA_I2C_SLV0_REG0x26
236./*iic从机系统配置寄存器*/
237.#defineMPU6050_RA_I2C_SLV0_CTRL0x27
238.//bit7启动或者禁止这个设备的IIC数据传送过程
239.//bit6当设置为1时,字节交换启用。
当启用字节交换时,词对的高低字节即可交换
240.//bit5当I2C_SLV0_REG_DIS置1,只能进行读取或者写入数据。
当该位清0,可以再读取
241.//或写入数据之前写入一个寄存器地址。
当指定从机设备内部的寄存器地址进行发送或接收
242.//数据时,该位必须等于0
243.//bit4指定从寄存器收到的字符对的分组顺序。
当该位清0,寄存器地址
244.//0和1,2和3的字节是分别成对(甚至,奇数寄存器地址),作为一个字符对。
当该位置1,
245.//寄存器地址1和2,3和4的字节是分别成对的,作为一个字符对
246.//bit3-bit0指定从机0发送字符的长度。
由Slave0转换而来和转换至Slave0的字节数,(IIC一次传输的长度)
247.//该位清0,I2C_SLV0_EN位自动置0.
248.
249./*IICSLAVE1配置寄存器,与0相同*/
250.
251.#defineMPU6050_RA_I2C_SLV1_ADDR0x28
252.#defineMPU6050_RA_I2C_SLV1_REG0x29
253.#defineMPU6050_RA_I2C_SLV1_CTRL0x2A
254.
255./*IICSLAVE2配置寄存器,与0相同*/
256.#defineMPU6050_RA_I2C_SLV2_ADDR0x2B
257.#defineMPU6050_RA_I2C_SLV2_REG0x2C
258.#defineMPU6050_RA_I2C_SLV2_CTRL0x2D
259.
260./*IICSLAVE3配置寄存器,与0相同*/
261.#defineMPU6050_RA_I2C_SLV3_ADDR0x2E
262.#defineMPU6050_RA_I2C_SLV3_REG0x2F
263.#defineMPU6050_RA_I2C_SLV3_CTRL0x30
264.
265./*slave4的I2C地址IIC4与前几个的寄存器定义有所不同*/
266.#defineMPU6050_RA_I2C_SLV4_ADDR0x31//与IICSLAVE1类似
267.#defineMPU6050_RA_I2C_SLV4_REG0x32/*slave4的当前内部寄存器*/
268.#defineMPU6050_RA_I2C_SLV4_DO0x33
269./*写于slave4的新字节这一寄存器可储存写于slave4的数据。
270.*如果I2C_SLV4_RW设置为1(设置为读取模式),那么该寄存器无法执行操作*/
271.#defineMPU6050_RA_I2C_SLV4_CTRL0x34
272.//当设置为1时,此位启用了slave4的转换操作。
当设置为0时,则禁用该操作
273.#defineMPU6050_I2C_SLV4_EN_BIT7
274.//当设置为1时,此位启用了slave4事务完成的中断信号的生成。
275.//当清除为0时,则禁用了该信号的生成。
这一中断状态可在寄存器54中看到。
276.#defineMPU6050_I2C_SLV4_INT_EN_BIT6
277.//当设置为1时,只进行数据的读或写操作。
当设置为0时,
278.//在读写数据之前将编写一个寄存器地址。
当指定寄存器地址在slave设备中时
279.//,这应该等于0,而在该寄存器中会进行数据处理。
280.#defineMPU6050_I2C_SLV4_REG_DIS_BIT5
281.//采样率延迟,这为根据采样率减小的I2Cslaves传输速率进行了配置。
282.//当一个slave的传输速率是根据采样率而降低的,那么该slave是以每1/(1+I2C_MST_DLY)个样本进行传输。
283.//这一基本的采样率也是由SMPLRT_DIV(寄存器25)和DLPF_CFG(寄存器26)所决定的的。
284.//slave传输速率是否根据采样率来减小是由I2C_MST_DELAY_CTRL(寄存器103)所决定的
285.#defineMPU6050_I2C_SLV4_MST_DLY_BIT4//[4:
0]
286.#defineMPU6050_I2C_SLV4_MST_DLY_LENGTH5
287./*slave4中可读取的最后可用字节*/
288.#defineMPU6050_RA_I2C_SLV4_DI0x35
289.
290./*
291.*IIC辅助从机