LINUX.ORG.RU

Протокол для общения по serial порту.

 , , ,


0

4

Хочу сделать адаптер Can2Usb на основе esp32 + mcp2518fd. Данные хочу прокачивать через rs232. На большинство плат сейчас стоит достаточно скоростной адаптер типа cp2102N со скоростью до 3мб. Поток который надо прокачивать будет около 1.5-2 мб. Есть ли какие-то стандартные протоколы для работы по serial? Я пока просто protobuff прямо в бинарном виде передаю с разделителями.

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

или ты хочешь что-то совсем стандартное

Morin ★★★★
()

Если надо сделать фрейминг поверх битстрима, то HDLC.

iliyap ★★★★★
()

при чем здесь rs232 ?? в нем как минимум нет адресов, значит надо будет костылить проткол.
делаете железяку, к железяке пишете драйвер. в операционку драйвер светит виртуальным файлами устройств. классика юникс жанра.
подробности в https://www.kernel.org/doc/Documentation/networking/can.txt
плюс поддержки онной спецификации - работа пакета стандартных can-utils

pfg ★★★★★
()
Ответ на: комментарий от pfg

На железке стоит чип типа cp2104N. Он в операционку светит как serial. Драйвер писать не нужно, он уже в опреационке есть. Вот поверх этого драйвера нужен быстрый протокол, который был бы например устойчив к постере символов, их искажению, и имел маленькие требования т.к. эмбедед.

vromanov ★★
() автор топика
Ответ на: комментарий от vromanov

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

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

SZT ★★★★★
()
Ответ на: комментарий от SZT

задача до конца не ясна, зачем усложнять, если скорее всего обойдется контрольными суммами

Morin ★★★★
()
Ответ на: комментарий от vromanov

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

Morin ★★★★
()

Как и что будет передаваться? Сплошной поток или запрос/ответ? Какие типы данных?

anonymous
()
Ответ на: комментарий от SZT

С этим сталкивались в UUCP, можно там посмотреть.

ABW ★★★★★
()

Можно взять просто SLIP для фрейминга, добавить адресацию по желанию. Есть готовая реализация: wake. Можно использовать как есть, можно взять за основу.

Beewek ★★
()

может обычный MODBUS сверху натянуть?

splinter ★★★★★
()

Такие скорости для RS достижимы только на коротких расстояниях внутри платы, если что.

anonymous
()
Ответ на: комментарий от anonymous

Внутри платы и есть. Идет до чипа преобразования serial->USB. Дальше USB

vromanov ★★
() автор топика

а msgpack не подойдёт? protobuf для микроконтроллеров жирноват. Под L2 для serial есть SLIP, PPP, в каком-то смысле AT команды. Есть новая волна вроде https://github.com/lexus2k/tinyproto

Есть комбайны расчитанные на передачу конкретных показателей типа https://github.com/Overdrivr/Telemetry или модбасов

anonymous
()

Предлагаю гнать бинарные пакеты (можно хоть напрямую CAN-пакеты), завёрнутые в base64, а их уже слать по RS232 разделяя переносами строк.

KivApple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.