JETI-Protokol

Gast #3388832
Lesenswert?

Hallo,

ich versuche gerade per JETI Daten auf dem Rückkanal vom RX zur JETI-Box 
zu übertragen.
Ich habe dazu an meinem µC die Rx mit der Tx Leitung über eine 1n4007 
verbunden. An der Rx(Anodenseite) ist der JETI-RX(2.4EX) an den Port 
(Ext.) angeschlossen.

Zum Testen sende ich 34 Bytes 0xFE, 32 x'H', 0xFF.

Die JetiBox zeigt den gefundenen RX an und auch die RX-Spannung (3,3V). 
D.h. der RX wurde gefunden. Der TX piepst dann einmal lang, pause, usw. 
Eine Anzeige meines Textes bekomme ich nicht.

Habe ich noch was übersehen? Muss ich noch was beachten?

Frank
Gast #3389859
Lesenswert?

Hallo Nils,

danke für Dein Angebot mit dem Nachschauen. Ich habe es nach dieser 
Anleitung gemacht:
http://www.mikrokopter.de/ucwiki/JetiBox


Hallo Peter,

wenn man so tief an einem Problem arbeitet fällt es (mir) schwer einen 
Schritt zurück zu machen :-)

Also:
Das RC Übertragungssystem ist ein JETI duplex (2,4EX). Sender und 
Empfänger.

Verkabelung hier abgeschaut:
http://www.mikrokopter.de/ucwiki/JetiBox

JETI-Protokol:
http://www.jetimodel.com/en/Telemetry-Protocol/JETI-Telemetry-Communication-Protocol/

Mein STM32 ist wie folgt initialisiert:
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_StopBits = USART_StopBits_2;
USART_InitStructure.USART_Parity = USART_Parity_Odd;

Baudrate passt. Das kann ich mit dem Scope sehen.

Code:
1
void SendJeti(void)
2
{
3
uint16_t i = 0;
4
  
5
  //Framebeginn
6
  while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
7
  USART_SendData(USART1, 0x00FE);
8
  
9
  for (i=1; i<=32; i++)
10
  {
11
    //Senden von 32 x 'H'
12
    while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
13
    USART_SendData(USART1, 0x0148);
14
  }
15
  
16
  //Frameende
17
  while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
18
  USART_SendData(USART1, 0x00FF);
19
  
20
  //Antwort abwarten
21
  wait_ms(50);
22
}

Gesendet wird auch, sieht man mit dem Scope.


Frank

P.S. Das mit dem Piepssignal hat sich geklärt. Es war Akkuunterspannung 
des Rx (Wegen der 3,3V Spannungsversorgung) Ich versorge den Rx jetzt 
mit 5V. Damit ist das Piepsen weg. Unter Mx an der Jetibox wird aber 
weiterhin nix angezeigt :-(
Gast #3390566
Lesenswert?

Hallo,

bin wieder etwas weiter.
Die gedrückten Taster an der JetiBox kann ich jetzt im µC erkennen und 
Aktionen ausführen. Leider zeigt mit die Box immer noch keinen Text an. 
Nur "Mx Connecting".

Kann es sein das es irgendeinen Konflikt mit dem "alten-" und dem neuen 
"EX"-Protokoll gibt? Ich hatte das so verstanden, das man beide parallel 
betreiben kann.

Frank
#3390580
Lesenswert?

Also ich mache Sensoren für MPX M-Link, aber ich kann dein Problem grade 
überhaupt nicht verstehen.
Ich kenne das Jeti Protokoll nicht. Aber reicht es die richtigen Daten 
über den UART rauszuschreiben? Gibts da keinerlei Timings-Constraints? 
Sonstige Dinge zu beachten? Bei M-Link ist das Timing wichtig. Sendest 
du exakt nach Spezifikation?

gruß cyblord
Gast #3390970
Lesenswert?

Hallo cyblord,

laut Scope sende ich nach Spec. Die Übertragung geht über einen Kanal 
der Rx und Tx vom µC über eine Diode zusammenfasst. Dann gibt es beim 
Protokoll 4 Varianten. Es müsste eigentlich alles passen. Eigentlich :-)

Frank
(Firma: Schweigstill IT) Persönliche Seite #3391035
Lesenswert?

Das Problem liegt beim USART. STM erlaubt nur insgesamt neun Datenbits, 
und zwar inklusive Parität. Deswegen bedeutet USART_WordLength_9b nicht 
etwa 9 Bit + Parität. Das Jeti-Duplex-Protokoll benötigt jedoch beides, 
d.h. echte neun Nutzdatenbits plus Parität.

Die ATmega-Prozessoren, wie sie von Jeti durchgängig eingesetzt werden, 
beherrschen jedoch die geforderte Betriebsart.

Um mit einem STM32 arbeiten zu können, muss man zu anderen Tricks 
greifen, z.B. zu einem Software-UART mit DMA. Das funktioniert in 
unseren Fernsteuerungen (iVol 2G16 usw.) mit Jeti-Modul(en) und 
Jetibox-Anschluss einwandfrei.
#3391095
Lesenswert?

Ich habe mir mal ein Menü für einen Multiwii-Kopter gebaut... FÜr ein 
AIO Pro V1. Da sitzt aber ein Atmega drauf... Habe mir dafür mehrere 
Arduino Libs zusammenkopiert ;-). Wenn du mir deine Emails als PM 
schickst mach ich dir das Projekt als Zip fertig, evtl kannst du 
abkupfern.

Auf der Empfänger Seite geht auch die Anleitung von Jeti nicht, da muss 
man sich an die von mikrokopter halten (hast du ja schon gemacht)

Auf der Senderseite hab ich es damals aber anders gelöst (kp warum):
Rx---->100Ohm-------+------->4k7Ohm ----> Jeti TG2 Pin D
tx------------------^

So lief es bei mir.

Gruß
Ert
Gast #3391096
Lesenswert?

Hallo Andreas,

danke für Deine Antwort.

Du meinst also die USART_WordLength_9b sind inklusive der 
USART_Parity_Odd? Das wäre ja ultradämlich :-(

USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_StopBits = USART_StopBits_2;
USART_InitStructure.USART_Parity = USART_Parity_Odd;

Ich kann das 0xFO des Rx empfangen und auswerten!?


Gruß
Frank
Gast #3392027
Lesenswert?

Hallo,

so. Wieder etwas weiter gekommen.
Ich habe mir jetzt erstmal über einen 104µs Timerinterupt eine eigene 
USART-Senderoutine gebaut. Die Bits sind 104µs lang und ich kann jetzt 1 
startbit, 9 daten bits, 1 parity(odd) und 2 stoppbits senden. Laut Scope 
ist alles toll! Leider zeigt die verd* JetiBox immer noch nichts an :-(. 
Nur "Mx Connecting".

Am Rx kann ich auf der Zusammengefassten D-Leitung alle 200ms ein 0xF0, 
das den Tastenzustand der Box wiedergibt, ablesen (Scope). Ich sende 
dann auf Tastendruck (Rechts) ein Datenpacket mit den 32 Byte Nutzdaten. 
Demnach bin ich (µC)Slave?

Bei Start- und Ende"byte" ist das 9. Bit = 0 und bei den 32 Daten"bytes" 
ist das 9. Bit = 1. Dies kann ich auch alles auf dem Scope sehen und ich 
bekomme das Protokoll mit dem Scope auch entschlüsselt. Er zeigt mit 
zwar Parityfehler an, was aber auch nicht verwunderlich ist, da ich beim 
Scope dieses besch* Sonderformat auch nicht genau einstellen kann.

Auf Senderseite scheinen die Daten auch gar nicht erst anzukommen 
(Scope). Muss ich im Tx oder Rx noch irgendwas parametrieren, damit die 
Daten auch an die Box gesendet werden? habe in der Anleitung nichts dazu 
gefunden (oder überlesen)

Frank
#3392514
Lesenswert?

Hallo,

ich hab auch mal Daten mit einem Mikrcontroller auf der JetiBox 
ausgegeben. Ich musste alle Info mühselig aus dem Internet zusammen 
kramen und selber messen. Hab dann per Mail Jeti gefragt ob sie nicht 
die Daten veröffentlichen wollen. Jetzt suche ich im Internet und finde 
gleich das passende PDF.
Vllt. bringt es dir was.

mfg.
Moritz
Angehängte Dateien:
Gast #3392664
Lesenswert?

Hallo Moritz,

danke für Deine Antwort. Das Dokument kenne ich. Es ist meine 
Arbeitsgrundlage :-)

Nachdem ich mit dem 9 Bit Modus beim STM32 meine Probleme hatte sende 
ich jetzt Spec. konform.
Muss man beim Einschalten noch irgendeine Initialisierung anstossen oder 
müssten die "Simple Text" Daten unter "Mx" sofort angezeigt werden?

Ich sende jetzt nach jeder 0xF0 oder Tastensendung der Box einen 34 
"Byte"Frame. Gibt es noch irgendetwas anderes zu beachten?

Frank
Gast #3393452
Lesenswert?

Hallo,

leider immer noch keinen Erfolg:-( Kann es sein, das der Jeti Rx nicht 
mit den 3,3V des STM32 zurechtkommt? Die Sofwareusart arbeitet vom 
Timing her perfekt. Laut Spec. müsste es gehen:

Logic levels:
Maximum level of logical zero “0”: 1,5V
Minimum level of logical one “1”: 3,0V

Muss man die Verbindung noch initialisieren?

Frank

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren