Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.02.2009, 17:11
|
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
вопрос по протоколу обмена
Здраствуйте форумчане.пишу протокол обмена по и2с.и у меня возник вопрос по поводу контрольной суммы.
значитс так если мастер передает то я работаю по следующему протоколу
данные от мастера---слейву---слейв контрольную сумму--мастеру(этот цикл повторяется до тех пор пока КС не совпадет или не более 5-ти циклов)
если местер принимает данные от слева то так:
данные от слейва++контрольную сумму---мастеру--мастер этот цикл повторяет до тех пор пока КС не совпадет или не более 5-ти циклов)
Так вот меня интересует ВАШЕ мнение по поводу протокола(я понимаю что не америку открываю).также мне не понятно как обьяснить слейву что передача прошла нормально.может в конце протокала добавить посылку слеву что все ОКЕЙ????
|
|
|
|
15.02.2009, 18:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
А что так все сложно? там же есть подтверждение от принимаемого,при при девятом импульсе на SCL приемник должен потвердить прием,опуская шину SDA.
|
|
|
|
15.02.2009, 21:04
|
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
Сообщение от CERGEI1982
|
А что так все сложно? там же есть подтверждение от принимаемого,при при девятом импульсе на SCL приемник должен потвердить прием,опуская шину SDA.
|
подтверждение то есть а вот если данные пришли кривыми или допустим слейв подключается во время работы мастера.вобщемто я пробовал простой обмен без КС-то были проблемы.
|
|
|
|
15.02.2009, 22:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: вопрос по протоколу обмена
Сообщение от Gladkih
|
если мастер передает то я работаю по следующему протоколу данные от мастера---слейву---слейв контрольную сумму--мастеру
|
А зачем Слейв передаёт Мастеру КС? Пусть Слейв Мастеру даёт ОК или Eror.
Сообщение от Gladkih
|
если местер принимает то так: данные от слейва + контрольную сумму---мастеру--
|
А зачем Слейву знать, Мастер принял правильно или нет? Если нет он сам запроси заново.
|
|
|
|
16.02.2009, 17:20
|
|
Гражданин KAZUS.RU
Регистрация: 24.11.2006
Адрес: ДНР
Сообщений: 612
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
|
Сообщение от Gladkih
|
подтверждение то есть а вот если данные пришли кривыми или допустим слейв подключается во время работы мастера.вобщемто я пробовал простой обмен без
КС-то были проблемы.
|
пардон, недогнал: "..слейв подключается во время работы мастера" - это типо модули от разных источников запитаны? или что-то другое?
и еще: у тебя в протоколе посылки переменной длины или фиксированной?
А в общем - алгоритм передачи КС - по-мойму очень даже правильный.
|
|
|
|
16.02.2009, 21:26
|
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
Сообщение от rubel
|
Сообщение от Gladkih
|
подтверждение то есть а вот если данные пришли кривыми или допустим слейв подключается во время работы мастера.вобщемто я пробовал простой обмен без
КС-то были проблемы.
|
пардон, недогнал: "..слейв подключается во время работы мастера" - это типо модули от разных источников запитаны? или что-то другое?
и еще: у тебя в протоколе посылки переменной длины или фиксированной?
А в общем - алгоритм передачи КС - по-мойму очень даже правильный.
|
вобщем насчет включения ну допустим мастер работает некоторое время(мастер и слейв на разных платах) а слейв подключается через некоторое время.вобщемто я уже немного изменил протокол обмена указанный выше теперь он у меня окончательный.я добавил при передаче данных мастером данных слейву после данных передаю КС затем принимаю от слейва его контрольную сумму.фишка в том что слейв теперь знает что он данные принял правильно.вобщем то спасибо за критику.
|
|
|
|
16.02.2009, 23:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Шина I2C допускает "горячее" подключение. С этим проблем быть не должно. КС можно ввести в пакет, а вот возвращать ее назад не стоит - большие накладные расходы по времени. Достаточно в конце пакета передать "холостой" байт, и по подтверждению от слейва на него судить о том, прошла передача или нет. ACK - передаем следующий пакет, NACK - повтор предыдущего. Ошибки на I2C - редкость и вводить большой "оверхед" для борьбы с ними ИМХО не стоит.
|
|
|
|
17.02.2009, 11:32
|
|
Прописка
Регистрация: 09.06.2007
Сообщений: 96
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Обычно обмен организован следующим образом: Мастер выдаёт на шину посылку которая содержит адрес слейва, свой адрес, данные, контрольную сумму. После этого Мастер взводит таймер и ждёт ответа. Если ответ пришёл, таймер выключается, если таймер сработал, повторяется попытка(посылка отправляется ещё раз). Слейв распознав в команде свой адрес отвечает посылкой: адрес мастера, свой адрес, данные, контрольная сумма. Если при расшифровке посылки найдена ошибка, то ПОСЫЛКА ИГНОРИРУЕТСЯ!
Это хороший алгоритм, работает чётко.
|
|
|
|
17.02.2009, 12:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от BigMazzi
|
Это хороший алгоритм, работает чётко.
|
Это явно не для I2C. Тут мало того, что чтение инициируется мастером, так и тактирование идет тоже от него. Просто ждать можно очень долго. Либо меняется топология шины - уже нет мастера и слейвов, а есть сплошные мастера. Для этой шины такая топология крайне редка.
|
|
|
|
17.02.2009, 12:54
|
|
Прописка
Регистрация: 09.06.2007
Сообщений: 96
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Сообщение от kison
|
Это явно не для I2C. Тут мало того, что чтение инициируется мастером, так и тактирование идет тоже от него.
|
Это всего лишь аппаратная реализация.
Сообщение от kison
|
Просто ждать можно очень долго.
|
Это завист от установки таймера и количества попыток, а эти величины зависят от задачи. После превышения количества попыток мастер понимает, что связи нет.
Сообщение от kison
|
Либо меняется топология шины - уже нет мастера и слейвов, а есть сплошные мастера. Для этой шины такая топология крайне редка.
|
Используйте арбитраж.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:57.
|
|