Arduino Mikrocontroller Tutorials - Schnittstellen

SENT Protokoll

Das SENT Protokolle kommt in der Fahrzeugindustrie zum Einsatz wenn Sensorwerte in hoher Auflösung und in festen Zeitintervallen an ein Steuergerät gesendet werden müssen. Beim SENT Interface handelt es sich nicht um ein Master Slave Prinzip. Selbstständig sendet ein Sensor (ähnlich wie ein Analogsensor) ständig seine Messwerte. Ganz gleich ob ein angeschlossenes Steuergerät diese empfängt.
SENT ist eine "Low Cost" Alternative zum LIN Bus und in der Norm SAE J2716 spezifiziert.

Pinbelegung

EIn SENT Sensor hat drei Anschlüsse. Die Spannungsversorgung von +5V, GND und einen Anschluss für die Datenübertragung (5V Pegel).

SENT Signal

Beim SENT Signal wird die binäre Information nicht in verschiedenen Pegeln übertragen, sondern in verschiedenen Pulsdauern. Der 'Idle' Pegel ist zunächst +5V. Jede Information beginnt mit einem LOW Pegel von immer gleicher Länge. Der zeitliche Abstand zwischen den LOW Pegeln repräsentiert die binäre Information von jeweils 4 bit (einem Nibble).

Die zeitliche Grundeinheit von der jedes Signal ein binär entsprechend vielfaches lange dauert nennt man "Tick". Ein Tick kann abhängig vom Sensor zwischen 3 und 90 µs lange sein. Die jeweils gleich langen LOW Pulse dauern mindestens 5 Ticks.

SENT Botschaft

Synchronisation Pulse

Eine einzelne SENT Message beginnt mit einem Sync Pulse von 56 Tick Länge. Über die Sync Dauer kann der Mikrocontroller daher die Tick-Dauer für die folgenden Datenbits bestimmen. Die Zeitdauer wird beim Sync Pulse und auch bei allen weiteren immer von der beginnenden fallenden Flanke bis zur darauffolgenden fallenden Flanke gemessen.

Beispiel: Tick = 663µs ÷ 56 = 11,83µs

Status-Nibble

Das Status-Nibble (4 bit) enthält Informationen wie Fehlermeldungen. Es binäre Wert wird über die Länge von der beginnenden fallenden Flanke bis zur darauffolgenden bestimmt. 12 Ticks entspricht binär 0000. Jeder Tick der das Signal länger ist erhöht den Binärwert um 1.

12 Ticks= 0b0000, 13 Ticks= 0b0001, 14 Ticks= 0b0010, 15 Ticks= 0b0011, ..., 27 Ticks = 0b1111

Beispiel: 284µs ÷ 11,83µs - 12 = 12 (bzw. 0b1100)

Slow Message
Mit den beiden hochwertigen bits (B3 und B2) können Slow Message Informationen übertragen werden. Zum Beispiel die Seriennummer des Sensors. Mit jeder Fast Message (den Sensormesswerten in den Daten-Nibbeln) werden so 2 bit einer anderen Botschaft mitgesendet die im empfangen Mikrocontroller zu einer Slow Message zusammengesetzt werden.

Daten-Nibble

Bis zu 6 Datenimpulse zu je 4 bit werden übertragen. Der Binärwert errechnet sich genauso wie beim Status und CRC Nibble.

Beispiel D1: 142µs ÷ 11,83µs - 12 = 0 (bzw. 0b0000)

Beispiel D2: 201µs ÷ 11,83µs - 12 = 5 (bzw. 0b0101)

Beispiel D3: 190µs ÷ 11,83µs - 12 = 4 (bzw. 0b0100)

Beispiel D4: 142µs ÷ 11,83µs - 12 = 0 (bzw. 0b0000)

Beispiel D5: 201µs ÷ 11,83µs - 12 = 5 (bzw. 0b0101)

Beispiel D6: 320µs ÷ 11,83µs - 12 = 15 (bzw. 0b1111)

Im Beispiel wurde das "Single Secure Message Format" nach SAE J2716 verwendet. Dabei wird ein Sensorwert mit 12 bit übertragen. (D1=MSN, D2=MidN, D3=LSN). Die beiden nächsten Nibble sind ein 8 bit MessageCounter der von 0-255 zählt und anschließend wieder bei 0 beginnt (D4=MSN, D5 LSN). D6 ist ein weiteres Sicherheitsmerkmal. Das Nibble enthält das inversen MSN Daten-Nibble (D6=D1)

CRC-Nibble

SENT Botschaft

Dieser Impuls wird wie die Daten-Nibble bzw das Status-Nibble decodiert

Die SAE Norm gibt das Polynom (x⁴ + x³ + x² + 1) für die Berechnung und auch einen 'Seed' (0b0101) vor. Aus dem Polynom kann man den Divisor festlegen. 1×X⁴ + 1×X³ + 1×X² + 0×X¹ + 1×X⁰ (= 0b11101)

Die Berechnung der CRC Checksumme wird nur aus den Daten-Nibbel gebildet. Also ohne Status-Nibbel. Am Ende alle Daten wird für die Berechnung noch der 'Seed' angehängt. Danach erfolgt die CRC Berechnung. Wenn sich der Rest (=Remainder) nicht mehr durch den Divisor teilen lässt ist die CRC Checksumme gefunden.

Pause-Pulse

Der Pausen Puls zwischen zwei Fast Messages ist optional. Oft dauert er je nach Message-Inhalt unterschiedlich lange, so dass in Summe die Messages immer in gleichen Zeitintervallen gesendet werden.