mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 USART falsche Ausgabe Terminal


Autor: hugo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich brauche eure Hilfe,

Problem:
Ich sende einen String über den USART2 , leider empfängt das Terminal 
nur komische Zeichen.

Benutze folgendes Board:
STM32-P103

IDE: Eclipse

Mein Code:
http://www.pastebin.com/m1b23db21

Folgender String würd übertragen:
"Buffer Send from USART2 to USART1 using Flags"

Das Terminal empfängt aber das hier (siehe Bild)

In der stm32f10x_conf.h war schon HSE auf 8MHz eingestellt

#define HSE_Value    ((u32)8000000) /* Value of the External oscillator 
in Hz*/

Auf dem Board ist ein 8Mhz oscillator und ein kleiner "Uhrenquarz" 
aufgelötet.

Ich hab auch schon ein wenig im Forum gesucht, da lags es meisten an dem 
Takt muss aber nichts heissen.

Ich hoffe jemand hat ne Idee wie ich das lösen kann.

Vielen Dank schon Mal

Mfg Hugo

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sieht nach falscher baud rate aus.

Autor: hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi nur wie krieg ich die richtige Baudrate raus?

Mfg

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du rufst Clk_Init nicht auf

Autor: hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi , so hab jetzt Clk_Init() aufgerufen, nach RCC_HSEConfig(RCC_HSE_ON);

Zeile 55 -> http://www.pastebin.com/m727d0b53

Leider bekomme ich dieselbe Ausgabe im Terminal

Mfg

Autor: sdv (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht immer noch nach falscher Baudrate aus.

Gast

Autor: hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja du bist der 2. der mir das sagt, wie stell ich die den richtig ein, 
wie kriege ich die richtige raus.

Mfg

Autor: Plan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du schon mal die FWLib von STM angeschaut?
Dort gibt es 12 Demos über UART !

Damit sollte es kein Problem mehr sein die richtige Baudrate und andere 
Parameter ein zu stellen. Bei mir gehts auch und ich nutze 115200 Baud 
bei 8MHz HSI.

Autor: hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich hab mir die eben runtergeladen welche Zip-Datei enthält den ein 
USART Beispiel?
Das einzigste was ich gefunden hab war etwas zu RC-Calibration

Mfg

Autor: Plan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf dieser Seite:
http://www.st.com/mcu/devicedocs-STM32F103RB-110.html

Dieses ZIP Archiv:
http://www.st.com/stonline/products/support/micro/...

In dem Archiv gib es "um0427.zip"
Darin gibt es FWLib\examples\

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soweit ich mich erinnern kann, musst du bei USARTS auch die Clocks 
konfigurieren. Siehe USART_ClockInitTypeDef Struktur und 
USART_ClockInit!

Autor: hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich hab mir ein paar examples anguckt aber es bringt mich 
irgendwie nicht weiter. Liegt wahrscheinlich daran das ich das ich nicht 
verstehe was ich für den USART, für den Taktabschnitt, ändern muss.

@Georg
Diese Funtkionen gibt es nicht mehr, hab mir die Header und C-Datei für 
den USARt angeguckt die sind nicht mehr dabei.

Was ich nicht verstehe ist Clk_Init() -(hab ich aus dem Blink-Flash 
programm von ST kopiert)

Warum da in der initialisierung einmal der intere Clock HSI(8Mhz)
// 1. Cloking the controller from internal HSI RC (8 MHz)
RCC_HSICmd(ENABLE)
und danach der externe Clock HSE(8Mhz) mit
// 2. Enable ext. high frequency OSC
RCC_HSEConfig(RCC_HSE_ON)
aktiviert werden, was soll das bringen, liegt daran der Fehler?

Ich hab gar keien Idee, was ich an meinem Code anpassen muss.

Mfg

Autor: hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sry für doppelpost kann aber leider nicht editieren.

Hab im Datenblatt rausgefunden das man die Wahl zwischen 3 Clock Sources 
hat :
HSE, HSI und Pll

dann gibt es noch eine zweite Clock-Quelle die ich hier aber nicht 
brauche.
Warum also werden den alle 3 aktiviert?

Und im Datenbaltt steht noch wenn man USB benutezen will muss man mit 
Hilfe des PLL auf 45 oder 72Mhz pushen, das wird bei mir auch gemacht 
das ist doch auch unnötig oder?

Kann mir vielleicht jemand Schritt für Schritt sagen was ich aktivieren 
muss und wie ich dann die richtige Baudrate bestimme?

Mfg

Autor: hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So hab den Code nochmal angepasst, terminal zeigt mir leider immer noch 
komische Zeichen.

Vielleicht hilft der angepasste Code bei der Fehlersuche, ich finde den 
fehler nicht :(

http://pastebin.com/m199a10bc

Mfg

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hugo schrieb:

> Warum also werden den alle 3 aktiviert?

Der 8MHz HSI ist von Haus aus ohnehin aktiv, damit startet der 
Controller aus dem Reset. Routinen zur Taktsteuerung werden 
üblicherweise zuerst auf HSI schalten, bevor irgendwas an der PLL 
gedreht wird. Andernfalls sägt man den Ast ab auf dem man sitzt, wenn 
diese Routine nicht nur nach Reset sondern später auch noch aufgerufen 
wird.

HSE ist der Oszillator mit dem Quarz, ohne den gibt es keinen genauen 
Takt.

Die PLL ist nur nötig, wenn du die CPU nicht direkt mit dem HSE 
betreiben willst. Meist will man es schneller, jedenfalls nach den 
ersten Gehversuchen, und dann eben per PLL.

Anfangs empfiehlt es sich für UART-Betrieb, ohne PLL direkt per HSE zu 
arbeiten. Erst wenn das funktioniert, dann kommt der Schritt zur PLL.

Wenn du kein USB verwendest, dann kannst du dir eine Frequenz <= 72MHz 
frei aussuchen, bzw. so frei wie die PLL es zulässt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.