В общем есть некий девайс в виде компаса направления собранный на 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 или как его там правильно) и пары светодиодов.
Даташита на него нет - уже связался с дистрибьютерами, они тоже заинтересованы в расшифровке данных - но китайцы упорно не дают никакой технической документации. Поломалось - меняйте блок, вот и весь разговор…
как вариант для расшифровки можно одновременно подсесть на ноги MPU9250 и посмотреть, что он передает - и тут же сниффером КАН посмотреть, какие сообщения из этого формирует МК.
Но работка не для новичка.
с одной стороны сути это не меняет, разве что между мегой и vp232 должен стоять mcp2515 или что-то подобное, так как в меге нет встроенного декодера CAN, против GD(STM)32F103
ну основная цель переводить эти данные в судовую сеть, для связи всех судовых устройств через шлюз, вторая - это возможность ремонта, стоимость ремонта 1000р новый компас 10 000р.
по сути то ремонтировать и так можно, но понимая данные можно разделять что умерло - МК, трансивер или компас (ведь в этом гребаном девайсе аж 3 устройства)
опять-же многие пользователи сталкивались с невозможностью калибровки (видимо какой-то сбой или программный или железный все-же имеется), и вот чтобы понять почему компас не желает калиброваться желательно понимать что творится на его выходе…
я думаю что решить эту проблему можно только натурным путем, то есть это делать вам на реальном устройстве.
Однако повторюсь - с интересом почитаю, если будут какие-то другие идеи.