In dem Zusammenhang ist PWM die "J1850" Fahrzeugdiagnose-Schnittstelle,
nehme ich an.
LIN ist nicht gleich LIN. Du musst die RX-Frames des originalen
LIN-Slave kennen, also ein LDF-File zum Original vorhandenen Bus haben.
Dein originales LIN-Gerät hat für Diagnose eigene LIN-Diag-RX und
LIN-Diag-TX Frame-IDs. Kennst du die?
Außerdem hat man LIN eher nicht als Diagnose-Schnittstelle zugänglich,
bzw. Es ist so nicht vorgesehen. Es gibt in der ISO15031 für OBD
vorgesehen PWM, VPW, CAN, usw... aber kein LIN! Technisch geht das
natürlich, weil wer ISO-TP spricht, kann auch OBD und UDS drauf setzen.
Aber wie gesagt, OBD über LIN steht nicht in der Norm...
Um das Problem richtig zu verstehen, du willst also dass die folgenden 4
Modi unterstützt werden:
LIN-Master --> [DeinGerät] --> PWM-Gerät
PWM-Quelle --> [DeinGerät] --> LIN-Slave
LIN-Master --> [DeinGerät] --> LIN-Slave
PWM-Quelle --> [DeinGerät] --> PWM-Gerät
Automatisch erkennen dürfte Empfangsseitig nicht so schwierig werden.
LIN läuft als NRZ mit Ruhepegel/Space KL30 bzw. KL15, Dominant/Mark KL31
und immer 19.2kBaud, also
52μsec(https://www.emotive.de/wiki/index.php?title=LIN).
Da gibts bei LIN Start-Of-Frame mit dem Break >13×T_Bit, dann das
0x55-Sync-Byte, ein gut erkennbares Muster. PWM hingegen mit 64μsec <
T_Bit < 128μsec geht da sehr gemächlich
vor(https://www.emotive.de/wiki/index.php?title=SAE_J1850). Da würde dir
der für LIN konfigurierte UART nur Gulasch liefern.
Automatisch erkennen auf Sendeseite wird da schon schhwieriger. Man
könnte es mit try&error zuerst mit PWM versuchen, wenn keine Antwort
kommt mit LIN.
mfg mf