Hallo, habe folgendes Problem, ich sende über einen FTDI eine Zeichenkette aus. Diese wird mit Hterm eingelesen. Allerdings gibt es da ein Problem mit dem ASCii, da ich keine Zeichenfolge bekomme (siehe Bild). Habe schon alles Probiert, auch das Programm für den UART funktionieren. Vielleicht hat jemand einen Tipp woran es liegen könnte. Vielen Dank Theoretiker87
:
Bearbeitet durch User
Hallo, habe ich auch gedacht, aber auf den Controller ist eine Baudrate von 9600 und auf Hterm auch. Auch auf dem COM-Port sind 9600 eingestellt. MFG Theoretiker87
Sven A. schrieb: > ich sende über einen FTDI eine Zeichenkette aus. Über welchen? Wenn er selbst aufgebaut ist könnte er evtl. (noch) nicht richtig funktionieren. Rx und Tx vertauschen ist bei solchen Chips auch ein beliebter Fehler.
Vielleicht hast du bei deinem Mikrocontroller die Baudrate oder den Taktgeber falsch konfiguriert. Bei AVR ist die CLKDIV8 Fuse ein typischer Knackpunkt.
nfet schrieb: > Falsche baudrate eingestellt Das erste was man ausprobiert! Sven A. schrieb: > habe ich auch gedacht, Mach's einfach! Gruss Chregu
Hallo, vielen Dank für die zahlreichen Antworten, Die Veränderung der Baudrate zu 1200 oder auch zu 300 hat nix gebracht :( Ich verwende das STM32F407 Discovery board und einen Vorgefertigten FTDI 232RL dieser ist richtig auf dem PCB. Es stimmt einfach die Zeichenkette nicht zu ASCii, verstehe den fehler nicht, dass Programm funktioniert mit dem gleichen Mikrocontroller auf einem PCB layout perfekt, nur nicht auf dem Disco Board mit dem gleichen Controller.... MFG Theoretiker 87
Dann sicher falsche clocks eingestellt (anderer externer Oszillator HSE) oder gar keiner...
Sven A. schrieb: > welche clocks meinst du genau ?? Wenn du keine Clocks bewusst eingestellt hast dann ist das dein Fehler. Du musst dich darum kümmern. nfet schrieb: > (anderer externer Oszillator HSE) Er meint vermutlich dass du auf den beiden verschiedenen Boards eine unterschiedliche Taktquelle hast.
Hallo, wie ändere ich die Taktquelle ?? Welche Timer soll ich ändern ?? Woher weiß ich welcher Frequenz der FTDI hat. da ich auf dem STM Board den Timer für den UART fest eingestellt sind. auch die Frequenz der GPIO sind fest..... mfg Theoretiker
Sven A. schrieb: > wie ändere ich die Taktquelle ?? RTFM Sven A. schrieb: > Woher weiß ich welcher Frequenz der FTDI hat. Der FTDI Chip bekommt vom PC über USB die Datenrate eingestellt. Sven A. schrieb: > da ich auf dem STM Board den Timer für den UART fest eingestellt sind. Es gibt keinen Timer für UARTs. Sven A. schrieb: > auch die Frequenz der GPIO sind fest..... Das ist in diesem Zusammenhang belanglos. --> Kümmere dich um die Takt-Einstellung. Lerne wie das zu konfigurieren ist. Deine Antworten lassen darauf schliessen dass du dein System bei Weitem noch nicht im Griff hast.
Alle STM32 Mikrocontroller haben ein sehr variables Taktsystem. Sie starten mit einem internen 8Mhz R&C Oszillator. Per Software solltest du auf einen externen Quarz umschalten, da R/C Oszillatoren für serielle Schnittstellen nur bedingt geeignet sind (zu ungenau, vor allem bei Spannungen ungleich 3,3V oder wenn die Temperatur von 25°C abweicht). Die Quarz-Frequenz kann durch eine PLL intern erhöht werden. Dann gibt es zahlreiche Vorteiler, mit denen man den Takt wieder reduziert. Aus diesem eventuell reduzierten Takt gewinnt die USART Schnitstelle ihre Baudrate. Das Programm Cube HAL stellt dieses Takt-Sytsem sehr übersichtlich dar und erzeugt Dir per Mausklick entsprechenden Initialisierungs-Code. Du solltest dennoch das Refecence Manual (www.st.com/resource/en/reference_manual/dm00031020.pdf) durchlesen. Zumindest die Kapitel 2.1.11 AHB/APB bridges 3.5.1 Relation between CPU clock frequency and Flash memory read time 3.9.1 Flash access control register (FLASH_ACR) 7.2 Clocks 7.3 RCC registers 30 Universal synchronous asynchronous receiver transmitter (USART) Wenn Dir das zu kompliziert erscheint, empfehle ich mit einem STM32F103 anzufangen. Denn dazu findest du mehr Anfänger-Anleitungen im Internet. Das gelernte kannst du dann später auf deinen STM32F407 übertragen, denn die Unterschiede sind gering. Aber um das viele Lesen wirst du nicht herum kommen. Bei STM wirst du sehen, dass sich die meisten Anleitungen auf das veraltete SPL Framework beziehen. Nur die neueren Anleitungen (ab ca 2015) beziehen ich auf das aktuelle Cube HAL Framework. Das soll die Arbeit sehr erleichtern, aber leider muss man das umfangreiche Reference-Manual trotzdem lesen und HAL richtig anzuwenden. Ich habe gerade mit dem STM32F103 angefangen, nachdem ich das Gefühl habe, die AVR's in und auswendig zu kennen (was natürlich sicher nicht ganz stimmt). Meine Notizen zum STM32F103 findest du hier: http://stefanfrings.de/stm32/index.html Beim STM32F407 wird vieles ähnlich sein, aber eben nicht gleich. Deswegen gehe bitte nicht davon aus, dass meine Ausführungen für dein Discovery Board passen. Falls Du nicht gut genug Englisch kannst, würde ich Dir raten, mit 8bit AVR Controllern anzufangen. Denn deren Datenblätter sind sehr viel kürzer und es gibt reichlich deutsche Literatur.
Hallo, vielen Dank für die Antworten, besonders diese von Stefan US. Diese war sehr hilfreich, da ich in ich den Lib. die Frequenzen verändern musste: “cmsis_boot/stm32f4xx.h” “cmsis_boot/system_stm32f4xx.c”, diese müssen auf 8kHz gestellt sein, sowie der Prescaler für die BaudRate muss danach eingestellt werden. Da ich da schon vorher probiert habe, hatte ich einen 16kHz Oszi eingestellt und nicht ein 8kHz. MFG Sven
Sven A. schrieb: > diese müssen auf 8kHz gestellt sein, Nein. Sven A. schrieb: > Da ich da schon vorher probiert habe, hatte ich einen 16kHz Oszi > eingestellt und nicht ein 8kHz. Ich wette dass die gewünschte Baudrate weder mit 16kHz noch mit 8kHz eingestellt werden kann. Sven A. schrieb: > Sven A. > (Firma: Student) > (theoretiker87) Ist das ein Student der die Zehnerpotenzen nicht auseinander halten kann?
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.