STM32F051 GPIO Output Tristate nicht möglich?

OP (Firma: KHTronik) #3823259
Lesenswert?
• ▲
▼
Hallo,
beim Einsatz des STM32F051 an einem seriellen Bus habe ich ein 
Protokoll, bei dem ich zuerst am Bus mithören muss, und wenn die 
richtige Adresse auf dem Bus erscheint auf der selben Leitung des Busses 
sende. Ausgang der seriellen Schnittstelle und deren Eingang wollte ich 
direkt verbinden. Dies setzt allerdings voraus, dass ich den Ausgang 
während der Erkennungsphase auf "High-Z" setzen muss. Der Versuch, den 
IO-Pin der seriellen Ausgabe nur dann zu aktivieren funktioniert 
grundsätzlich, aber bisher sind alle Versuche gescheitert, den Pin auf 
High-Z zu setzen.
Hat jemand eine Idee, wie ich einen GPIO-Pin zwischen "Serial out" und 
"High-Z" wechseln lassen kann?
Dass man einen Bustreiber mit OE verwenden kann ist mir bekannt :-).
Grüße, Kurt
Gast #3823411
Lesenswert?
• ▲
▼
>Das habe ich versucht. Das Signal am seriellen Eingangspin bricht dann
>zusammen. Genau deswegen bin ich etwas ratlos.

Dann hast du was falsch gemacht. Alle anderen hier
sind genauso ratlos wie du weil niemand sehen kann
welchen Unsinn du programmiert hast.
OP (Firma: KHTronik) #3823796
Lesenswert?
• ▲
▼
OK, dann also die Code-Aausschnitte zur Intialisierung und Umschaltung 
der Pin_Funktion:
Initialisierung: (Pin als Input)
1
  GPIO_InitTypeDef GPIO_InitStructure;
2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
4
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
5
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
6
  GPIO_Init(GPIOA, &GPIO_InitStructure);
Umschaltung auf TX-Pin für USART2:
1
  GPIO_InitTypeDef GPIO_InitStructure;
2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
4
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
5
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
6
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
7
  GPIO_Init(GPIOA, &GPIO_InitStructure);
8
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_1);
Umschaltung auf Input:
1
  GPIO_InitTypeDef GPIO_InitStructure;
2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
4
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
5
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
6
  GPIO_Init(GPIOA, &GPIO_InitStructure);

Da im Grundzustand, also Pin als Input, das Signal OK ist, sollte das 
Problem in der erneuten Umschaltung auf Input liegen. Ich sehe es aber 
nicht :-(.
Grüße, Kurt

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.