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 

STM32F4 discovery
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programiranje embedded sistemov
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Sentinel66
Član
Član



Pridružen-a: Sre 03 Feb 2016 19:29
Prispevkov: 214
Aktiv.: 2.16
Kraj: Ljubljana

PrispevekObjavljeno: Tor Sep 25, 2018 11:30 pm    Naslov sporočila:  STM32F4 discovery Odgovori s citatom

Pozdravljeni,

Sem študent računalništva, tekom študija smo se pri enem predmetu spoznali s omenjeno ploščico, naredili nekaj osnovnih stvari, vžig ledic, časovniki, itd., pri vsem pa so nam pomagali asistenti z navodili, itd. Moje vprašanje pa je naslednje. Kako pa se stvari lotiti ko nimaš navodil in imaš samo dokumentacijo ploščice ? Z žalostjo namreč ugotavljam da samo s tistim sam ne bi znal niti ledic vklopiti. Morda sem se tekom faksa preveč navadil na to da imam povsod točna navodila in postopke in izgubil tisti raziskovalni duh. Če omenim kje se mi je prvič postavilo to vprašanje - pri temperaturnem senzorju. Sam sem ga usposobil ker sem na spletu našel knjižnico in rešitev za točno to ploščico in točno ta senzor. V kolikor bi moral sam iz 0 spisati vse ukaze za poljuben senzor, sploh ne vem kje bi se lotil.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 13.23
Kraj: Lovrenc na P.

PrispevekObjavljeno: Sre Sep 26, 2018 8:27 am    Naslov sporočila:   Odgovori s citatom

Dokumentacija ploščice ti ne bo kaj dosti pomagala. Najlažji način je, da greš skozi primere našega soforumaša https://stm32f4-discovery.net/
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Sre Sep 26, 2018 9:27 am    Naslov sporočila:   Odgovori s citatom

Sentinel66, kaj te zanima točno?

Predlagam, da narediš naslednje:
- Inštaliraš Atollic TrueSTUDIO, free orodje za programiranje STM32
- Inštaliraš STM32CubeProgrammer, da boš imel enostaven dostop do programatorja/debuggerja
- Preneseš dol STM32CubeF4 package, ki ga dobiš na st.com
- Preseneš dol STM32CubeMX program, ki ti bo pomagal zgenerirati projekte.

Ta kombinacija je super za začetnike. Če potrebuješ še kakšna navodila, kako začeti, mi pošlji ime, priimek, email na tilen.majerle@st.com in ti omogočim MOOC račun, kjer imamo online treninge, takšne in drugačne.

_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
jurem
Član
Član



Pridružen-a: Tor 02 Dec 2003 15:53
Prispevkov: 408
Aktiv.: 1.84
Kraj: Ljubljana

PrispevekObjavljeno: Sre Sep 26, 2018 3:20 pm    Naslov sporočila:   Odgovori s citatom

Obstaja tudi 15 člankov v slovenščini na to temo, Svet elektronike pa je na voljo tudi v knjižnicah.

Lp
Jure
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sentinel66
Član
Član



Pridružen-a: Sre 03 Feb 2016 19:29
Prispevkov: 214
Aktiv.: 2.16
Kraj: Ljubljana

PrispevekObjavljeno: Sre Sep 26, 2018 6:45 pm    Naslov sporočila:   Odgovori s citatom

Hvala za vse odgovore, bom odgovoril kar po vrsti.

MarkoM je napisal/a:
Dokumentacija ploščice ti ne bo kaj dosti pomagala. Najlažji način je, da greš skozi primere našega soforumaša https://stm32f4-discovery.net/


Tudi sam sem se stvari lotil tako - poiskal sem podobne primere in za svoje potrebe prilagodil kodo. Vendar te primere je nekdo moral napisati - če citiram svojega mentorja: "boljše literature od Reference Manual-a ni". Problem nastane ko bi npr. rad implementiral branje iz določenega senzorja, za katerega primera na spletu ni.

tilz0R je napisal/a:
Sentinel66, kaj te zanima točno?

Predlagam, da narediš naslednje:
- Inštaliraš Atollic TrueSTUDIO, free orodje za programiranje STM32
- Inštaliraš STM32CubeProgrammer, da boš imel enostaven dostop do programatorja/debuggerja
- Preneseš dol STM32CubeF4 package, ki ga dobiš na st.com
- Preseneš dol STM32CubeMX program, ki ti bo pomagal zgenerirati projekte.

Ta kombinacija je super za začetnike. Če potrebuješ še kakšna navodila, kako začeti, mi pošlji ime, priimek, email na tilen.majerle@st.com in ti omogočim MOOC račun, kjer imamo online treninge, takšne in drugačne.


Ne boš verjel ampak ravno tvojo kodo sem uporabil za implementacijo temperaturnega senzorja in ko sem šel čez vso to kodo se mi je postavilo vprašanje kako si do te kode prišel, sam je z reference manualom ne bi znal spisati. Uporabljam IAR Embedded Workbench, ki smo se ga naučili uporabljati na faksu.

Za konec naj povem da pišem diplomo, v njej uporabljam stm32discovery in precej me ovira dejstvo da je stm32 precej obskurna zadeva, precej malo je na spletu uporabnih primerov (za razliko od npr. spletnih ogrodij kot javaee, django, kjer lahko najdeš primer za popolnoma vse kar si zmisliš). In moje osnovno vprašanje je šlo prav v tej smeri, ne da me zanima nekaj konkretnega ampak kako se lotiti iz 0, saj konec koncev je vse te tutoriale nekdo moral spisati iz 0 samo s pomočjo manual-a. Sklepam da me ovira moje pomanjkanje podrobnega elektrotehniškega znanja ?
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: 3221
Aktiv.: 33.19

PrispevekObjavljeno: Čet Sep 27, 2018 12:45 am    Naslov sporočila:   Odgovori s citatom

Sentinel66 je napisal/a:

Problem nastane ko bi npr. rad implementiral branje iz določenega senzorja, za katerega primera na spletu ni.


Jaz se tega lotim z branjem datasheeta. Redko uporabim kodo, ki je na voljo, ampak grem skoraj vedno pisati svojo kodo. Če ne drugega, da imam vse driverje za senzorje v lastnem "dialektu". Kaj si boš ti izbral, je odvisno od tebe. Nekaterim odgovarja uporaba makrojev, drugim direktna uporaba vrednosti. Izbiranje bitov v registrih lahko narediš s bitfieldi ali pa z logičnimi operacijami. Eno in drugo ima prednosti in slabosti. Podobnih načinov prostopa k problematiki pisanja driverja za nek senzor je še malo morje. Kaj boš izbral, je odvisno od izkušenj, oz. "kilometrine". Najbolje, da se stvari lotiš modularno in po vrsti:

- vsak senzor potrebuje funkcijo za branje (sicer bi ne bil senzor)
- v veliko senzorjev se vrednosti lahko tudi vpisuje (recimo neke nastavitve)

kako se lotiti teh dveh operacij?

Najprej loči harverski del, ki je odvisen od izbranega mikrokontrolerja in "pripravi" funkcijo za branje in vpis vrednosti v/iz senzorja. Če je ta na I2C, naredi funkcijo npr.
Koda:
read_reg(I2C_HandleTypeDef *hi2c, uint8_t adr, uint8_t reg, uint8_t *val)


in
Koda:
write_reg(I2C_HandleTypeDef *hi2c, uint8_t adr, uint8_t reg, uint8_t val)


Pri tem je hi2c kazalec na strukturo (handle) od I2C, ki si jo uporabil pri inicializaciji I2C in ga potem uporabiš pri dejanski interakciji preko I2C. S tem ločiš izbiro I2C (mikrokontrolerji jih imajo lahko več) od samega driverja za senzor. Pri inicializaciji boš uporabil npr. I2C2 na nekam MCU in npr. I2C1 na nekem drugem. Pri uporabi tvojega driverja potem ne bo potrebno spreminjati nič in ga boš lahko uporabil v vseh novih projektih...

Naslednji korak je definicija internih registrov nekega senzorja. Jaz tu velikokrat uporabljam bitfield-e, ker je enostavno za pisanje kode. Nekateri se bodo seveda križali, ampak s skrbno uporabo je to lahko kar močno orodje. Največja težava pri bitfieldih je, da se spremeni položaj MSB in LSB. O uporabi tega ali "hsift & mask" je bilo že veliko napisanega. Samo par linkov:
https://opensourceforu.com/2015/03/be-cautious-while-using-bit-fields-for-programming/
https://www.pagetable.com/?p=250
https://hackaday.com/2015/08/28/firmware-factory-bit-fields-vs-shift-and-mask/
itd...

Podajam primer za senzor Si7013 (temperatura, vlaga).

V datasheet-u je npr. na strani 34 opisan User register 1 s položajem in pomenom bitov. Poglej si tabelo in to primerjaj s spodnjo deklaracijo:


Koda:
/** \brief  Union type for the structure of User Register1 in Si7013
 */
typedef union
{
   struct
   {
         uint8_t res0      :1;        /*!< bit:  0 RES0 */
         uint8_t             :1;        /*!< bit:  1 reserved */
         uint8_t htre      :1;        /*!< bit:  2 heater enable */
         uint8_t           :3;        /*!< bit:  3...5 reserved */
         uint8_t vdds      :1;        /*!< bit:  6 VDDS */
         uint8_t res1      :1;        /*!< bit:  7 RES1 */
   } b;
   uint8_t r;
} si7013_reg1_t;


Pri pisanju funkcije za vpis ali branje potem lahko uporabiš direkten sklic na posamezne vrednosti posameznih bitov, tako da npr. prirediš polju res1 vrednost 1 ali 0, ali pa vpisuješ/bereš celotno vrednost kot bajt (preko polja "r").

Ko si definiral to za vse registre, se lotiš funkcij za branje in vpis v registre. Tu lahko za začetek implementiraš le funkcije, ki jih dejansko rabiš, kasneje pa dopolniš z vsemi ostalimi. Ni najbolj "higienično", samo ponavadi se mudi in nekaj kar se v kodi nikoli ne kliče/izvaja tudi prevajalnik spusti in ne uporabi.

Ta skupina funkcij uporablja strukture, ki si jih definiral za registre in kliče gornji funkciji za vpis/branje registrov.

S tem si driver večinoma zaključil. Ostane ti še kakšno preračunavanje vrednosti in podobno. To pa uporablja funkcije za vpis/branje registrov in vrača neke "human readable" vrednosti.

V glavnem: delaj po plasteh, najprej osnovno branje vpis, potem pa greš višje.

LP,
M.

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



Pridružen-a: Sre 03 Feb 2016 19:29
Prispevkov: 214
Aktiv.: 2.16
Kraj: Ljubljana

PrispevekObjavljeno: Čet Sep 27, 2018 1:28 am    Naslov sporočila:   Odgovori s citatom

Stvari se bom res moral lotiti po korakih, sem namreč čisti začetnik pri teh stvareh in ne gre tako lahko skozi kot npr. učenje novega jezika, tu gre za veliko več. Me pa veseli da imamo tudi v sloveniji community, ki se spozna na stm32, čez par dni se ponovno lotim diplome in bom z veseljem povprašal za nasvet pri konkretnih vprašanjih, prva stvar ki me čaka je branje podatkov z usb porta. Zaenkrat imam v ta namen ogledano knjižnico usb4java (knjižnica za branje v javi). Če ima kdo kakšno boljšo idejo (drug jezik, druga knjižnica) sem odprt za ideje.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Čet Sep 27, 2018 6:02 pm    Naslov sporočila:   Odgovori s citatom

https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-step-by-step.html?ecmp=tt8206_gl_social_sep2018
_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Sentinel66
Član
Član



Pridružen-a: Sre 03 Feb 2016 19:29
Prispevkov: 214
Aktiv.: 2.16
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 17, 2018 8:28 pm    Naslov sporočila:   Odgovori s citatom

Da ne bom odpiral nove teme bom kar tukaj vprašal. Kot rečeno diplomo delam s STM32, sedaj pa se je izkazalo da bom rabil še en majhen WIFI modul ESP8266, arduino. Med spoznavanjem z malo stvarco sem zašel še na razne arduino tutoriale in stvar me je šokirala.

Do sedaj kar sem uspel opaziti je, da je z arduinotom vse enostavno. Pri STM32 je potrebnih veliko vrstic za tako preprosto stvar kot je prižgati ledico. Pri branju s senzorja gre za ogromno količino kode, ki jo priznam polovico ne razumem. V arduinotu vse izgleda tako enostavno da večino stvari lahko opraviš z eno vrstico.

Čisto banalen primer, ki sem ga našel in bi bil pri meni uporaben. Branje voltaže. Koda izgleda takole:
Koda:
sensorValue = analogRead(A0)


Kolikor sem uspel na netu prebrati je STM32 superioren arduinotu kar se hardware-a tiče, vendar roko na srce, jaz delam precej preproste stvari. Resno razmišljam da bi presedlal na arduinota. Mi lahko kdo pove ali se motim glede zgoraj napisanega, sploh bi mi veliko pomenilo mnenje tilz0R-ja, ki je zelo domač z STM32.
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: 3221
Aktiv.: 33.19

PrispevekObjavljeno: Sre Okt 17, 2018 9:20 pm    Naslov sporočila:   Odgovori s citatom

Dokler ti ni potrebno početi stvari v realnem času, je arduino povsem uporaben. Če ne uporabljaš periferije kot je bila mišljena (npr.bit banging namesto hardverskega i2c) je arduino čisto ok. Če ti ni treba početi nekaj ob točno določenem trenutku, ampak lahko rešiš problem z zakasnitvijo, ki se izvaja v for zanki (wait v obliki zaporedja nop-ov), je arduino čisto ok. Če lahko shajaš z eno vrstico lastne kode (na osnovi nekih "knjižnic" neznanega izvora), da stvar "dela", je čisto ok. Če gre za domač projekt, ki ne rabi testiranja in lahko kadarkoli " zašteka" brez posledic je tudi čisto ok... Če ti je dovolj "debugiranje" zizpisom na serijski port bo a. več kot dovolj...
_________________
Always going the extra mile.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Sre Okt 17, 2018 11:14 pm    Naslov sporočila:   Odgovori s citatom

Kar pravi mosquito bo držalo.
Če pa karkoli od tega ne moreš prežvečiti, imaš pa STM32, ki ga lahko v CubeMX skonfiguriraš, exportaš v free TrueSTUDIO in potem uporabiš še mojo knjižnico za ESP8266 in imaš vse v paketu.

https://github.com/MaJerle/ESP_AT_Lib

_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Sentinel66
Član
Član



Pridružen-a: Sre 03 Feb 2016 19:29
Prispevkov: 214
Aktiv.: 2.16
Kraj: Ljubljana

PrispevekObjavljeno: Čet Okt 18, 2018 12:18 am    Naslov sporočila:   Odgovori s citatom

Hvala za odgovore,
sem pisal mentorju, če je sploh opcija da grem iz stm32 na arduino, kot rečeno enovrstičnice verjetno ne bodo dovolj za diplomsko nalogo. Je pa tako da imam večino kode v STM32 že spisane, rabim le še objavo podatkov iz STM32 na strežniku, za kar bom uporabil ESP8266, potem bom pa z ločene java aplikacije dostopal do teh podatkov. Pogojno bi moral uporabiti še en senzor in vidim da je opcija tudi da ga priklopim na ESP8266 direktno, po možnosti analogni senzor in z eno vrstico preberem vrednost.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Čet Okt 18, 2018 7:20 am    Naslov sporočila:   Odgovori s citatom

Sicer je odločitev tvoja. Misliš v življenju programirati embedded sisteme oz. se z njimi resno ukvarjati? Potem ti šef ne bo pustil, da uporabiš Arduino kodo Smile
_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Sentinel66
Član
Član



Pridružen-a: Sre 03 Feb 2016 19:29
Prispevkov: 214
Aktiv.: 2.16
Kraj: Ljubljana

PrispevekObjavljeno: Čet Okt 18, 2018 5:31 pm    Naslov sporočila:   Odgovori s citatom

Profesionalno se s embedded sistemi ne bom ukvarjal, bom si pa par stvari doma porihtal, verjetno kar s ESP8266 ker mi je blazno všeč Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 740
Aktiv.: 3.33
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Čet Okt 18, 2018 6:54 pm    Naslov sporočila:   Odgovori s citatom

Zanimiva tema, se bom navezal nanjo tudi s svojim vprašanjem. Po letih igranja s PIC32MX @ MPLAB, sem se odločil malce pofirbcati še okoli STM32 Smile. Za začetek:

- namestil Open STM32 - Eclipse system workbench http://www.openstm32.org/System%2BWorkbench%2Bfor%2BSTM32
- prek ST-link (USB) vmesnika povezal Olimex STM32F107 (razvojno) ploščico,
- spisal nekaj osnovnih vrstic v C: inicializacija PLL sistema urnih signalov CPU, čakalnih stanj branja iz EEPROMa, timerskega modula za generiranje časovnih zastavic, UART RX prekinitev za preprosto komunikacijo, jasno tudi prižiganje / ugašanje portov in podobne malenkosti... Vse periferne (in sistemske) enote inicializirane / uporabljane z neposrednim pisanjem / branjem registrov (z lastno kodo, pripravljeno na osnovi datasheeta in pripadajočega ST priročnika za programiranje), torej brez vključevanja predpripravljenih knjižnic za periferijo.

Zgoraj našteto zaenkrat deluje. Ker pa je želja oz. dolgoročni cilj tega igranja povezljivost IP / Ethernet, me zanima:

1. Ali ima kdo izkušnje z vključitvijo "IP stacka" v okolju "Open STM32" ? Če da, katerega ter koliko je stvar zahtevna in podokumentirana?

2. Kako je z IP stackom pri tej postavitvi:

tilz0R je napisal/a:

Predlagam, da narediš naslednje:
- Inštaliraš Atollic TrueSTUDIO, free orodje za programiranje STM32
- Inštaliraš STM32CubeProgrammer, da boš imel enostaven dostop do programatorja/debuggerja
- Preneseš dol STM32CubeF4 package, ki ga dobiš na st.com
- Preseneš dol STM32CubeMX program, ki ti bo pomagal zgenerirati projekte.


Največja ovira pri "Open STM-32" je, po mojih dosedanjih opažanjih, dokumentacija oz. njena dokaj slaba preglednost...
.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programiranje embedded sistemov Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group