czwartek, 6 października 2011

Pierwszy projekt - Przyciski, Diody i Beep

Już niebawem opiszę mój wierwszy "program" na procesor z rodziny STM32. Póki co uploudowałem go na mojego chomika (link na dole strony). przy kolejnej arcy nudnej nocce w pracy postaram się naskrobać co nieco ów projekcie.


http://chomikuj.pl/bula87/STM32 - Projekt - Przyciski, Diody i Beep

Czysty szablon programu - Keil uVision 4

Jak zaczynałem pisać cokolwiek na STM32 moim pierwszym problemem (no może prócz instalacji i konfiguracji Keil'a) było skonstruowanie czystego schematu programu, który byłby podstawą do kolejnych projektów. Wszędzie znajdywałem jedynie albo całe projekty z kupą bibliotek i innych rzeczy, albo same fragmenty kodów. Nigdy nie programując nic w tym środowisku oraz na ten procesor, metodą prób i błędów stworzyłem sobie podstawowy projekt dla Keila v4, który stał się moim punktem wyjścia w kolejnych projektach. Jeśli ktoś byłby nim zainteresowany to zamieszczam go na moim chomiku (link na dole).

Dodatkowo opiszę, wspomniany wcześniej problem z konfiguracją Keila. Mianowicie, jako, że nie dysponowałem JTAG'iem, a jedynie płytką STM32 Value Line Discovery Kit z wbudowanym programatorem pod SWD postanowiłem tym sposobem programować moje procesory.
Ustawienie odpowiednich parametrów nie było trudne, ponieważ wystarczyło w menu FLASH->CONFIGURE FLASH TOOLS->UTILES oraz DEBUG na ST-Link Debugger, a dodatkowo w zakładce DEBUG po kliknięciu przycisku SETTINGS zaznaczeniu zakładki SWD.
Po tych zmianach mimio, że kompilator już nie pluł błędami to pojawił się kolejny problem. Okazało się, że próba zaprogramowania procesora nie przebiegała zgodnie z oczekiwaniami, a dokładniej mówiąc kliknięcie w przycisk FLASH->DOWNLOAD nie powodowało zupełnie niczego. Okazało się, że Keil wbudował sobie w wersje 4 taki oto błąd, że ta funkcja całkowicie nie działa (przynajmniej przy użyciu programatora po SWD) natomiast obejściem tego problemu okazało się wybieranie opcji DEBUG->START/STOP DEBUG SESSION. Po tym zabiegu Keil bezproblemowo uploudował kod do mikrokontrolera i go wykonywał. Następnie wystarczyło zakończyć sesję debugowania, zresetować procesor i wszystko działało jak należy.

To narazie tyle tytułem wstępu do programowania. Może moj podstawowy projekt nie jest hiper optymalny ale mi całkowicie wystarcza i znacznie ułatwia rozpoczęcie prac nad kolenymi projektami.

http://chomikuj.pl/bula87/STM32 - Czysty projekt - Keil v4

Opis Development Board - STM32 FireBull

 
Poniżej pokrótce przedstawię parametry posiadanej przeze mnie płytki, którą zakupiłem jakiś czas temu z Chin za pośrednictwem ebay.pl. Aby nie powielać licznych informacji do znalezienia w sieci, pozwolę sobie przytoczyć opis płytki z ów aukcji:



STM32F103VCT6 development board + 3.2'' TFT LCD touch screen
Features
  • MCU: STM32F103VCT6 from STMicroelectronics, incorporates the high-performance ARM® Cortex™-M3 32-bit RISC core operating at a 72 MHz frequency in LQFP100 package. The STM32F103VCT6 offers high-speed embedded memories(256KB FLASH, 48KB RAM), 12-bit ADC, DAC, PWM, I2C, SPI, I2S, SDIO, USART, USB, CAN, and FSMC.
  • 3.2'' TFT LCD touch screen, 320*240 resolution, 262k color, 8/16 bit bus, IO controlling, Stand-Alone touch controller chip, supports 1 SD card(SPI) and 1 DATA FLASH for storage application, such as images, files, data, etc.
  • 128M NAND FLASH, IO controlling, customized updating is available(supports up to 1G, 2G, 4G, etc.).
  • Onboard high performance MP3/WMA/MIDI audio decoder and ADPCM encoder: VS1003. It is a single-chip MP3/WMA/MIDI audio decoder and ADPCM encoder. It contains a highperformance, proprietary low-power DSP processor core VS DSP4, working data memory, 5 KiB instruction RAM and 0.5 KiB data RAM for user applications, serial control and input data interfaces, 4 general purpose I/O pins, an UART, as well as a high-quality variable-sample-rate mono ADC and stereo DAC, followed by an earphone amplifier and a common buffer.
  • One USB host port, features a file manage and control chip: CH376, used to MCU system read/write file in USB Flash Drive or SD card. CH376 supports USB-Device Mode and USB-HOST Mode. Set the basic firmware of USB communication protocol in the inner. It is also set firmware of special communication protocol to deal with Mass-Storage devices, communication interface firmware of SD card, FAT16, FAT32 and FAT12 file system manage firmware in the inner. It supports common USB storage devices (contains USB Flash Drive/USB hard disk/USB Flash memory/USB read card) and SD cards (contain SD card with standard capacity and HC-SD card with high capacity, MMC card and TF card compatible with protocol).
    • Supports 1.5Mbps low-speed and 12Mbps full-speed, compatible with USB V2.0, only needs crystal and capacitance external.
    • USB-HOST Mode and USB-DEVICE Mode, automatically switch Host Mode and Device Mode.
    • Supports USB device control transfer, bulk transfer and interrupt transfer.
    • Detects USB device plug and unplug automatically and sends message to USB host.
    • Set file system manage firmware of FAT16, FAT32 and FAT12, support the capacity up to 32GB USB Flash Drive and SD Card.
    • Supply file manage function: open, create or delete file, enumerate and search file, create the sub-catalog, and support the long file name.
    • Supply 8-bit passive parallel interface with 2MB speed, support parallel data bus connect to MCU.
    • Supply SPI device interface with 2MB/24MHz speed, support SPI serial bus connect to MCU.
  • One Ethernet port, features a Microchip Stand-Alone Ethernet Controller with SPI Interface: ENC28J60. Onboard RJ45 connector with transformer and indicator LED.
    • IEEE 802.3™ Compatible Ethernet Controller
    • Fully Compatible with 10/100/1000Base-T Networks
    • Integrated MAC and 10Base-T PHY
    • Supports One 10Base-T Port with Automatic Polarity Detection and Correction
    • Supports Full and Half-Duplex modes
  • One USB device port(supported by STM32F103VCT6)
  • Communication Interfaces: one CAN, one RS485two RS232
  • SD card slot that uses SPI interface
  • Memories: one EEPROM with I2C interface & one Data Flash with SPI interface
  • AD & DA function: one potentiometer for ADC input adjustment, Screw-terminated connectors for two channels ADC input & one channel DAC output
  • Human-Machine Interfaces: one buzzer, four user LEDs, one power indicator, one USB communication indicator, three user push-buttons, one joystick(five directions), one reset button
  • Powered from 5V DC or USB interface, configured via onboard jumper
  • Dimension: 15cm x 11cm



Oraz obrazek wraz z rozmieszczeniem elementów (moja płytka wygląda nieco inaczej, ale jedynie pod względem estetycznym tak więc cały układ został ten sam):


1. 5V DC jack
2. USB port (slave/device mode)
3. MCU
- STM32F103VCT6
- LQFP100 package
4. COM port 1 & 2
5. RS-232 transceiver: SP3232
6. Screw-terminated connectors for ADC & DAC
- two channels ADC input
- one channel DAC output
7. RS-485 transceiver: SP3485
8. Screw-terminated connectors for CAN & RS485
9. CAN transceiver SN65VHD230
10. NAND Flash, 128M
11. TFT LCD module connector
12. Battery holder
13. Data Flash with SPI interface
14. one joystick & three push buttons
15. MP3/WMA/MIDI audio decoder and ADPCM encoder: VS1003
16. Reset button
17. three audio ports
18. File manage and control chip: CH376
19. USB port (host mode)
20. Stand-Alone Ethernet Controller with SPI Interface: ENC28J60
22. Ethernet port
23. JTAG/SWD port
24. EEPROM with I2C interface



To by było na tyle jeśli chodzi o podstawowy opis płytki, na chomiku zamieściłem schemat elektroniki płytki.

http://chomikuj.pl/bula87/STM32 - Schemat - STM32F103VCT6_ board