www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

8-pinski ARM in (simuliran) 16 segmentni prikazovalnik
Pojdi na stran 1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Sob Avg 13, 2022 11:57 pm    Naslov sporočila:  8-pinski ARM in (simuliran) 16 segmentni prikazovalnik Odgovori s citatom

Tule bom opisal en primer uporabe 8 pinskega mikrokontrolerja. Morda komu prav pride za kakšen projekt.

Na STM32G031 z osmimi pini bomo obesili en OLED prikazovalnik velikosti 128x32 na I2C. Dva pina bosta še porabljena za Rx in Tx (UART), dva sta za debugiranje in dva za napajanje. Potem pa že zmanjka.

En tak "segment" je lahko dokaj fleksibilen in ni nujno, da je prikaz zgolj "butast" segment, ampak lahko načeloma sprogramiramo še kaj več. A o tem kasneje. Gremo lepo po vrsti.

Najprej osnovna shema (v priponki). Na vezju je dodana še rešitev zaradi težave z resetom, ki sem jo opisal tukaj.

Osnovna ideja je, da se več takih modulčkov "naštrika" enega za drugim in v celoti tvorijo večji prikazovalnik. Ker so OLED prikazovalniki dokaj poceni, se da potem s tem narediti npr. neko tablo na javnem prostoru, ki bo prikazovala neke informacije (npr. temperaturo, stanje kakovosti zraka, ...).

Omenjeno "štrikanje" gre tako, da se Tx enega modula poveže na Rx naslednjega. Pri izpisu na tako verigo potem ni treba drugega, kot da pošljemo string, vsak od modulov prikaže prvi znak, ki ga je sprejel, ki ga od stringa odreže in string pošlje naprej. Zelo enostavno se potem lahko doda še razne "komande" v obliki ESC sekvenc, podobno kot je bilo na starih printerjih.



SegmentOled_sch.pdf
 Opis:

Download
 Ime datoteke:  SegmentOled_sch.pdf
 Velikost datoteke:  45.61 KB
 Downloadano:  23 krat


_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Wrecker
Član
Član



Pridružen-a: Pet 11 Feb 2011 22:43
Prispevkov: 250
Aktiv.: 1.56

PrispevekObjavljeno: Ned Avg 14, 2022 9:33 am    Naslov sporočila:   Odgovori s citatom

Prima da si se tega končno lotil. Bo zanimivo spremljat.
Mam takoj nekaj amaterskih vprašanj:
-Zakaj na reset pinu ne more biti samo en pullup upor? TX je nato itak push pull izhod in ga tisti upor nič ne bi motil?
-Ali bi lahko uporabil strategijo, da bi debbugirna pina v procesu razvoja uporabljal za debugiranje, na koncu pa bi ju namenil, da počneta še kaj preprostega in koristnega. Kodo - hex file pa bi se nato nalagalo preko uarta? Ali si tako nalagneje kode mogoče za ta procesor že kaj preizkusil? Kako je z bootom in resetom v tem primeru? Ali bi bilo to sploh možno?
-Če bi na primer 100 teh modulov, ki bodo krmilili prikazovalnik z led diodami zvezal zaporedno, koliko časa bi trajalo osveževanje od prvega do zadnjega? Ali je treba vmes še kakšne driverje ali kaj takega ali je tu to nepotrebno?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:35 am    Naslov sporočila:   Odgovori s citatom

Naslednji korak je bamestitev razvojnega okolja. Sam nekako nisem pristaš špageti kode, ki jo zgenerira cube za stm32. Po drugi strani pa je pisanje vsega iz nule tudi zrlo zamudno in praktično nesmiselno. Lahko pa uberemo eno srednjo pot, ki se mi zdi dokaj optimalna. Uporabili bomo pripravljene HAL knjižnice, inicializacijo in vse ostalo pa bomo pripravili sami.

Tule so navodila za namestitev brezplačnega ARM razvojnega okolja za STM32F0/G0/L0 in BlueNRG-1/2/LP/LPS:
https://www2.keil.com/stmicroelectronics-stm32/mdk

Po namestitvi je potrebna aktivacija s serisko številko, ki je na gornji spletni strani.

Nameščeni MDK je na osnovi različice "essentials", obstajata pa še plus in professional, ki pa sta plačljivi.

Primerjava različic:
https://www2.keil.com/mdk5/selector

_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 10:30 am    Naslov sporočila:   Odgovori s citatom

Za programiranje in debugiranje rabimo mali, poceni vmesnik st-link. Na amzon/ebay se jih dobi za nekaj eur. Opcija je tudi samogradnja, za tiste ki bi se spuščali v tako smer... https://e.pavlin.si/2016/02/28/how-to-program-blank-stm32f1-with-stlink-v2-firmware/

Kdor se misli vsaj malo bolj ukvarjati z mikrokontrolerji STM32, pa priporočam nov stlink-v3mods:
https://www.st.com/en/development-tools/stlink-v3mods.html

Poleg SWD porta za programiranje in debugiranje ima še virtualni serijski port in tudi premostitev za ostale vmesnike, ki omogočajo nalaganje kode preko bootloaderja (poleg uart še SPI, I2C, CAN).

Zaloge hitro izginjajo. Pred enim tednom jih je bilo na mouserju še 860, zdaj pa ni nobenega. Ima jih digikey.

Par kosov sem naročil, tako da če kdo rabi, naj mi sporoči. Ceno sporočim, ko pride mimo carinskih kolobocij.

_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 8:59 pm    Naslov sporočila:   Odgovori s citatom

Wrecker je napisal/a:
Prima da si se tega končno lotil. Bo zanimivo spremljat.
Mam takoj nekaj amaterskih vprašanj:
-Zakaj na reset pinu ne more biti samo en pullup upor? TX je nato itak push pull izhod in ga tisti upor nič ne bi motil?

Shema je bila na začetku bolj splošno naravnana in tako je tudi ostalo v tem primeru. Za dano aplikacijo je dovolj pullup, oz. še ta ni potreben v nekaterih primerih.

Wrecker je napisal/a:

-Ali bi lahko uporabil strategijo, da bi debbugirna pina v procesu razvoja uporabljal za debugiranje, na koncu pa bi ju namenil, da počneta še kaj preprostega in koristnega. Kodo - hex file pa bi se nato nalagalo preko uarta? Ali si tako nalagneje kode mogoče za ta procesor že kaj preizkusil? Kako je z bootom in resetom v tem primeru? Ali bi bilo to sploh možno?


Vsekakor je izvedljivo. Tudi če bi kaj zaklenil, imaš še vedno opcijo, da delaš "under reset", le ob zagonu/power-up moraš imeti definirane nivoje, da ostanejo pini na default vrednosti in te koda ne "prehiti" in ti spremeni funkcijo. V tem primeru si bi zaklenil dostop do SWD. Kar se tiče bootloaderja, je možno programirati preko UART ali I2C. Če bi šel piat lasten bootloader, pa je ta lahko tudi v internem RAM.

Wrecker je napisal/a:

-Če bi na primer 100 teh modulov, ki bodo krmilili prikazovalnik z led diodami zvezal zaporedno, koliko časa bi trajalo osveževanje od prvega do zadnjega? Ali je treba vmes še kakšne driverje ali kaj takega ali je tu to nepotrebno?


Če so "naštrikani" eden na drugega, jih komot povežeš enega na drugega (Tx1-Rx2, Tx2-Rx3, ...). Zakasnitev je v končni fazi odvisna bolj ali manj od hitrosti prenosa, saj je posredovanje naprej lahko bajt-po-bajt, vse pa dela DMA, tako da niti CPU nič ne obremeniš.

_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:20 pm    Naslov sporočila:   Odgovori s citatom

Kdor sledi tej temi tudi aktivno, naj se prosim javi (lahko tudi kdaj kasneje, ko bi šel kdo gledat za nazaj).


Poleg inštalacije uVision-a priporočam še inštalacijo enega od pripomočkov za delo github repozitoriji. Super enostavna je "želvica", ki se sicer integrira v win shell in je dostopna preko desnega klika.
https://tortoisegit.org/


Kogar to moti, si lahko namesti https://desktop.github.com/

Če je pa tudi to preveč, pa bo za začetek zadoščalo že, da samo repozitorij prenesemo v obliki ZIP datoteke.


Rabili bomo STM32CubeG0 HAL Driver MCU Component, ki se nahaja tule:
https://github.com/STMicroelectronics/stm32g0xx_hal_driver

Prvi dve opciji sta dostopni preko desnega klika (ustvarimo si eno novo mapo, desnoklik in izberemo eno od opcij)...



gitclone.jpg
 Opis:
 Velikost datoteke:  33.36 KB
 Pogledana:  1 krat

gitclone.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:22 pm    Naslov sporočila:   Odgovori s citatom

Lahko pa na spletni strani izberemo zelen gumb "CODE" in eno od opcij (desktop, če smo ga namestili), ali pa download ZIP, če nimamo nič nameščenega.


github.jpg
 Opis:
 Velikost datoteke:  136.21 KB
 Pogledana:  2 krat

github.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:26 pm    Naslov sporočila:   Odgovori s citatom

Za naš primer sta potrebni mapi "inc" in "src".

Zdaj lahko pričnemo z novim projektom v uVision-u. Najprej poženimo našo novo lepo frišno inštalacijo. Pokaže se okno aplikacije, praviloma brez odprtih datotek v editorju.

Najprej kliknemo na "Pack installer":



keil5_pack_installer.png
 Opis:

Download
 Ime datoteke:  keil5_pack_installer.png
 Velikost datoteke:  4.94 KB
 Downloadano:  3 krat


_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:28 pm    Naslov sporočila:   Odgovori s citatom

Na levi strani izberemo "STM32G0 Series"...


pack_g0.jpg
 Opis:
 Velikost datoteke:  112.48 KB
 Pogledana:  3 krat

pack_g0.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:30 pm    Naslov sporočila:   Odgovori s citatom

Na desni strani pri izbiri "Keil::STM32G0xx_DFP" kliknemo na "Install". Ko Pack Installer opravi svoje delo, se gumb obarva v zeleno:


pack_g0-1.jpg
 Opis:
 Velikost datoteke:  44.41 KB
 Pogledana:  1 krat

pack_g0-1.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:32 pm    Naslov sporočila:   Odgovori s citatom

Zdaj lahko zapremo pack installer in v glavnem oknu IDE kliknemo na Project - New uVision project:


keil5_new_project.png
 Opis:

Download
 Ime datoteke:  keil5_new_project.png
 Velikost datoteke:  5.8 KB
 Downloadano:  2 krat


_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:39 pm    Naslov sporočila:   Odgovori s citatom

Izberemo si mapo na disku, kjer bo naš nov projekt shranjen, ga poimenujemo (npr ForumVaja1) in kliknemo OK. Pojavi se okno za izbiro MCU, kjer izberemo na vrhu (1) "Software packs" (za kake prastare ARM7 je izbira lahko tudi "Legacy / no RTE", če bi se kdo rad igral s to starino). V (2) Search lahko vpišemo stm32g0 in spodaj izberemo (3) STM32G031J6Mx ter kliknemo (4) OK.

V search lahko tudi vpišemo celoten part number za izbrani 8-pinski STM32: STM32G031J6M



izbira-proj.jpg
 Opis:
 Velikost datoteke:  90.63 KB
 Pogledana:  1 krat

izbira-proj.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:42 pm    Naslov sporočila:   Odgovori s citatom

Sedaj se pojavi okno "Manage Run-Time Environment", kjer izberemo le dve komponenti in sicer pod CMSIS obkljukamo "CORE" ter pod Device obkljukamo "Startup".

Kliknemo OK in pojavi se osnovno okno urejevalnika.

Zdaj lahko začnemo s programiranjem.



Manage Run-Time Environment.jpg
 Opis:
 Velikost datoteke:  164.84 KB
 Pogledana:  2 krat

Manage Run-Time Environment.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:50 pm    Naslov sporočila:   Odgovori s citatom

Na levi strani je pregled vse source kode. Na vrhu je naš projekt s svojim imenom, ki se nadaljuje z drevesno strukturo datotek z izvorno kodo. Vidimo, da imamo Device in CMSIS mapi, ki sta se dodali preko izbire v prejšnjem koraku. Če ju razširimo, v CMSIS ne bomo imeli (še) ničear v "Device" pa sta dve datoteki "Startup..." in "System...". To bi bilo enako tudi pri kakem drugem izbranem mikrokontrolerju.

Kako dodamo novo source kodo v projekt?

V projektu imamo zavihek "Source group 1". To lahko preimenujemo. Za zdaj kar pustimo kot je, le z desnim klikom na to mapco izberemo opcijo "Add new item to Group":



add new item.jpg
 Opis:
 Velikost datoteke:  74.54 KB
 Pogledana:  2 krat

add new item.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mosqito
Član
Član



Pridružen-a: Čet 07 Apr 2016 23:22
Prispevkov: 3234
Aktiv.: 33.07

PrispevekObjavljeno: Ned Avg 14, 2022 9:55 pm    Naslov sporočila:   Odgovori s citatom

Pojavi se okno za izbiro nove komponente (datoteke). Najprej izberemo tip "C File" (1).

Tega poimenujemo (2) v main.c

Izberemo še, kam naj se shrani. Kliknemo na "tripikce" (3), pojavi se okno za izbiro mape.

Tu ustvarimo novo mapo (4) Make new folder in jo poimenujemo "src" (5). Tu notri bodo vse naše source datoteke.



addnew-main.jpg
 Opis:
 Velikost datoteke:  73.95 KB
 Pogledana:  2 krat

addnew-main.jpg



_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 70 dni


Powered by phpBB © 2001, 2005 phpBB Group