Обратный инжиниринг MPU9250

В общем есть некий девайс в виде компаса направления собранный на mpu9250 и mega328p эта связка бросает в CAN шину свои данные через vp230.
Данные я эти считать могу, они в hex но как отделить зерна от плевел понять не могу…
Знаю точно что в сеть летят все данные по акселерометру отдельно, по магнитному отдельно, потом уже STM32 эти данные через CAN собирает и выдает истинный курс (ну или азимут, как удобней) при чем в самом потоке же этого азимута нет (предполагаю, что он как раз таки рассчитывается уже в самой ардуино на основе магнитных показателей…
пример данных снятых из шины CAN:
https://cloud.mail.ru/public/XJkA/VzeWhzHWp

если мои догадки верны (эмпирически вычислил по реакции на движения) ID 19A10045 - это данные акселерометра, а 1DA18045 - магнитные; как видим все значения здесь будут строго положительные, и если брать только 1 значение HEX - то максимальное значение DEC - 255, но девайс я вертел в разных направлениях - то есть значения обязаны быть и отрицательными в том числе. Если брать по 2 значения (как я это считал в других устройствах) то нам не хватает данных… (всего передается 9 параметров по осям) В состоянии покоя акселерометр показывает 00.
В общем я уже всю голову сломал как пересчитывать, и видимо очень запутался…
Еще заметил, что данные по 1DA18045 имеют некую итерацию, 7й байт в любом положении выдает значения от 01 до 04 - то есть это видимо некий id строк с определенным набором данных…

И на что вы рассчитываете? Что кто-то “по телефону” научит вас разбирать неизвестный протокол самопального устройства?

Ну хотя-бы может кто-то подскажет методу, каким способом вычислить данные, у меня нет под рукой отдельного модуля mpu9250 чтобы тупо сравнить данные, можно, конечно повертеть существующий модуль и методом сопоставления постараться выловить, но это тоже проблематично, так как на улице дожди и холодно (а он там, ждать лета?)… ну и вдруг кто-то увидит и просто подскажет откуда какие данные (из области фантастики)… я же никого не заставляю и не принуждаю ни к чему. Или Вам объем форума бока колит?

с интересом почитаю.

Судя по описанию, самоделка?
Вы хотя бы рассказали поподробнее, что это за девайс , откуда взялся и для чего. Кто его собрал и как он попал к Вам? Может на него есть даташит или описание?

Нет, не самоделка, фабричная китайская поделка. Представляет из себя судовой компас для китайского электромотора с удержанием курса. Все данные эта штуковина передает в CAN-шину, практически все данные, кроме компаса я уже успешно расшифровал, а вот с компасом какой-то затык произошел - зацепиться не за что. Само устройство состоит из МК GD32F103, модуля MPU9250, трансивера VP232 (SN65HVD232 или как его там правильно) и пары светодиодов.
Даташита на него нет - уже связался с дистрибьютерами, они тоже заинтересованы в расшифровке данных - но китайцы упорно не дают никакой технической документации. Поломалось - меняйте блок, вот и весь разговор…

Вначале Вы писали, что там атмега328 ? Или это еще один девайс?

Я ошибся, не ту фотку посмотрел…

как вариант для расшифровки можно одновременно подсесть на ноги MPU9250 и посмотреть, что он передает - и тут же сниффером КАН посмотреть, какие сообщения из этого формирует МК.
Но работка не для новичка.

с одной стороны сути это не меняет, разве что между мегой и vp232 должен стоять mcp2515 или что-то подобное, так как в меге нет встроенного декодера CAN, против GD(STM)32F103

в общем то такая идея была - повесить логический анализатор на 9250 и на CAN-L и там уже можно в реально времени сопоставить данные…

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

Цель-то какая? Зачем эмулировать готовый девайс? Дешевле китайцев вряд ли сделаете

ну основная цель переводить эти данные в судовую сеть, для связи всех судовых устройств через шлюз, вторая - это возможность ремонта, стоимость ремонта 1000р новый компас 10 000р.
по сути то ремонтировать и так можно, но понимая данные можно разделять что умерло - МК, трансивер или компас (ведь в этом гребаном девайсе аж 3 устройства)

опять-же многие пользователи сталкивались с невозможностью калибровки (видимо какой-то сбой или программный или железный все-же имеется), и вот чтобы понять почему компас не желает калиброваться желательно понимать что творится на его выходе…

я думаю что решить эту проблему можно только натурным путем, то есть это делать вам на реальном устройстве.
Однако повторюсь - с интересом почитаю, если будут какие-то другие идеи.

я думаю выпаять его с судна и припереть домой, и уже дома снимать с него данные… правда муторное это дело и не быстрое…

ну еще бы… качать один датчик наверно проще, чем все судно :slight_smile:

1 лайк

can на 250кгц, угадал?

Если тебя эти сложности останавливают, то просто забей, реверс-инжинеринг в сто тысяч раз сложнее.

1 лайк

нет, это NMEA2000 на 250 (хотя это тот-же can), CAN компаса на 1000