STM32F4 Discovery Arduino

Gast #4968672
Lesenswert?

Da ich schon länger ein STM32F4-Discovery Board herum liegen habe wollte 
ich es endlich mal programmieren.
Glücklicherweise gibt es mittlerweile Arduino-Unterstützung dafür.
Eine Anleitung, wie es zu installieren ist, gibt es hier:

http://grauonline.de/wordpress/?page_id=1004

Aber Vorsicht! Wenn man das Blink Programm wie angegeben mit dem Output 
PC13 flasht, geht gleich gar nichts mehr, weil dieser Anschluss 
ausgerechnet für den Debugger verendet wird. Man muss also eine andere 
LED des Boards verwenden.
Außerdem war bei meinem Board die ST-LINK Software veraltet, so dass 
erst einmal ein Update gemacht werden musste.
Wenn man diese beiden Sachen beachtet, läuft es sehr schnell.
Angehängte Dateien:
Gast #4969713
Lesenswert?

Das Board scheint auf Audio-Anwendungen ausgelegt zu sein, es hat ein 
Mikrophon und einen Verstärker:

- MP45DT02 ST-MEMS-Audiosensor, omnidirektionales Digitalmikrofon
- Audio-DAC CS43L22 mit integriertem Class-D-Lautsprechertreiber
- 3-Achsen-ST-MEMS-Beschleunigungsmesser LIS302DL oder LIS3DSH
- Acht LEDs
- Zwei Tasten (benutzerdefiniert und Reset)

Manual:
http://www.st.com/content/ccc/resource/technical/document/user_manual/70/fe/4a/3f/e7/e1/4f/7d/DM00039084.pdf/files/DM00039084.pdf/jcr:content/translations/en.DM00039084.pdf

Mal schauen, ob sich ein passender Treiber für die Audio-Peripherie 
finden lässt.

Ich hänge mal das modifizierte Blink-Programm an, welches die grüne LED 
blinken lässt.
Angehängte Dateien:
Gast #4969725
Lesenswert?

Öhm ... kleines Missgeschick ;-)

Derweil habe ich noch ein kleines Lauflicht gemacht. Diesmal mit den 
richtigen Farben.
In der Beschreibung steht zwar 8 LEDs, so weit ich sehe, kann man aber 
nur 5 davon ansteuern.
Wobei die 5.te LED mit dem Anschluss "OTG Over Current" kollidiert. Ich 
habe sich trotzdem mal mit aufgenommen. Sie ist invertiert und es gibt 
einen 50 Ohm Vorwiderstand, der den OTG-Ausgang höchst wahrscheinlich 
überleben lässt ...
Angehängte Dateien:
Gast #4970377
Lesenswert?

>Glücklicherweise gibt es mittlerweile Arduino-Unterstützung dafür.

Beauty is in the eye of the beholder....

Es gibt wie 100 anleitungen wie man ein anständiger IDE mit dem STM32 
nutzen kann... Der "Arduino way" ist evtl. nutzlich, aber inzwischen 
konnten ein bisschen es mit einen paar extra Features ausrüsten, wie 
syntax highlight und code-aware menus... Anfänger und nicht so Anfänger 
könnten davon profitieren :)

Dann, wie wäre es mit einem I2S Demo :)

Ich hab das Datenblatt des CS43L22 angeschaut... ich werde auch was 
versuchen :)
Gast #4970790
Lesenswert?

>lasst den Arduino Quatsch und lernt gescheit wie das mit Audio geht.
>Denn das geht nur sinnvoll mit der DMA Peripherie darauf.

Es gibt nichts Gutes,
es sei denn, man tut es.

Alles andre Hätte,Wenn und Aber ...
ist alles nur gelaaber.
Gast #4973048
Lesenswert?

Im Anhang ein ziemlich gebasteltes Code-Beispiel für den 
Beschleunigungssensor LIS203DL, welches ich gefunden habe. Es gibt die 
Werte des Sensors seriell aus.

Mittlerweile habe ich auch festgestellt, dass die hardware serielle 
Schnittstelle funktioniert ( mit externem Adapter ).
Allerdings ist die Pin-Zuordnung etwas diffus:
Im Beispiel wird Arduino-Serial2 verwendet. Das Signal kommt dann am Pin 
PD8 raus. Dieser wird aber im Manual mit USART3_TX bezeichnet.
Angehängte Dateien:
(Firma: matzetronics) #4973933
Lesenswert?

Alex schrieb:
> Ich hab das Datenblatt des CS43L22 angeschaut... ich werde auch was
> versuchen :)

Der taugt schon was, ich empfehle dir aber, für die Initialisierung mal 
die Libraries von Uwe B. anzuschauen, da die Kiste ein wenig zickig ist.
http://mikrocontroller.bplaced.net/wordpress/?page_id=46

So funktioniert es, sofern I²C richtig läuft. Bei Bedarf kann ich auch 
mal meine Routinen posten.

Genervt schrieb:
> Denn das geht nur sinnvoll mit der DMA Peripherie darauf.

Nicht unbedingt. Ich z.B. lade den Codec per Interrupt nach aus dem 
Audiobuffern, weil ich eben nicht nur Musik abspiele, sondern eine 
Aufnahme/Wiedergabe Option punktgenau schalten möchte (ist ja ein 
Multitracker bei mir). Kostet auch so gut wie keine Rechenzeit.

Allerdings sind die Onchip ADCs für Audio nicht zu gebrauchen, bei mir 
hängt am I2S2 ein Cirrus ADC.
Gast #4973948
Lesenswert?

>Autor: Nico W. (nico_w)
>>Markus schrieb:
>> Hat jemand eine Ahnung, wie man das installiert?
>https://github.com/stm32duino/wiki/wiki/Getting-Started

Danke dafür. Aber wenn ich dem Wiki folge, scheint im Board-Manager das 
STM32F4 Discovery Board nicht aufzutauchen.
Wenn ich es richtig sehe, werden die Packages in ZIP-Files verpackt und 
die bekommen eine Versionsnummer.
Aber das Pakete für das STM32F4 Discovery ist noch nicht drinn:
https://github.com/stm32duino/BoardManagerFiles/tree/master/STM32/packages
#4974119
Lesenswert?

Markus schrieb:
> Scheinbar geht die serielle Schnittstelle über USB nicht.
> Deshalb habe ich einen seriellen Adapter an den Pin PC1 angeschlossen
> und schnell ein Soft-Serial geschrieben, damit man ein paar Werte
> debuggen kann.
Man könnte auch einfach einen der 6!! Hardware USARTs verwenden und den 
Prozessor somit nicht schon zu 50% nur für die Ausgabe von 3 Zeichen 
auszulasten, aber was weiß ich schon...

mfg
Gast #4974135
Lesenswert?

> Autor: Matthias S. (Firma: matzetronics) (mschoeldgen)
>Alex schrieb:
>> Ich hab das Datenblatt des CS43L22 angeschaut... ich werde auch was
>> versuchen :)
>Der taugt schon was, ich empfehle dir aber, für die Initialisierung mal
>die Libraries von Uwe B. anzuschauen, da die Kiste ein wenig zickig ist.

Im obigen Beispiel werden diese Codec-Routinen verwendet:
https://github.com/mubase/STM32F4-Arduino-core/blob/master/cores/maple/libmaple/stm32f4codec/codec.h

"mubase" hat dort einfach eine Software I2C Schnittstelle verwendet.
Damit umgeht er alle Probleme mit dem Hardware-I2C Interface und große 
Nachteile bringt es auch nicht, weil die Konfiguration für den Codec 
sowieso nur einmal gemacht wird und deshalb langsam sein kann.
Das Setup des Chips scheint nicht so kompliziert, es müssen wohl nur ein 
paar I2C-Register beschrieben werden, wie man im Code sieht.

Ganz anders sieht es meiner Meinung nach für das Mikrofon aus. Oben habe 
ich  ja ein Beispiel gepostet. Ich würde sagen, es ist sogar ein wenig 
trickreich, oder gibt es eine schnellere Methode, das PDM Signal zu 
demodulieren?
Gast #4974170
Lesenswert?

>Autor: Nico W. (nico_w)
>Markus schrieb:
>> Aber das Pakete für das STM32F4 Discovery ist noch nicht drinn:
>Ist ja anscheinend auch erst zwei Tage alt.
Bei den Paketen im Repository
https://github.com/stm32duino/BoardManagerFiles/tree/master/STM32/packages
gibt es ja auch nur F0,F1 und L4 MCU Typen. Daher nehme ich an, dass die 
neuen Pakete, an denen gerade gearbeitet wird für den STM32F4 noch nie 
in diesem Paket Manager war. Ich glaube aber, dass diese schon 
weitgehend funktionieren, deshalb ist die Frage, wie man sie ohne den 
Paketmanager in Betrieb nimmt.


>Ich habe ansonsten das hier noch gefunden:
>http://jeelabs.org/book/1542a/
>https://github.com/rogerclarkmelbourne/Arduino_STM...

In dem Link schreibt Roger Clark:

"Copy the Arduino_STM32 folder to My Documents/Arduino/hardware
(note. if the hardware folder doesn't exist you will need to create it)"

Mir war bis jetzt nicht bekannt, dass die "Hardware-Beschreibung im 
Arduino-Folder liegen soll. Ich hab's gerade mal dahin kopiert und es 
funktioniert nicht.
Gast #4974448
Lesenswert?

Ich habe exakt dieses neueste Repo

https://github.com/stm32duino/Arduino_Core_STM32F4

hier hin geklont

C:\Users\myName\Documents\Arduino\hardware\

Der Name des Ordners ist also dann "Arduino_Core_STM32F4"

die Arduino IDE 1.6.9 neu gestartet und den Computer ebenso.

Eigentlich sollte jetzt laut Anleitung im Board-Manager die zwei im Repo 
befindlichen Varianten

STM32F407VG_Disco
STM32F429ZI_Nucleo

auftauchen. Sehe ich das falsch? Es würde mir sehr helfen, wenn mir 
jeman mitteilt, ob auf seinem Rechner das Repo funktioniert. Dann kann 
weiß ich, dass es an meiner Installation liegen muss. Ansonsten kann es 
auch das Repo sein.
Gast #4975093
Lesenswert?

So wie es aussieht, ist das neue Repository "brandneu" so dass es noch 
nicht für den offiziellen Gebrauch vorgesehen ist.
Es wird wohl von STM selber bebaut, sodass man bald eine richtig gute 
Arduino Version für das STM32F4 Discovery erwarten kann.

Im Repository sieht man, dass sie auch das STM32F429zi Nucleo 
unterstützen:
https://github.com/stm32duino/Arduino_Core_STM32F4/tree/master/variants
http://www.st.com/en/evaluation-tools/nucleo-f429zi.html

Schöner wäre noch das 32F429IDISCOVERY
http://www.st.com/en/evaluation-tools/32f429idiscovery.html

Es hat ein Display und 8MByte Ram.
In der Beschreibung wird es zwar nicht explizit erwähnt, aber scheinbar 
hat es ein ILI9341 TFT Display. Für dieses gibt es ja mittlerweile 
haufenweise Treiber, sodass es ziemlich einfach wird, damit auch Graphik 
darzustellen.
Gast #4976035
Lesenswert?

So, mittlerweile habe ich doch tatsächlich eine Beschreibung gefunden, 
wie man das neue Repository installieren kann.

Aber Achtung: Bei dem neuen Repository sind die Pin-Zuordnungen 
geändert. Man kann den Pin nicht mehr über z.B. PB0 ansprechen sondern 
nur über eine Nummer. Und wenn ich es richtig sehe, ist dann das 
Mikrofon und die gesamte Peripherie nicht mehr über digitalRead und 
digitalWrite ansprechbar und damit funktionieren die Beispiele hier in 
diesem Thread auch nicht mehr .... Mist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren