Вывод: -Я получаю 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», то есть контакт 6, и SDA, то есть контакт 24, с помощью осциллографа, который оказался точно таким же, с включенным режимом обхода. При отключенном ведущем режиме и отключенном режиме байпаса выход на «ES_DA» всегда равен нулю.
Я также пробовал ту же процедуру, что и выше, не только с одним, но и со многими MPU9150, но результат остался прежним, поэтому, скорее всего, есть какая-то проблема с кодом.