Top.Mail.Ru
Уведомления
Очистить все

[Решено] SPI Соединение 2-х устройств по типу звезда

Страница 4 / 4
Aveal
(@aveal)
Top level Admin

Вообще период таймера не важен, главное чтобы перед заходом в MPU9250_Process() мы имели в uSec актуальное значение в микросекундах.

ОтветитьЦитата
Размещено : 13.11.2023 11:06
(@mihayk)
Level 3

Я калибровку не делаю. А надо ли? Вызываю MPU9250_Init() на этапе инициализации и MPU9250_Process() в главном цикле скетча. Крен и тангаж по данным от магнетометра получаются хорошо.  А вот рыскание почему-то одно и то же число 6.00. Интересно чего не хватает?

ОтветитьЦитата
Создатель темы Размещено : 14.11.2023 06:13
Aveal
(@aveal)
Top level Admin

@mihayk Для магнетометра точно нужна калибровка будет... Надо под отладчиком посмотреть, откуда это число в итоге получается, какие там значения в формулах.

ОтветитьЦитата
Размещено : 14.11.2023 10:44
(@mihayk)
Level 3

Вот так делаю калибровку для магнетометра:

MPU9250_Init();
MPU9250_CalibrationStart(MPU9250_MAG_SENSOR);
while (MPU9250_CalibrationStep() == 0){;}
MPU9250_CalibrationFinish();	

Но ожидание функции MPU9250_CalibrationStep() бесконечно, т.к. внутри нее не выполняется условие:

if(readByte(MPU9250_MAGN_I2C_ADDRESS, ST1) & 0x01) 
{
}

MPU9250_MAGN_I2C_ADDRESS = 0х0С. 

И здесь магнетометр приказывает долго жить! Не пойму, специально с SPI перескочил на I2C, чтоб он заработал. Ну не может быть, чтоб 2 MPU9250 были с бракованными магнетометрами! Что делать?

ОтветитьЦитата
Создатель темы Размещено : 14.11.2023 18:20
Aveal
(@aveal)
Top level Admin

@mihayk А в принципе readByte() возвращает что-то или HAL из I2C драйвера ошибку возвращает?

ОтветитьЦитата
Размещено : 16.11.2023 11:40
(@mihayk)
Level 3

Нашел одну статью на русском языке. 

Там автор утверждает что магнетометр AK8963 на MPU9250 надо включить, иначе он не работает.

Для этого он подключает датчик MPU-9250 по I2C в качестве ведомого к микросхеме FT2232H (т.е. по сути микроконтроллер). С ее помощью читает все регистры датчика MPU-9250 по I2C. При помощи программы чтения в регистр под номером 0x37 (INT_PIN_CFG) записывает значение 0x02. И утверждет, что после этого магнитометр оживает. 

Не знаю, почему нельзя это сделать из STM32 командами записи в регистры, но у меня командой не получилось включить магнитометр.

writeByte(MPU9250_I2C_ADDRESS, INT_PIN_CFG, 0x02);

 А вот возврат readByte() я посмотрю (к вопросу на ваше сообщение).

ОтветитьЦитата
Создатель темы Размещено : 16.11.2023 15:16
Aveal
(@aveal)
Top level Admin

@mihayk хм, интересно. Я всегда запаивал просто в плату и сразу функционировало.

ОтветитьЦитата
Размещено : 16.11.2023 15:36
(@mihayk)
Level 3
readByte(MPU9250_MAGN_I2C_ADDRESS, ST1)

возвращает 0х72

 

 

ОтветитьЦитата
Создатель темы Размещено : 16.11.2023 15:38
(@mihayk)
Level 3

Запись от: @aveal

@mihayk хм, интересно. Я всегда запаивал просто в плату и сразу функционировало.

Где брал MPU9250?  Если на али, то у какого продавца? Хочу попробовать заказ 3-ий раз у проверенных поставщиков!

 

ОтветитьЦитата
Создатель темы Размещено : 16.11.2023 18:04
Aveal
(@aveal)
Top level Admin

Запись от: @mihayk

readByte(MPU9250_MAGN_I2C_ADDRESS, ST1)

возвращает 0х72

 

Ну похоже, в целом обмен работает.

 

ОтветитьЦитата
Размещено : 16.11.2023 18:15
Aveal
(@aveal)
Top level Admin

Запись от: @mihayk

Запись от: @aveal

@mihayk хм, интересно. Я всегда запаивал просто в плату и сразу функционировало.

Где брал MPU9250?  Если на али, то у какого продавца? Хочу попробовать заказ 3-ий раз у проверенных поставщиков!

Да у разных брал, кто попадется ) Вот в архиве заказов висят три позиции, но там страницы товаров уже недоступны, поэтому скрином кидаю просто:

изображение
ОтветитьЦитата
Размещено : 16.11.2023 18:16
Aveal
(@aveal)
Top level Admin

Большие партии в Электронщике брал.

ОтветитьЦитата
Размещено : 16.11.2023 18:20
(@mihayk)
Level 3

Запись от: @aveal

Запись от: @mihayk

readByte(MPU9250_MAGN_I2C_ADDRESS, ST1)

возвращает 0х72

 

Ну похоже, в целом обмен работает.

 

Но неправильно :)))

 

ОтветитьЦитата
Создатель темы Размещено : 16.11.2023 18:31
Страница 4 / 4
Поделиться: