STM32F429-Discovery :
Das STM32F429-Discovery-Board :
Eingabemöglichkeiten :
1x Taster
1x Drehraten-Sensor (3-Achs) [L3GD20]
1x Touch
Ausgabemöglichkeiten :
2x LED (grün,rot)
1x Grafik-LCD 2,4 Zoll (320 x 240 Pixel) 262k Farben
Mikroprozessor :
STM32F429ZIT6
Sonstiges :
-Programmier und JTAG-Debug Schnittstelle per USB (ST-Link/V2)
-Micro-USB-Anschluß für USB-OTG (z.B. um einen USB-Stick anzuschließen)
-zwei Stiftleisten (2x32pol) auf denen viele CPU-Pins aufgelegt sind
-externes SD-RAM (64MBit = 8MByte)
Die STM32F4 CPU :
-32Bit ARM4 Architektur
-2MB Flash
-256kByte RAM
-interner Systemclock per PLL bis max. 180 MHz
-Hardware FloatingPoint-Unit zuschaltbar
-11 GPIO-Ports (A-K) davon 10 mit 16bit und eine mit 8Bit breite
-External-Memory-Controller (FMC)
-LCD-Controller (mit extra Grafik-Beschleuniger)
-EthernetMac
-USB (OTG)
-zwei DMAs
-2 bzw. 3 ADC
-2 DACs
-14 Timer
-8 UARTs
-2 CAN
-6 SPI
-3 I2C
uvm.
Dokumente :
Schon mal überlegt, Deinen STM32F4-Stamp statt mit dem 100 Pin 407 mit dem 429 und 144 Pins zu bauen?… Finde Deine erste Stamp-Idee schon nicht schlecht… Und ein einfacher Stamp mit dem 429 wäre doch mal was…
ich glaube die CPU gibts noch nicht einzeln, und die Eval-Boards werden von STM gesponsort…das bekommt man nie so billig hin beim selberbauen. z.B. der 407 kostet einzeln 12 EUR aber das komplette Discovery-Board nur 16 EUR
Hi Uwe,
Hast Du nen Plan, ob das TFT so wie es auf dem board verbaut ist auch nur im SPI-Mode ansteuerbar ist ? Der ili9341 auf dem TFT kann das ja.
grutzli, tom.
Im Prinzip schon, aber das wäre sehr langsam. Bewegte Sachen wirst du da vergessen können. Und die Pins sind am Disco-Board ja schon mit dem Display verbunden, die kannst du also eh nicht anderweitig nutzen.
Danke Uwe,
die zielapplikation benutzt das gleiche display+touch, muss keine bewegten bilder machen, nur bissel statische grafik und mal button changes und wird auch einen kleineren stm32F1xx als cpu haben.
ich habe das disco board nur als hw-plattform ohne löten für ne kleine machbarkeit genommen….
eine LIB für das Display im SPI-Mode ist jetzt fertig. Du musst nur die richtige SPI-Lib einbinden damit es bei dir funktioniert.
ich nochmal,
was für ein RN-42 modul hast Du da im Plan ?
evtl. kann ich Dir damit etwas unter die Arme greifen, wenn Du willst.
Gruss, Tom.
danke, aber im Moment mache ich noch mit Pacman weiter …
(es ist das RN42-I/RM)
…ist es das, welches auch HID macht oder nur SPP ?
bin mir nicht sicher…denke nur SPP
Hi Uwe,
Wenn Dein RN42 mit firmware r6.15 bestückt ist soll es SPP und HID können.
Kannste dann je nach Wunsch über die UART des Moduls im Command mode Dir konfigurieren:
http://ww1.microchip.com/downloads/en/DeviceDoc/Bluetooth%20Firmware%20Version%206%2015%20Release%20Notes_r.pdf
Vor 2-3 Wochen war noch ziemliches Chaos betr. Docs und Infos zum RN42, wohl bedingt durch die Übernahme durch Microchip. Das hat sich nun zum Guten geändert.
Hab Spass + Gruss, Tom.
Mit den 8 MB RAM evtl. ein nettes NF-Oszi ..
ja…wäre vlt auch ein Projekt wert…mal sehen.
Ist das onboard Display mit Touch?
Ja
Hallo ,
Erstmal vielen Dank für deine Librarys ! Deine Seite hat mir die Einarbeitung mit dem STM32F429 Disco board sehr erleichtert. Jetzt zu meiner Frage Momentan nutze ich das Board mit einem 4,3 (480X272) LCD welches ich über den integrierten LTDC des STM32F429 mit RGB Protokol 565 angesteuert wird (als Speicher wird der SDRAM verwendet) . Ist es möglich nun MAC des STM32F429 gleichzeitig mit dem LCD Controller zu nutzen? Laut dem …F429 Datenblatt überschneiden sich bei allen F429 und F427 Modellen die möglichen TX_EN Anschlüsse (PG11 und PB5) mit den Ausgabepins des LTDC (B3 und G5).
dann geht es wohl nicht. bleibt nur ein Ethernet-Modul ala WIZNET.
Hallo Lord!
Ich möchte auch gerne ein eigenes Display anschließen (800×480, 24 Bit).
Kann man das parallel machen oder muss man das originale Display entfernen?
Danke für jede Antowrt
Chris
Hallo Chris!
Hab leider schon lange nicht mehr hier reingeschaut. Hatte auch mal ein anderes Display (480×272 mit 16bit rgb mit externer Backlight Spannung) parallel zum Boarddisplay angeschlossen , hat ohne Probleme funktioniert ( kann sein das halt irgendein Müll auf dem Boarddisplay angezeigt wird) . 800X480 sollte eigentlich funktionieren laut Ref Manual unterstützt der LTDC bis zu 1024X768 (siehe: http://www.st.com/web/en/resource/technical/document/reference_manual/DM00031020.pdf#page=478&zoom=auto,67,754) .
p.s bei der Initalisierung des RAMs für den LTDC hat mir diese Seite sehr geholfen: http://en.radzio.dxp.pl/stm32f429idiscovery/sdram.html
Hallo ich habe mir das STM34F429 gekauft habe zuvor nur
Atmel mit Bascom Programmiert. Nun habe ich den BMA180
der sehr genau ist. Kann jemand mir dabei behilflich sein denn
das ist schon eine Umstellung zu Bascom.
Die Programmierung mit CooCox funktioniert schon auch laufen
Sensoren wie der DS18S20 schon recht gut aber der BMA180 über
SPI (Ich weis schon das ich SPI3 verwenden muss) ist in C++ doch
noch etwas zu schwer.
für den BMA180 hab ich schon was geschrieben. Allerdings nur für den ATMega aber das umsetzen auf den STM sollte kein Problem sein. Gib mir ein paar Tage. Und schreib wenn du eine besondere Funktion brauchst. SPI3 ist am F429-Disco schon belegt, aber SPI1 ist noch frei.
so, die Library ist fertig. Lade sie dir mal runter und probier sie aus.
Danke für deine Mühe nun werde ich die Library mal testen
und dir dann berichten.
Da habe ich zum BTM180 noch eine Frage:
Habe ich nicht die Möglichkeit auch den i2c zu nutzen?
Oder habe ich beim i2c Nachteile denn ich benutze beim ATMega
i2c.
(Teste die Library Sonntag Abend und Montag Morgen)
nein, I2C geht genauso. Beim Disco-Board kannst du aber nur I2C-3 benutzen (da hängt auch der Touch mit drann) Also musst du diese Lib einbinden statt der SPI-4. SCK=SCL, SDI=SDA. SDO=GND -> dann ist die IC2-Slave-Adr=0×80.
Überall wo jetzt eine “SPI-Funktion” steht muss dann die entsprechende “I2C-Funktion” benutzt werden.
Vielen Dank.
Da habe ich doch noch eine Frage bei der Adr.:0x80H die ist im Datenblatt
Seite 57 mit 1000 00×0 wobei das letzte Bit das RW ist.
Aber warum das x und nicht grundsätzlich die Schreibadresse 0x80H
und die Leseadresse 0x81H da habe ich ein Verständnis Problem.
Und viele schreiben das die Adresse sei aber 0x40h?
0×40 ist die 7-bit adresse (also, ohne read/write bit)
Google wird helfen, den Unterschied zwischen 7- und 8-bit Adressen zu erklären.
Manche Software (z.B. Arduino) erwartet 7-bit.
ja das stimmt, meine I2C-Lib erwartet einen 8bit Wert als Adresse. Und die “x” in der Doku steht für den Pegel vom Pin “SDO”. Mit diesem kann man noch eine zweite Adresse einstellen (wenn er auf Hi-Pegel liegt ist diese 0×82) Aber der Touch vom Disco-Board hat genau die gleiche Adresse (0×82) also ist die nicht zu empfehlen.
Super vielen Dank super, nun noch eine Frage der ISR(µC) und der INT (BMA180)
kann ich doch erstmal auslassen wenn ich keine Interrupt Steuerung benutze oder?
ja, brauchst du nicht. geht in meinem Code auch ohne. Dann muss der Sensor halt ständig gepollt werden.
Wird der Interrupt beim BMA180 durch Aktivität ausgelöst oder durch eine
vorgegebene Zeit ?
Da ich eigentlich ein Programm was mir z.B. auch Messwerte vom BMP085
und Ds18S20 Liefern soll schreiben möchte(also Multifunktionen aus dem Menü).
Ich Denke das Polling geeignet ist da ich auf Befehl permanent abfragen möchte (seismograf). Das ganze schicke ich dann mit dem
BTM222 zum PC(das geht schon).
Aber dabei mache ich mir Gedanken über die Geschwindigkeit möchte schon
3-6 * XYZ/Sek mit Senden an den PC erreichen und das Touch soll auch aktiv sein.
In der Doku (Pinout) steht aber nur PA5=SCK|PA6=MISO|PA7=MOSI
und PB3=SCK|PB4=MISO|PB5=MOSI aber wo ist de CS welcher Pin
eignet sich für CS ?
Habe ich das mit dem PORT-B der PIN-2 für CS richtig verstenden ?
bei I2C gibts keinen ChipSelect. Und bei meiner Library für den BMA180 liegt der ChipSelect für SPI auf PB2 kannst du aber im H-File vom Sensor beliebig auf irgendeinen Pin legen der noch nicht benutzt wird.
Danke das Programm habe ich nun getestet leider kommt auf dem lLCD ein “ERROR”
Habe mich für SPI entschieden:
PB4=MISO
PA7=MOSI
PA5=SCK
PB2=CS
Ich teste mal durch woran das liegt melde mich dann.
Leider bekomme ich im LCD ein “ERROR” ?
Sorry ich habe nun den Fehler
PE2=CLK
PE5=MISO
PE6=MOSI
PB2=CS
Ich dachte es wäre der SPI1 ist aber SPI 4
Das funktioniert super Gut.
Danke für die Mühe das hätte ich alleine so nicht
hin bekommen. Zumindest nicht mehr in diesem Jahr
ok. teste mal ob bei dir auch eine Abweichung vorhanden ist, wenn man z.B. +/- 16g einstellt.
O.K. mache ich sage heute Abend ca.21:30Uhr bescheid denn ich habe nun Schwimmaufsicht.
Also bei
+/-2G
X=-15 bis 40
Y=-22 bis 25
Z=994 bis 1030
Bei +/-16 G
X=116 bis 150
Y=89 bis 130
Z=780 bis 816
Sind das die Messwerte die du wissen wolltest ?
ja danke, dann ist bei dir auch ein Offset vorhanden (nur nicht so groß wie bei mir)
Die 14-Bit Auflösung besteht doch nur im +/- 2g Bereich oder ?
Dann kann ich 2 hoch 14 =16384 / 2= 8192 den positiven
und negativen Messbereich aufteilen.
Dann 2 / 8192=0.00024g als Auflösung rechnen ?
Ich versuche die feinste Auflösung zu erreichen weißt du wie die Filter
im Zusammenhang stehen ?
Ist es für die Auflösung wichtig ob Bandpass oder Hochpass ?
nein, die Auflösung von 14bit ist unabhängig von Filter oder Messbereich.
bei +/-2g entspricht 1bit ca 0.25mg Und bei +/-16g entspricht 1bit ca. 2mg. Die höchste Auflösung liegt demnach bei +/-1g . Und für den Rest musst du im Datenblatt nachsehen da steht auch was von Kalibrationswerten usw.
Nochmals zu dem Offset der ist doch auch Temperatur abhängig. Ich
habe ein Breakout board da sind 2 Kondensatoren drauf (ich nehme an
zu Stabilisierung der Spannung). Die Leitung (Telefondraht) ist ca.2,2m lang.
Danke ich werde mal nachlesen.
Nun versuche ich den UART einzubinden
#include “main.h”
#include “stm32_ub_lcd_ili9341.h”
#include “stm32_ub_font.h”
#include “stm32_ub_bma180.h”
#include
#include “stm32_ub_uart.h”
int main(void)
{
UB_Uart_Init();
ErrorStatus check;
// ErrorStatus check1;
int16_t x,y,z,t;
char buf[30];
SystemInit(); // Quarz
Aber bei dem Build kommt der Fehler
[cc] ..\obj\main.o: In function `main’:
[cc] collect2.exe: error: ld returned 1 exit status
[cc] E:\Schule\STM32F4Discovery\C++\BMA180_1/main.c:36: undefined reference to `UB_Uart_Init’
Nun habe ich alle die Dateien:
stm32f4xx_usart.h
stm32f4xx_usart.c
mit add file eingebunden und es kommt die Fehlermeldung:
[cc] ..\obj\stm32_ub_uart.o: In function `UB_Uart_Init’:
[cc] E:\Schule\STM32F4Discovery\C++\BMA180_1\ub_lib/stm32_ub_uart.c:118: undefined reference to `NVIC_Init’
[cc] collect2.exe: error: ld returned 1 exit status
Da bleibe ich dann stehen diese Fehlermeldung bekomme ich nicht weg.
Damit kann ich nichts anfangen:
[cc] E:\Schule\STM32F4Discovery\C++\BMA180_1/stm32_ub_uart.c:118: undefined reference to `NVIC_Init’
NVIC_Init(&NVIC_InitStructure);
Also den UART habe ich schon ohne LCD usw. getestet und er Funktioniert auch
nur wenn ich Ihn in das Demo BMA180 einbinde komme ich nur bis zu der
Stelle:
undefined reference to `NVIC_Init’
NVIC_Init(&NVIC_InitStructure);
// enable UART Interrupt-Vector
NVIC_InitStructure.NVIC_IRQChannel = UART[nr].INT;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
Wenn ich den Teil Auskommentiere dann funktioniert der Build aber
der UART Sendet nicht( UB_Uart_SendString(COM1, “Hallo”, CRLF);.
Liegt das ein einem Konflikt mit einem Interrupt ?
Nun brauche ich wieder Hilfe denn ich bekomme den UART in die
Demo_F429_25 nicht zum laufen. Nur der UART geht.
Nun habe ich die Lösung die misc.h + misc.c mussten noch eingebunden werden.
Nun Funktioniert auch der UART.
Schreibe nun in C# eine Auswert Software was hält du von C# (Studio Express);
Ich finde C# gut obwohl ich nur wenig damit gemacht habe.
hallo,
Ich habe gerade mit der Programmierung begonnen und ich STM32F429, um ein Projekt ohne die Entwicklungsplatine, Chip nur tun müssen. Ich möchte wissen, ob es möglich ist, verwenden Sie Ihre Bibliothek in LCD ohne Controller.
Haben Sie eine Anregung, wie kann ich das tun?
Vielen Dank
please post your question in english again. Google translater isn’t good enough to understand your problem. If you search a “naked” project without any peripherals (stm32f429 only) go to :
http://mikrocontroller.bplaced.net/wordpress/?page_id=2708#A01
and download “vorlage_f429_v101″ this is a “blinky” project to start with.
Hello
I love your project libs…I am wondering if you could create a small project for me…I would like to use the 429 discovery board to do vga…if you change the gpio pins and the timing could you add a vga display instead of using the LCD display? If you have time I would be very appreciative
i have allready made a vga library. It’s for the STM32F407 but i think it should work without any modification (only the peripeherals libs). try this and give a reply. http://mikrocontroller.bplaced.net/wordpress/?page_id=1415
Thanks for getting back…the driver for the stm32f407 looks good…but the 429 with the ltdc driver running vga would be awesome…so much power…Unfortunately, changing the ltdc timing and gpio pins is probably beyond my abilities. I am guess it could be a very simple project for you:) A simple 640 by 480 vga at 60 hz
I tired to change the gpio pins today and now I think I have messed up the LCD on the board…I should of just left it to the expect….any chance you could adapt your stm429 project 7…to a new group of gpio pins with vga display at 640 by 480 and 60 hz…it would be a great starting point for me
oh, now i have figured out what you want. You want to use the CPU Hardware (LTDC) to drive a VGA-Display. But i dont have the hardware to try this. I have only one STM32F429-Board and i dont destroy this to program a VGA driver. Sorry.
A quick question…if I try to use the stm32f407 vga drivers with the f429 board…what changes need to be made to the clock settings….f429 runs at 180 MHz and the f407 runs at 168 MHz…if I lower the f429 clock back to 168mhz will the other peripheral still work okay….because I am planning on using the on board sdram for a memory buffer
168MHz on the STM32F429 is no problem. SDRAM/ADC/LCD works fine on my projekts. USB works only with 168MHz. Make sure that the SystemCoreClock define is on 168MHz too.
Thanks for getting back to me…I am going to work on getting the stm32f407 vga drivers to work on the f429 board…to make sure the clocks are set correctly(168 MHz)…I am going to use your system-stm32f4xx.c file from demo-f429-13 (USB driver)…do you think that will cause any problems? What else needs to be changed or modify? Or can you give modifying the f407 vga driver to work on the f429 discovery board a try?
I am going to need your help…the gpio pins need changed…the f429 pins PE8 through PE15 are used for the sdram…plus the hsync signal would interfere with the LCD
Admin-ub
have you had a chance to look to at the peripheral libs on the f429 to change to gpio pins…I really need your help:)
PB12 is a normal GPIO you can choose another pin for that function. But PB11 is CH4 from Timer2 you must change that to CH1 and PA5. A big problem is the 8bit Color-Port this must be the upper or lower byte from a port. You can take PC8-PC15 without PC10 but you lose one color bit.
Thanks again…7 bit color would be okay….however…I do not want to damage the LCD display…as I want to keep the board in tact. Therefore when writing data to ports pc8 thr pc15… Do I need to make sure that the pc10 is always a zero…example 0xfb or 0x0b while avoiding data such as 0×04 or 0x0f…or how do you bang out 8 bits skipping the pc10 pin
Also should I be concerned that pc14 and pc15 are tied to osc32-in and the osc32-out and pc9 to sda
How do you bang out 8bits to 7 pins? How do you skip PC10…and does sda on pc9 cause any concern
if you dont need the lcd running. you can use pc10 for the vga signal. you cant destroy anything.
(in lcd mode this pin is an output too)
sda on pc9 is the same problem. if you dont want to use the touch everything is fine.
Thank you…thank you…one last question then I will leave you alone
I am also looking at doing 16 bit color on the stm32f4 discovery board…the pe port looks good…except pe0,pe1, and pe3 are tied to the motion sensor lis302…does the same apply…if I do not use the motion sensor then I can use those pins without concerns
Sorry my question was not very clear…
So can I use/drive all of the pe port/pins on the stm32f4 discovery board to do 16 bit vga color if I do not use the motion sensor? Pe0, pe1, and pe3 would be okay..correct?
Hi,
super Webseite. Sehr informatives und cooles Zeug.
Mal ne Frage: Wie wird denn das Display angesteuert? Hat das nen eigenen Controller wie zB SSD1263 oder muß der STM die ganze Arbeit (HSYNC + VSYNC wie damals zur 8-bit Ära wuchten? Ich hab die harte Tour mal mit nem SAM3X probiert, kam aber nix Gescheites dabei raus. Vielleicht könnte man sich da was abkucken.
Ach ja, noch was: Ich hab hiern 4.3-Zoll 480×272 Display mit nem XPT2048. Das Ding streut daß es einem schwindlich wird, gelegentlich springt die XY-Position des 2048 um 100 Pixel und zwar immer in die gleiche Richtung nach rechts (Touch-Anschluß ist unten).
Jemand ne Idee?
Gruß
Joachim
der F429 hat einen integrierten TFT-Controller.
Hallo Uwe,
Bei der Firmware des 429 discovery boards ist ein Treiber für ein I2C M24LR64 EEPROM mit dabei, den ich gerne nutzen würde. Ich bin in der Programmierung des I2C-Moduls bisher nicht bewandert, aber offensichtlich wird das gleiche Modul benutzt wie für den Touch-Controller. Dieser läuft schon und funktioniert prächtig, aber der EEPROM-Treiber will nicht funktionieren. Er steigt direkt beim Senden der Device-Adresse aus. Ist das EEPROM überhaupt verbaut? Weil alles so gut vorbereitet ist war ich eigentlich davon ausgegangen… Und wenn ja, könntest Du mich unterstützen? Ach ja, es handelt sich um die Softwareversion mit den alten Standard Peripheral Libraries. Ich habe bisher noch nicht auf die neuen Treiber umgestellt.
Vielen Dank und bis bald
Volker
wenn du die Library von ST meinst, dann bezieht sich diese auf ein externes
aufsteckboard “ANT7-M24LR-A”. Auf dem F429-Disco ist KEIN Eeprom vorhanden.
Danke, damit ist auch klar warum da nix antwortet…
Tell me please, what version of Coide supports microcontroller STM32F429i-DISCO?
Thank you
1.7.8