08.01.2015, 19:02
|
|
Прописка
Регистрация: 07.08.2006
Адрес: Оренбург
Сообщений: 179
Сказал спасибо: 39
Сказали Спасибо 83 раз(а) в 32 сообщении(ях)
|
Протокол для интерфейса Spi (да и I2c)
С праздниками всех !!!
Собственно, вопрос в заголовке. Есть несколько (3) пИков - надо организовать между ними общение по схеме мастер-слейвы... Но вот как это по-взрослому делается ? не модбас же туда мутить...ведомые маленькие... А просто отсчитывать по 8 битов.. без проверки и квитанций...ну... стремно как-то...процы на разных платах, хоть шлейфы и короткие.
Или на воду дую ?
|
|
|
|
08.01.2015, 19:19
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,031
Сказал спасибо: 2,559
Сказали Спасибо 11,881 раз(а) в 5,958 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
Если двойная избыточность Вам не противна - как двумя пальцами по асвальту.
Каждый байт передается в АСКИшном представлении (2 байта). При этом используются символы от 0 до 9 и от А до F. Все остальные можно использовать для идентификации пакетов, они же и синхропризнаки.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
08.01.2015, 19:40
|
|
Прописка
Регистрация: 07.08.2006
Адрес: Оренбург
Сообщений: 179
Сказал спасибо: 39
Сказали Спасибо 83 раз(а) в 32 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
Сообщение от akegor
|
Если двойная избыточность Вам не противна - как двумя пальцами по асвальту
|
Так-то да.... Но думал , может, есть общепринятое какое решение.. которое не знаю...
|
|
|
|
08.01.2015, 20:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
Зависит от того, какое именно взаимодействие будет: однонаправленное или двухнаправленное. На IIC забейте сразу если чипы на разных платах. Да и если на одной, в принципе, лучше тоже. Если обмен односторонний - используйте TLV. Если двустроронний, то, либо тот же TLV, либо адресация как у SPI EEPROM. Очень желательно наличие даже самой простой контрольной суммы в пакете.
|
|
|
|
08.01.2015, 21:03
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,659
Сказал спасибо: 74
Сказали Спасибо 1,801 раз(а) в 653 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
Попробуйте 1-Wire с контролем по CRC-8.
Достаточно просто, но надёжно и минимум проводов, один сигнальный всего.
|
|
|
|
08.01.2015, 21:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
Сообщение от RECTO
|
Попробуйте 1-Wire
|
Использовал в своё время для пульта: мастер посылает пол пакета(заголовок и состояние светодиодов), пульт дособирает пакет(состояние кнопок) и прицепляет CRC. Всё в одном пакете. Работает. Но только с битовыми флагами. Для передачи данных больших объемов - слишком медленно.
|
|
|
|
08.01.2015, 22:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
Wiza_, вообще-то про синхронные интерфейсы надо забыть, и про СПИ в первую очередь... Микросекундная иголка на ногу клока - и данные сдвинулись на 1 бит
Асинхронные типа УАРТа самое то
|
|
|
|
08.01.2015, 22:13
|
|
Прописка
Регистрация: 07.08.2006
Адрес: Оренбург
Сообщений: 179
Сказал спасибо: 39
Сказали Спасибо 83 раз(а) в 32 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
Сообщение от Wiza_
|
Зависит от того, какое именно взаимодействие будет: однонаправленное или двухнаправленное. На IIC забейте сразу если чипы на разных платах. Да и если на одной, в принципе, лучше тоже. Если обмен односторонний - используйте TLV. Если двустроронний, то, либо тот же TLV, либо адресация как у SPI EEPROM. Очень желательно наличие даже самой простой контрольной суммы в пакете.
|
Двусторонний однозначно... получается все же модбас.. могучая все же штука..
Поразмышляем....применительно к SPI... если урежу регистры в минимум, оставлю только байтовые..адрес устройства - один байт вместо 2х... команды только 03 и 06.... замена CRC16 на CRC8 мне даст чего-нибудь ?
В RTU мне еще признаки начала-конца пакета не нравятся... таймеры-прерывания жалко.... но тут же можно по СS, либо по наличию CLk смотреть... может так ?
Последний раз редактировалось alex6002; 08.01.2015 в 22:36.
|
|
|
|
08.01.2015, 22:16
|
|
Прописка
Регистрация: 07.08.2006
Адрес: Оренбург
Сообщений: 179
Сказал спасибо: 39
Сказали Спасибо 83 раз(а) в 32 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
niXto, заодно(при crc) тогда станет и на иголки наплевать ![Обрадован](images/smilies/icon_surprised.gif) ....ну почти....
Зы... осталось только теперь сообразить - надо вообще тогда уж лезть на СПИ или делать просто юарт в ТТЛ-виде (без преобразования)- на 300 мм хватит ...и тоже ведь можно- по аналогии с 485 еще один пин выделить и кинуть сигнал - работа -ожидание... железно...хм... упростится определение пакета...
Последний раз редактировалось alex6002; 08.01.2015 в 22:37.
|
|
|
|
08.01.2015, 22:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
|
Re: протокол для интерфейса Spi (да и I2c)
Сообщение от niXto
|
вообще-то про синхронные интерфейсы надо забыть, и про СПИ в первую очередь... Микросекундная иголка на ногу клока - и данные сдвинулись на 1 бит
|
Ну удар кувалдой в плату тоже вызовет "неисправимую ошибку" как и иголка. А по теории вероятности: первое возникнуть может чаще. Но от него контрольная сумма не спасет.
А вообще, меня раздражают люди, которые не читая доку на I2C пихают его в разработки, которыми мне приходится пользоваться. По стандарту автора, Philips, длинна интерфейса не может быть больше 40 см. А вот разработчикам из Speclab это видимо не ведомо :\
Сообщение от alex6002
|
получается все же модбас..
|
Получается. Модель OSI штука хоть и не нужная к изучению, но вредная: модбас, TLV и иже с ними - всё таки второй уровень.
Сообщение от alex6002
|
замена CRC16 на CRC8 мне даст чего-нибудь ?
|
Можете просто складывать или xor'ить. Роли не играет.
Сообщение от alex6002
|
В RTU мне еще признаки начала-конца пакета не нравятся...
|
На SPI вам на начало и конец вообще до лампочки. Вы изначально знаете сколько байт хотите получить: столько и "тактите". Не совпадёт контрольная сумма - спросите повторно.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:44.
|
|