Jakiś czas temu naszła mnie chęć na przesiadkę z mikrokontrolerów 8 bitowych ATMEG na 32 bitowe ARM’y STM32 które dają więcej wszystkiego ;). Może nie zawsze potrzebne jest to „więcej” ale warto je mieć na pokładzie :).
Zacząłem zabawę od blue pill, black pill które wyglądem przypominały Arduino nano. Jednak po zderzeniu z rzeczywistością czyli STM32CubeIde odpuściłem na rok, poprzeczka wisiała za wysoko. STM32 to nie arduino i kombinowanie z gotowymi bibliotekami na zasadzie działa/nie działa.
Minął jakiś czas i w końcu dojrzałem do STM32. Podszedłem do tego systemowo książka jedna druga, kompletne zestawy uruchomieniowe dedykowane do książek i dalej kulawo to idzie.
W końcu znalazłem w necie kurs STM32 prowadzony przez Mateusza Salamona msalamon.pl. Zapisałem się (zapłaciłem 🙁 bolało 😉 ) i czekałem na pierwszy odcinek kursu on-line. No i zaczęło się …. po 4 tygodniach swobodnie poruszam się po STM32CubeIde i innych narzędziach od STM’a a to dopiero 1/3 kursu 🙂 dalej było trudniej ale tematyka była też bardziej skomplikowana. Przy okazji poznałem innych wariatów 😉 których mogę zapytać o to czy tamto. Nie żałuję ani jednej złotówki wydanej na kurs i mogę go w 100% polecić innym.
Do projektu nowej wersji sterownika do akwarium potrzebowałem wyświetlacza dotykowego. Niewiele się zastanawiając klikam w popularny chiński market a tam oferują piękny zestaw STM32 + dedykowany TFT no idealne rozwiązanie dla mnie. Było to w okresie kiedy moja świadomość o STM32 była równa zero wiec radośnie kliknąłem.
Przyjechało, pełen werwy sklejam kanapkę podłączam USB pięknie uruchamia się wgrany program demonstracyjny i koniec rumakowania. Nic nie działa nie wiem jak coś tam wgrać generalnie katastrofa i porażka. No i to już w 100% zmotywowało mnie do szukania pomocy z tymi STM’ami a co za tym idzie zapisałem się na ww kurs.
Dość tych dywagacji historycznych czas do brzegu…
Jednak intuicja mnie nie zawiodła nieświadomie wybrałem całkiem fajną płytkę rozwojową. Ma na pokładzie wszystko czego trzeba do szczęścia:
Jądrem jest STM32F407VET6:
- STM32F407VET6 in LQFP100 package
- ARM®32-bit Cortex®-M4 CPU + FPU
- 168 MHz max CPU frequency
- VDD from 1.8 V to 3.6 V
- 512 KB Flash
- 192+4 Kbytes of SRAM including 64-Kbyte of CCM (core coupled memory) data RAM
- GPIO (82) with external interrupt capability
- 12-bit ADC (3) with 16 channels
- 12-bit DAC (1) with 2 channels
- RTC
- Timers (14)
- I2C (3) interfaces (SMBus/PMBus)
- I2S (2)
- USART (4)
- SPI (3)
- USB 2.0 full-speed
- USB 2.0 OTG
- CAN (2)
- ETH 10/100 Ethernet MAC
- FSMC (TFT)
Natomiast na płytce dodatkowo mamy:
- złącze 20pin JTAG/SWD
- slot karty Micro SD
- Winbond W25Q16 16Mbit SPI Flash
- RTC battery CR1220
- 3.3V LDO voltage regulator
- Mini USB connector
- 1x power LED
- 2x user LEDs D2 (PA6) D3 (PA7)
- 2x jumpers for bootloader selection
- Reset button,
- Wakeup button
- 2x user buttons K0 (PE4) and K1 (PE3)
- 2×24 side pins + 2×16 bottom pins + 1×4 ISP pins
- 2×16 FMSC LCD Interface
- NRF24L01 socket
Oscylatory
HSI | 16MHz |
LSI | 32kHz |
HSE | 8MHz |
LSE | 32.768kHz |
Fotki pacjenta:)
Schemat płytki:
JTAG SWD pinout:
# | Funkcja | PIN |
1 | VCC | +3,3V szyna |
2 | VCC | +3,3V szyna |
3 | TRST (NA) | PB4 |
4 | GND | GND |
5 | TDI (NA) | PA15 |
6 | GND | GND |
7 | TMS / SWDIO | PA13 |
8 | GND | GND |
9 | TCLK / SWCLK | PA14 |
10 | GND | GND |
11 | RTCK | NC |
12 | GND | GND |
13 | TDO / SWO | PB3 |
14 | GND | GND |
15 | RESET | NRST |
16 | GND | GND |
17 | N.C. | N.C. |
18 | GND | GND |
19 | N.C. | N.C. |
20 | GND | GND |
Slot karty Micro SD:
Na naszej płytce:
Funkcja/Interfejs SD | Wykorzystany PIN |
DAT2/SDIO_D2 | PC10 |
CD/DAT3/SDIO_D3 | PC11 |
CMD/SDIO_CMD | PD2 |
CLK/SDIO_SCK | PC12 |
DAT0/SDIO_D0 | PC8 |
DAT1/SDIO_D1 | PC9 |
domyślne piny w STM32CubeMX.
W25Q16 16Mbit SPI Flash.
# | Funkcja | Pin |
1 | FLASH_CS, F_CS | PB0 |
2 | FLASH_DO, MISO | PB4 |
3 | FLAS_WP | +3.3V szyna |
4 | GND | GND |
5 | FLASH_DIO, MOSI | PB5 |
6 | FLASH_CLK, SCK | PB3 |
7 | /HOLD | +3.3V |
8 | VCC | +3.3V |
FSMC dla TFT.
# | Funkcja | Pin |
1 | GND | GND |
2 | RST | Reset przycisk |
3 | FSMC D15 | PD10 |
4 | FSMC D14 | PD9 |
5 | FSMC D13 | PD8 |
6 | FSMC D12 | PE15 |
7 | FSMC D11 | PE14 |
8 | FSMC D10 | PE13 |
9 | FSMC D9 | PE12 |
10 | FSMC D8 | PE11 |
11 | FSMC D7 | PE10 |
12 | FSMC D6 | PE9 |
13 | FSMC D5 | PE8 |
14 | FSMC D4 | PE7 |
15 | FSMC D3 | PD1 |
16 | FSMC D2 | PD0 |
17 | FSMC D1 | PD15 |
18 | FSMC D0 | PD14 |
19 | FSMC NOE | PD4 |
20 | FSMC NWE | PD5 |
21 | FSMC A18 | PD13 |
22 | FSMC NE1 | PD7 |
23 | Touch CLK | PB13 |
24 | Touch CS | PB12 |
25 | Touch MOSI | PB15 |
26 | Touch MISO | PB14 |
27 | Touch PEN | PC5 |
28 | LCD Backlight | PB1 |
29 | VBAT | N.C. |
30 | GND | GND |
31 | 3.3V | 3.3V |
32 | GND | GND |
nRF24L01 slot
Moduł radiowy (nadajnik i odbiornik) działający w paśmie 2,4 GHz z Interfejsem komunikacyjnym SPI. Zasilany napięciem 1,9 V – 3,6 V, wyprowadzeniami są złącza goldpin. Posiada wbudowaną antenę oraz sprzętowe kolejki FIFO. Maks. zasięg do 100m. 😉
# | Funkcja | Pin |
1 | GND | GND |
2 | VCC | +3.3V |
3 | CE | PB6 |
4 | CSN | PB7 |
5 | SCK | PB3 |
6 | MOSI | PB5 |
7 | MISO | PB4 |
8 | IRQ | PB8 |
Przykład użycia (niesprawdzony)
Przykład użycia (niesprawdzony)
USB
USB Mini
# | Funkcja | Pin |
1 | VCC | +3.3V |
2 | D- | PA11 |
3 | D+ | PA12 |
4 | ID | N.C. |
5 | GND | GND |
Serial/ISP
# | Funkcja | Pin |
1 | VCC | +5V |
2 | GND | GND |
3 | RX | PA10 |
4 | TX | PA9 |
Ethernet interfejs (ETH)
MODE RMII
LAN8720 module | Funkcja | STM32F407VET6 | |
---|---|---|---|
TX1 | <=> | ETH_TXD1 | PB_13 |
TX_EN | <=> | ETH_TX_EN | PB_11 |
TX0 | <=> | ETH_TXDO | PB_12 |
RX0 | <=> | ETH_RXDO | PC_4 |
RX1 | <=> | ETH_RXD1 | PC_5 |
nINT/RETCLK | <=> | ETH_REF_CLK | PA_1 |
CRS | <=> | ETH_CRS_DV | PA_7 |
MDIO | <=> | ETH_MDIO | PA_2 |
MDC | <=> | ETH_MDC | PC_1 |
GND | <=> | GND | GND |
VCC | <=> | VCC | +3.3V |
Żródła:
https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0.html
https://os.mbed.com/users/hudakz/code/STM32F407VET6_Hello/shortlog
Bardzo fajna płytka, szczególnie w wersji z wyświetlaczem TFT LCD. Twój opis jest wart uwagi jako ściąga do pomocy w programowaniu układu. Na „naszym” forum kursu zadeklarowałeś pochylić się nad tematem obsługi tego wyświetlacza po FSMC. Z wielką ciekawością czekam na jakiś materiał na ten temat. A dotychczasowa praca super!
Brak czasu ale na 100% napiszę następny artykuł o tej płytce z TFT i dotykiem.
you can program and experiment with this board and others using the arduino ide but you have to install the STM files in the preferences block and load the boards into the board manager,you should also be able to user the TX/RX pins and the setup for the BOOT 0 pins its all online in Google. also the TX/RX pins are the back door and will work if set up correctly .CUBE IDE looks like a big monster but if you follow along with the STM tutorials you will be blinking leds and more ,but you will have to study also remember you are playing with top of the line products not a toy.