реклама на сайте
подробности

 
 
> SPI интерфейс мк-мк, но как устроен протокол?, Пакет из 6 посылок по 8 бит. поллитра захватите :)
Alexeus
сообщение Jan 14 2009, 12:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 14-01-09
Пользователь №: 43 345



Введение: Разбираюсь с системой климат контроля автомобиля. Подцепился осциллографом (ну как осциллографом... звуковой картой smile.gif ) между СПИ интерфейсом двух МК. Один в режиме мастера передает второму, тот интерпретирует данные и отдает короче дальше, пусть на ЖК экран... Когда разберусь, планирую на МК AVR сделать подмену ведомого, так нужно... smile.gif

Описание: Данные передаются в пакете. пакет состоит из 6 посылок по 8 бит. Не все 8 бит используются под перенос данных, а, например первая посылка имеет вид "1ххх1ххх" где ххх- биты данных, 1 вначале и 1 посередине я так понимаю используется для контроля и распознавания вторым мк, что это посылка с информацией о скорости и положении заслонки вентилятора, за этой посылкой следуют еще 5 штук, у них соответственно другие биты неизменны, они несут информацию о температуре и др. (я еще не разобрался какие именно не меняются, пока анализирую), в последней посылке (шестой) первый бит неизменный "0"ххххххх -"х" я так и не понял к чему, так как все необходимые данные передаются в первых 5 посылках, но они меняются.

Непонятки: Может подскажете, каким образом второй мк узнает, что это посылка с инф. о скорости вентилятора, вторая о температуре и т.п. казалось бы, первая посылка имеет маску 1ххх1ххх, но и вторая может принять такой же вид, например при температуре 25 градусов, абстрактно: 10011101 - маска 1ххх1ххх та же, но посылка то вторая, а не первая, таким же образом и следующие посылки могут принимать вид предыдущих. Напомню что всего в пакете 6 посылок и последняя не поддается интерпретированию (я еще не допетрил что она несет, так как все что нужно передается в первых 5ти посылках)

Домыслы: И я так полагаю при смене режима, пакет может прерваться в любом месте и затем начинается передача уже новых данных сначала. Предполагаю, что последний пакет- контрольная сумма или что то в этом роде...

Вопрос: Как 6 посылок собираются в один пакет во втором МК? (ведь мк должен сохранить 5 посылок, затем получить 6ю и сравнить, все ли правильно, являются ли те посылки, что он принял действительными и не содержащими ошибок)

ЗЫ: Сорри, картинки одинаковыя, не ищите отличия. так получилось... как удалить не найду.

Модератор. Удалил лишнюю (вторую).
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 18)
Alexandr
сообщение Jan 15 2009, 12:46
Сообщение #16


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



Alexeus все достаточно просто. Так как вы предложили тоже можно сделать, но тогда придется работать с битами. Проще работать с байтами. Вы принимаете все байты подряд, но стартовый байт Вашей последовательности имеет 0 в 7-ом разряде, 1 в 3-ем. Именно эти два разряда являются для нас значимыми. Поэтому мы делаем операцию AND с маской стартового байта (10001000). Получаем байт Х000Y000, где Х и Y интересующие нас биты. При этом для нас важно чтобы Х=0, Y=1. Для этого мы делаем операцию XOR данного байта и байта 00001000. Если результат операции равен 0 - значит принятый нами байт может являеться стартовым (я исхожу из того, что в линии может идти сплошной поток данных из которого нам надо выдрать только 6 байт). Далее принимаете и подсчитывае контрольную сумму (операцией xor или есть специальнвй алгоритм?) следующих 5 байт и сравниваете с контрольной суммой, принятой последней, как и предложил Палыч. Но можно и каждый принятый байт анализировать методом описанным в начале только маски будут меняться 10010010 10100000 10000010 11000000 10000000


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
Alexeus
сообщение Jan 15 2009, 12:52
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 14-01-09
Пользователь №: 43 345



Палыч, Александр, спасибо, действительно, опираясь на ваши подсказки вычислил, что если складывать все 6 байт пакета, как раз как предложил Палыч, отлавливая последний байт по старшему биту в 1, то при сложении всех 6ти, всегда получаю 0х80 или 0b10000000 !!!

Круто smile.gif Спасибо.

/а я голову ломал, что за данные в этом 6том байте...

Сообщение отредактировал Alexeus - Jan 15 2009, 12:53
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 15 2009, 12:58
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Alexeus @ Jan 15 2009, 15:52) *
всегда получаю 0х80 или 0b10000000 !!!
Подозреваю, что можно получить и просто 0.
Go to the top of the page
 
+Quote Post
Alexeus
сообщение Jan 15 2009, 13:32
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 14-01-09
Пользователь №: 43 345



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

В данном случае в действительности есть стартовые биты пяти байт равные "0" и шестой равный "1" и, как подсказал Палыч, сохраняя пять байт с "0" и при поступлении шестого со стартовым битом в "1", нужно проверять их сумму (всех 6ти байт) если она равна 0х80 (0b10000000) то пакет считается принятым удачно, и из него берется информация... (пробовал суммировать на пакетах, содержащих информацию о разных режимах)

За что ему большое спасибо! smile.gif

Цитата(Палыч @ Jan 15 2009, 15:58) *
Подозреваю, что можно получить и просто 0.


Ну возможно... Все варианты я не проверял, но в тройке выборочно получил именно 10000000 или если идет младшим битом вперед, то просто еденицу.

Сообщение отредактировал Alexeus - Jan 15 2009, 13:02
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016