输出:-我得到的是读取每个寄存器(对应于磁力计)时的 0xFF。另一方面,我可以完美地访问加速度计和陀螺仪的寄存器。我已在禁用 i2c 主模式和启用 i2c 旁路模式的情况下初始化系统。以下是我用来初始化系统的代码:-
single_byte_write(0x6B,0x01);
single_byte_write(0x19,0x01);
single_byte_write(0x1A,0x02);
single_byte_write(0x1B,0x11);
single_byte_write(0x1C,0x10);
single_byte_write(0x6A,0x00);
single_byte_write(0x37,0x02);
('single_byte_write(address,data) 将数据字节写入寄存器,'address' 到从机地址为 0x69')
我访问了加速器的寄存器。和陀螺。如下:- single_byte_read(0x75,wia_mpu); 它返回 0x68,它作为 who_i_am 寄存器是正确的。但是当我尝试访问磁力计寄存器时:- single_byte_read_compass(0x00,wia_compass); 它返回 0xFF 而它应该返回 0x48。
为了确保 single_byte_read_compass()/single_byte_write_compass() 正常工作,我使用了这些函数并更改了从地址(从“0x0C”到“0x69”)来访问加速寄存器。和陀螺。它工作正常。
('single_byte_read()'和'single_byte_read_compass()'的区别只是前者使用从地址为'0x69',而后者使用'0x0C'作为从地址。我也试过'0x0D','0x0E ' 和 '0x0F' 作为从地址,但输出保持不变。)
我还确定了 MPU9150 是否处于直通模式。我在示波器的帮助下检查了引脚“ES_DA”(即 pin6)和 SDA(即 pin24)的输出,结果完全相同,启用了旁路模式。在禁用主模式和禁用旁路模式的情况下,“ES_DA”的输出始终为零。
我还尝试了与上述相同的过程,不仅是一个,而是多个 MPU9150,但输出保持不变,因此代码很可能存在一些问题。