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
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
Ja du bist der 2. der mir das sagt, wie stell ich die den richtig ein, wie kriege ich die richtige raus. Mfg
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.
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
Auf dieser Seite: http://www.st.com/mcu/devicedocs-STM32F103RB-110.html Dieses ZIP Archiv: http://www.st.com/stonline/products/support/micro/files/stm32f10x_fw_archive.zip In dem Archiv gib es "um0427.zip" Darin gibt es FWLib\examples\
Soweit ich mich erinnern kann, musst du bei USARTS auch die Clocks konfigurieren. Siehe USART_ClockInitTypeDef Struktur und USART_ClockInit!
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
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
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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.