Я нашел несколько других людей, которые спрашивают об этом, но все они кодируют в Arduino, и я изо всех сил пытаюсь перевести это в свой проект.
Я работаю в исследовательской группе, разрабатывающей Cube Satellite для запуска, и моя роль заключается в связи с периферийными устройствами, включая IMU (MPU-9250). Я кросс-компилирую с uClinux, кодирую на C.
Пока что я могу успешно считать показания акселерометра, гироскопа и температуры, но не могу получить показания магнитометра. Магнитометр (AK8963) имеет собственный адрес (0x0C), и я пытался связаться с ним, записывая в I2C_SLV0_ADDR(0x25), I2C_SLV0_REG(0x26), и I2C_SLV0_CTRL (0x27). Когда я не получил никаких результатов, я попытался решить эту проблему, написав в FIFO Enable (0x23) и I2C Master Control (0x24)
Таблица данных и карта регистров подразумевают, что значения, полученные с магнитометра, хранятся в регистрах External Sensor Data (0x49-0x60), но я ничего не получаю в этих регистрах, когда пытаюсь это сделать.
Вот код, который показывает данные, которые я записываю в регистры:
write_register(0x23, 0x04);
write_register(0x24, 0b11110000);
write_register(0x25,0x8c);
write_register(0x26,0x00);
write_register(0x27,0b11110001);
Итак, мои вопросы таковы: 1. Правильно ли я отношусь к этому процессу, или я полностью ошибаюсь?
- Если я на правильном пути, читаю ли я из правильных регистров?
Спасибо за вашу помощь всем! Дайте мне знать, если мне нужно что-то уточнить!