Datasheet

EA eDIPTFT70-A
Seite 10
Technische Änderung vorbehalten.
Wir übernehmen keine Haftung für
Druckfehler und Applikationsbeispiele.
DATENÜBERTRAGUNGSPROTOKOLL (SMALL PROTOKOLL)
Das Protokoll ist für alle 3 Schnittstellenarten RS-232, SPI und I²C identisch aufgebaut. Die Datenübertragung
ist jeweils eingebettet in einen festen Rahmen mit Prüfsumme „bcc“. Das EA eDIPTFT43-A quittiert dieses
Paket mit dem Zeichen <ACK> (=$06) bei erfolgreichem Empfang oder <NAK> (=$15) bei fehlerhafter
Prüfsumme oder Empfangspufferüberlauf. In jedem Fall wird bei <NAK> das komplette Paket verworfen und
muss nochmal gesendet werden.
Ein <ACK> bestätigt lediglich die korrekte Übertragung. Ein Syntax-Check erfolgt nicht.
Hinweis: <ACK> muss eingelesen werden.
Empfängt der Hostrechner keine Quittierung, so ist mindestens ein Byte
verloren gegangen. In diesem Fall muss die eingestellte Timeoutzeit
abgewartet werden, bevor das Paket komplett wiederholt wird.
Die Anzahl (len) der Rohdaten pro Paket kann max. 255 Byte betragen.
Befehle die größer als 255 Byte (z.B. Bild laden ESC UL ...) müssen auf
mehrere Pakete aufgeteilt werden. Alle Daten in den Paketen werden
nach korrektem Empfang von EA eDIP wieder zusammengefügt.
SMALL PROTOLKOLL DEAKTIVIEREN
Das Protokoll ist für alle drei Schnittstellen RS-232, I²C und SPI
identisch. Für Tests kann das Protokoll durch L-Pegel an
Pin17(DPROT) abgeschaltet werden. Im normalen Betrieb ist allerdings
die Aktivierung des Protokolls unbedingt zu empfehlen. Andernfalls
wäre ein möglicher Überlauf des Empfangspuffers nicht zu erkennen.
>
<DC1> len data... bcc
<
<ACK>
>
<DC2> 1 S bcc
<
<ACK>
<
<DC1> len data... bcc
Befehle/Daten zum Display senden
Inhalt des Sendepuffers anfordern
DIE PAKETVARIANTEN IN EINZELNEN
<DC1> = 17(dez.) = $11
<ACK> = 6(dez.) = $06
len = Anzahl der Nutzdaten in Byte (ohne Prüfsumme, ohne <DC1>)
bcc = 1 Byte = Summe aus allen Bytes inkl. <DC1> und len, Modulo 256
Eingerahmt von <DC1>, der Anzahl der Daten
"len" und der Prüfsumme "bcc" werden die
jeweiligen Nutzdaten übertragen. Als Antwort
sendet das Display <ACK> zurück.
Die Befehlsfolge <DC2>, 1, S, bcc entleert den
Sendepuffer des Displays. Das Display
antwortet zuerst mit der Quittierung <ACK> und
beginnt dann alle gesammelten Daten wie z.B.
Touchtastendrücke zu senden.
<DC2> = 18(dez.) = $12 1 = 1(dez.) = $01 S = 83(dez.) = $53
<ACK> = 6(dez.) = $06
len = Anzahl der Nutzdaten in Byte (ohne Prüfsumme, ohne <DC1>)
bcc = 1 Byte = Summe aus allen Bytes inkl. <DC1> und len, Modulo 256
void SendData(unsigned char *buf, unsigned char len)
{
unsigned char i, bcc;
SendByte(0x11); // Send DC1
bcc =
0x11;
SendByte(len); // Send data length
bcc = bcc + len;
for(i=0; i < len; i++) // Send buf
{ SendByte(buf[i]);
bcc = bcc + buf[i];
}
SendByte(bcc); // Send checksum
}
C-Beispiel zum Senden eines Datenpaketes
Clear display and draw a line from 0,0 to 799,479
> <DC1> len ESC
D L
ESC
G D 0 0 799 479 bcc
$11 $0E $1B $44 $4C $1B $47 $44 $00 $00 $00 $00 $1F $03 $DF $01 $72
< <ACK>
$06
Beispiel für ein komplettes Datenpaket