LIN-шлюз не бывает универсальным, его реализация зависит от конфигурации конкретной LIN сети. Ввиду присущей LIN-сети архитектуры MASTER-SLAVE, LIN-шлюз организуется следующим, отличным о CAN-шлюза образом:
Один из интерфейсов LIN контроллера, скажем LIN1 конфигурируется для работы в режиме SLAVE и подключается вместо "оторванного" SLAVE-устройства. Через этот интерфейс диаграмма должна организовать передачу данных "оторванного" устройства по запросу его MASTERа. Для реализации этой задачи необходимо заранее помещать подготовленные для ответа MASTERу данные в один буфер передачи, если "оторванному" устройству принадлежал один LIN-ID или в несколько, (до четырех) буферов передачи (режим MULTISLAVE) если "оторванное" устройство отвечало на запросы MASTERа по нескольким ID.
LIN 2 при этом конфигурируется для работы в режиме MASTER, подключается к "оторванному" устройству и должен полностью заменить ему его родного MASTERа, то есть с заданной периодичностью отправлять ему запросы и пакеты данных предназначенные для него.
Подробно о работе драйвера LIN в различных режимах: http://wiki.canny.ru/index.php?title=CA … %D1%80_LIN
Далее, на основе полученных от интерфейсов данных и возможно дополнительной информации, например состояния входов контроллера, формируются новые сообщения для передачи, с внесением в них необходимых изменений, подменой или фильтрацией данных и т.п.
При этом, самым важным для понимания является то, что в отличие от CAN-шлюза, интерфейсы LIN контроллера работающегов режиме LIN-шлюза не должны быть синхронизированы. То есть LIN 2 может и должен периодически посылать запросы и пакеты "оторванному" устройству в своем, независимом от работы LIN1 ритме, задаваемом например ФБ "Генератор ШИМ".
Какие ID запрашивать, какие посылать, с какой периодичностью и на какие отвечать - зависит от конфигурации конкретной LIN-сети которую вы будете "разрывать". Изучить работу LIN сети и получить необходимые для реализации LIN-шлюза данные, можно при помощи утилиты Canny CAN/LIN-монитор: http://wiki.canny.ru/index.php?title=CA … N)_monitor
длина этого сообщения известна... пусть будет 32
Максимальный объем данных передаваемый в одном сообщении LIN составляет восемь байт.