Guten Tag, Ich würde gerne über den UART eines STM32F4 was verschicken. Hardware ist (vorerst) ein STM32F4-Discovery, mit dem STM32F407VG. Das letzte mal als ich mit dem Zeug gearbeitet hab, war das noch die Standard-Peripheral-Lib, jetzt wollte ich mal das Cube-Zeugs ausprobieren. Also, gesagt, getan, ein neues CubeMX-Projekt (CubeMX Version 4.13.1) für Atollic TrueStudio (V 5.4.0). Den UART habe ich, zum debuggen, erstmal mit dem Klickibunti-Interface von CubeMX konfiguriert. Der entstandene Source-Code ist angehangen. Baudrate sollte übrigens 9600 sein. Raus kommt aber nichts, was wie UART aussieht. Nur die Signale vom Bild, und die alle 40ms (wie zu erwarten; aber halt nichts UART-ähnliches). Hat jemand die Lust/Zeit/Erfahrung, mich beim Debugging zu ünterstützen? Wem springt mein Fehler sofort ins Auge? PS: Noch was zur Config: Habe den HSE auf die 8 MHz gestellt, die PLL auf M=8; N=336 und P=2. Sollten also 168MHz Sysclk rauskommen. PPS: TxD ist an PA9. Hab ich mit einem LA verbunden. Auch wenn das im Quelltext nicht ersichtbar ist, ist der in einer von CubeMX-generierten LowLevel-Methode (im UART_Init) auf AlternativeFunction geschalten.
__UART1_CLK_ENABLE(); ?
Vincent H. schrieb: > __UART1_CLK_ENABLE(); > > ? sollte CubeMX für mich machen: Die HAL_UART_Init:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
und die msp_init, die von obiger aufgerufen wird:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
Hab grad nochmal ins Datenblatt geschaut, der 407er hat im USART_CR1 Register eigene Bits für "Transmitter enable" und "Receiver enable". Hast du schon überprüft ob die gesetzt werden? So wie ich das seh setzt nämlich weder das Makro
1 | |
Noch die USART_Transmit Funktion dieses Bit?
So schnell gehts, ich habe es (vermutlich) hinbekommen. Mindestens ein Problem habe ich entdeckt: Der TxD-Pin (PA9) ist am Discovery-Board auch für VBUS (von USB) genutzt. Da liegt wohl noch irgendwas auf der Leitung, was den stört. Ich habe den jetzt auf PB6-regemapped. Außerdem gibt es wohl noch irgendein Problem mit meiner Debug-Konfiguration im TrueSTUDIO, also musste ich die Software erstmal (manuell) über die ST-Link Utility flashen. Aber er macht das was er soll. Trotzdem danke an alle, die versucht haben, zu helfen. Schönen Freitag, Peter
Gast
#4520964
Peter K. schrieb: > Guten Tag, > > PS: Noch was zur Config: Habe den HSE auf die 8 MHz gestellt, die PLL > auf M=8; N=336 und P=2. Sollten also 168MHz Sysclk rauskommen. > PPS: TxD ist an PA9. Hab ich mit einem LA verbunden. Auch wenn das im > Quelltext nicht ersichtbar ist, ist der in einer von CubeMX-generierten > LowLevel-Methode (im UART_Init) auf AlternativeFunction geschalten. Zum eigentlichen Problem schreibe ich nichts (die Libraries sind einfach würg und ohne geht es meiner Meinung nach viel einfacher), aber die PLL-Faktoren solltest Du umstellen. Laut Datenblatt ist der Jitter bei M=4 deutlich kleiner. ("Caution: The software has to set these bits correctly to ensure that the VCO input frequency ranges from 1 to 2 MHz. It is recommended to select a frequency of 2 MHz to limit PLL jitter.")
Dr. MIPS schrieb: > Zum eigentlichen Problem schreibe ich nichts (die Libraries sind einfach > würg und ohne geht es meiner Meinung nach viel einfacher), aber die > PLL-Faktoren solltest Du umstellen. > Laut Datenblatt ist der Jitter bei M=4 deutlich kleiner. > ("Caution: The software has to set these bits correctly to ensure that > the VCO input frequency ranges from 1 to 2 MHz. It is recommended to > select a frequency of 2 MHz to limit PLL jitter.") Vielen Dank, ist notiert und wird realisiert! So gründlich habe ich mir das Datenblatt doch nicht durchgelesen :)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
