Ich habe alles für den MCU eingerichtet bei Arduino und SPI und I2C
funktionierten. Als ich jetzt aber dieses Programm getestet habe:
1
void setup() {
2
Serial.begin(9600);
3
}
4
5
void loop() {
6
Serial.write("Test");
7
delay(10);
8
}
konnte ich im Gegensatz zu meinem Arduino Nano nichts mit dem Logic
Analyzer an PA9 messen.
Muss man bei dem Modul eine andere Library benutzen oder warum
funktioniert das nicht?
versuche mal
Serial.print("Test");
(besser Serial.print(F("Test"));)
oder Serial.print("Test\n");
oder Serial.print("Test\r\n");
ggffs nicht richtig eingestellt? flush()?
L. Beier schrieb:> Ich habe alles für den MCU eingerichtet bei Arduino und SPI und I2C> funktionierten.
Was heißt alles?
Ich habe keine Glaskugel..
ICH benutze Roger Clark's STM32DUINO als Arduino Aufsatz, DORT wird mit
> setup() {> Serial.begin(9600);> }
der serielle USB-Transfer gestartet(PA12).
Zur Ausgabe finden die "print"-Methoden Anwendung.
Standard-Beispiel:
void setup() {
Serial.begin(115200); // init Serial USB
while(!Serial.isConnected()){}; // wait on USB is up and running
Serial.println("Hello from USB Serial !!");
}
IIRC muss zur Ausgabe auf PA9 Serial1 gestartet werden, meine Hand lege
ich dafür aber nicht ins Feuer.
Doku lesen bzw. WIKI von STM32Duino
>Komisch jetzt funktioniert es.
Diese Aussage kommt in Entwicklungsabteilungen häufig vor :-)
Du könntest noch das STM32GENERIC-Framework ausprobieren, vielleicht
geht's ja damit.
Obwohl das Framework von Roger Clark eigentlich ziemlich ausgreift ist
..
Markus schrieb:>>Komisch jetzt funktioniert es.>> Diese Aussage kommt in Entwicklungsabteilungen häufig vor :-)>> Du könntest noch das STM32GENERIC-Framework ausprobieren, vielleicht> geht's ja damit.> Obwohl das Framework von Roger Clark eigentlich ziemlich ausgreift ist> ..
Dieser Code funktioniert jetzt:
Known Issues
On most clones, the chip's analog circuitry is supplied by the same
power track as the digital circuitry, meaning that sampling the ADC in
close succession with e.g. SPI communication is known to cause
interference. This is not a problem for most use cases, and can usually
be solved by careful timing in software. It is worth noting that most
Arduino boards (e.g. Uno, Nano) have the same "problem".
Kenne das so nicht und habe aus Interesse einmal gegoogelt.
Kann ja unter Umständen auch da zu Störungen führen.
Nur mal so eine Idee.
Also ist das Problem jetzt gelöst oder nicht?
Seriel.begin geht auf die USB-Schnittstelle.
Dort gibt es zwei Dinge zu beachten, falls es sich um ein BluePill-Board
handelt
1. Ist ein Widerstand für die USB-Schnittstelle meist falsch bestückt
und muss gepached werden.
2. Der USB-Anschluss ist an dem Board mechanisch ziemlich labil. Es
passiert schnell, dass der Stecker nicht mehr richtig kontaktiert und
ein Wackelkontakt auftritt.
Markus schrieb:> Also ist das Problem jetzt gelöst oder nicht?>> Seriel.begin geht auf die USB-Schnittstelle.>> Dort gibt es zwei Dinge zu beachten, falls es sich um ein BluePill-Board> handelt> 1. Ist ein Widerstand für die USB-Schnittstelle meist falsch bestückt> und muss gepached werden.> 2. Der USB-Anschluss ist an dem Board mechanisch ziemlich labil. Es> passiert schnell, dass der Stecker nicht mehr richtig kontaktiert und> ein Wackelkontakt auftritt.
Mein Board hat keinen USB Anschluss und Serial1 funktioniert auch nicht
mit Arduino.
Es wäre für mich sehr viel einfacher, wenn UART mit Arduino
funktionieren würde, aber anscheinend geht das nicht. Jedenfalls habe
ich alle Vorschläge ausprobiert.
L. Beier schrieb:> Mein Board hat keinen USB Anschluss und Serial1 funktioniert auch nicht> mit Arduino.
Dann hol Dir irgendein Entwicklungsboard, die haben alle USB.
Preislich am günstigsten sind die "BLUEPILL"s vom Ali, so ca. 1,80$.
Für USB muss da aber ein Bootloader drauf, entweder via Serial-USB
Adapter oder STLINK.
Null Problemo sollte ein Maple Mini Klon bereiten, dort ist aber bereits
ein CBT6 drauf ;).
Gibt's beim Ali für ca. 3$ plus Cents.
Also, ich habe es mal mit dem Arduino STM32GENERIC Framework
ausprobiert, da ich das von Roger Clark momentan nicht installiert habe.
Es funktioniert mit einem USB-Serial Adapter an PA9/PA10 einwandfrei.
Einstellungen in "Tools" siehe Screenshot.
1
voidsetup(){
2
// initialize serial communication at 9600 bits per second:
3
Serial.begin(115200);
4
}
5
6
// the loop routine runs over and over again forever:
7
voidloop(){
8
// read the input on analog pin 0:
9
intsensorValue=analogRead(PA0);
10
// print out the value you read:
11
Serial.println(sensorValue);
12
delay(100);// delay in between reads for stability
Markus schrieb:> Also, ich habe es mal mit dem Arduino STM32GENERIC Framework> ausprobiert, da ich das von Roger Clark momentan nicht installiert habe.>
Dann liegt es wohl an dem Board. Ich habe ein BLUEPILL und benutze
Serial1.
L. Beier schrieb:> Mein Board hat keinen USB AnschlussL. Beier schrieb:> Ich habe ein BLUEPILL
Höö?! Das Bluepill hat doch aber den USB rausgeführt?
Und dieser ist halt Serial.beginn....
Im Grunde wiedersprichst du dich in jedem zweiten Post... Einmal sagst
du das serial1 nicht funktioniert, dann funktioniert es wieder. USB hast
du keins, aber USB hat dein Board...
WIE ist der aktuelle Stand? WELCHE UART des F103 willst du nun
eigentlich nutzen? WAS funktioniert und WAS funktioniert nicht?
L. Beier schrieb:> Dann liegt es wohl an dem Board.
Wohl eher nicht.
Es gibt für dich nur genau 2 Wege:
a) du beginnst, dich mit der eigentlichen Materie zu befassen, bis du in
der Lage bist, aus eigener Kraft und eigenem Verstehen die vorliegende
Hardware sinnvoll zu benutzen.
b) du bleibst bei der Arduino-Denkweise und bist darauf angewiesen,
genau das und nur das zu benutzen, was irgend jemand für eine bestimmte
Hardware und eine bestimmte Software-Konfiguration zuvor gebrauchsfertig
dir vorgegeben hat.
Die Entscheidung liegt bei dir - aber du solltest berücksichtigen, daß
es im Falle von b) eine nicht mehr überbrückbare Lücke gibt zwischen dir
und all denjenigen, die solche Chips wie die STM32Fxxx und Konsorten
direkt und selbst und ohne Arduino benutzen. Und eine noch viel größere
Lücke besteht zu Leuten wie mir, der ich (aus guten Gründen) nicht
einmal die diversen Hersteller-Krücken wie Cube, Dave, Cmsis benutze,
sondern mein Zeug mit eigenem Portfolio mache.
In beiden Fällen führt der Versuch, dir Ratschläge quasi vom anderen
Ufer der Lücke zu geben, mit Regelmäßigkeit zu gegenseitigem Frust.
W.S.
DraconiX schrieb:> L. Beier schrieb:> Mein Board hat keinen USB Anschluss>> L. Beier schrieb:> Ich habe ein BLUEPILL>> Höö?! Das Bluepill hat doch aber den USB rausgeführt?> Und dieser ist halt Serial.beginn....>> Im Grunde wiedersprichst du dich in jedem zweiten Post... Einmal sagst> du das serial1 nicht funktioniert, dann funktioniert es wieder. USB hast> du keins, aber USB hat dein Board...> WIE ist der aktuelle Stand? WELCHE UART des F103 willst du nun> eigentlich nutzen? WAS funktioniert und WAS funktioniert nicht?
Zusammengefasst: Ich möchte UART2 (Serial1) nutzen, kein UART Interface
funktioniert mit Arduino und diversen Code Variationen, jedoch
funktionieren alle UARTs wenn ich statt Arduino CooCox benutze. Daher
bin ich gerade dabei den Code, den ich für Arduino geschrieben habe in C
mit CooCox neu zu schreiben
L. Beier schrieb:> Zusammengefasst: Ich möchte UART2 (Serial1) nutzen, kein UART Interface> funktioniert mit Arduino und diversen Code Variationen, jedoch> funktionieren alle UARTs wenn ich statt Arduino CooCox benutze.
Ahh okay. Jetzt begreife ich es!
L. Beier schrieb:> Daher bin ich gerade dabei den Code, den ich für Arduino geschrieben> habe in C mit CooCox neu zu schreiben
Gute... Sehr gute Entscheidung... Du wirst sehen das es sicherlich hart
und schwer wird. Aber die Lernkurve, gerade beim Cortex, wird hoch und
steil sein! Viel Erfolg, und bei Fragen gerne wieder fragen. ? Ist das
dein Einstieg in die 32Bit-Welt?!
Schau auf meine Notizen-Seite: http://stefanfrings.de/stm32/index.html
Dort verlinke ich auf die richtige Doku im Arduino Kapitel:
https://github.com/rogerclarkmelbourne/Arduino_STM32
Und da steht im Wiki:
"SerialUSB on Maple builds has now been changed to Serial. Serial1 is
Hardware serial 1, Serial2 is Hardware serial 2 etc"
Demnach muss es damit funktionieren. Vielleicht hast du das falsche
Arduino Plugin verwendet.
L.Beier
>Zusammengefasst: Ich möchte UART2 (Serial1) nutzen, kein UART >Interface>funktioniert mit Arduino und diversen Code Variationen, jedoch>funktionieren alle UARTs wenn ich statt Arduino CooCox benutze. Daher>bin ich gerade dabei den Code, den ich für Arduino geschrieben habe >in C mit
CooCox neu zu schreiben
So, gerade mal mit Arduino STM32Generic probiert:
1
voidsetup(){
2
Serial.begin(115200);
3
Serial2.begin(115200);
4
5
}
6
7
intCounter=0;
8
voidloop()
9
{
10
Serial.println(Counter);
11
Serial2.println(Counter++);
12
delay(200);
13
14
}
Es funktioniert einwandfrei. Das Bild oben ist von PA2 also TX2.
Hast Du STM32Generic probiert?
Markus schrieb:> Es funktioniert einwandfrei. Das Bild oben ist von PA2 also TX2.>> Hast Du STM32Generic probiert?
Das ist ja ein ding! Ich habe bislang immer das Generic STM32F103C
series von rogerclarkmelbourne benutzt und jetzt mit dem stm32generic
von danieleff funktionierts!
Bei Arduino funktioniert so einiges nicht mehr.
Die alten Uno Boards, die ich noch habe, funktionieren nicht mehr. Die
Nanos alle.
CH... funktionieren.
Da sind 8U2 drauf und die wollen nicht mehr.
Jetzt nachdem ich Arduino STM32 neu installiert habe funktioniert
anscheinend alles wieder und ich habe statt Serial2 für USART2 Serial1
benutzt, da ich in einem anderen Forum gelesen habe, dass die so benannt
würden.
Trotzdem danke für die ganze Hilfe und ich werde jetzt in meinen
nächsten Projekten direkt alles mal mit CooCox versuchen, wenn ich nicht
einen bereits fertigen Code umschreiben müsste.