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

 
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: 3220
Aktiv.: 33.18

PrispevekObjavljeno: Sob Mar 26, 2022 11:40 am    Naslov sporočila:  8 pinski ARM Odgovori s citatom

STM ima že nekaj časa zanimiv mikrokontroler STM32G0 v SO8 ohišju. Ker je poceni in celo normalno dobavljiv, sem jih nabavil nekaj za igranje.

STM32G031J6 ima vse, kar je spodaj na sliki. Če ima kdo kakšno zanimivo idejo, lahko skupaj naredimo kaj. Trenutno imam priključen ADC in grafični OLED, kar je skupaj en uporaben, miniaturni panel meter.



en.BD_STM32G031.jpg
 Opis:
 Velikost datoteke:  375.87 KB
 Pogledana:  8 krat

en.BD_STM32G031.jpg



_________________
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: Sob Mar 26, 2022 9:49 pm    Naslov sporočila:  Re: 8 pinski ARM Odgovori s citatom

mosqito je napisal/a:
Trenutno imam priključen ADC in grafični OLED, kar je skupaj en uporaben, miniaturni panel meter.


Tudi meni so tile tamali G vedno bolj zanimivi.
A lahko prosim, če ni kakšen problem, če objaviš shemo kako imaš to priključeno?

Pa še, ker očitno stvari dobro obvladaš, če lahko daš kakšen nasvet o strategiji uporabe čimveč (po možnosti kar vseh pinov). Kako se uporabi boot pin, reset pin ter swd in swc, da imajo ti pini svojo osnovno funkcijo, na primer za debagirat in da se jih lahko obenem uporabi še za kaj drugega.
Do sedaj kar sem delal sem boot pin navadno lahko uporabil, čaz uart se lahko naloži hex nato pa se ga uporablja za komunikacijo, kaj pa reset pin ter swd in swc?
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: 3220
Aktiv.: 33.18

PrispevekObjavljeno: Sob Mar 26, 2022 10:49 pm    Naslov sporočila:   Odgovori s citatom

OK, seveda, z veseljem.

Za te male mlinčke je zelo uporaben kar keilov uVision. Licenca je brezplačna za L0, G0 in F0 mlinčke. Tule so navodila za inštalacijo:
https://www2.keil.com/stmicroelectronics-stm32/mdk

Ker je čip (die) isti, kot v večjih ohišjih, so rešili težavo s samo 8 pini tako, da je na posamezen pin zbondiranih več padov. Primer spodaj za pin1, kjer je lahko kar nekaj funkcij. Na pin1 je npr. vezan PC14, PB7, PB8 in PB9. Tako lahko na tem pinu uporabimo katerokoli funkcijo, ki jo ponujajo ti porti (seveda ne vse naenkrat).

Med izvedenkami je nekaj razlik. Tako ima recimo STM32G030 in STM32G031 razliko v option bajtih. Na G030 se ne da izklopiti funkcije zunanjega reset-a in tako pin (4) ni uporaben, če je ob vklopu gor nizek nivo (se ne starta). Reset se da onemogočiti "run time", tako da je potem lahko npr. izhod in ima tudi nizek nivo. Na G031 se da to v option bitih izklopit in lahko pin 4 uporabiti tudi kot poljuben GPIO.

Pri uporabi pina 4, ki je reset vhod je potrebno paziti še na nekaj. V dokumentu
(RM0444) v poglavje 5.1.2 System Reset piše takole:

In this mode, the pin can be used as PF2 standard GPIO. The reset function of the pin is not available. Reset is only possible from device internal reset sources and it is not propagated to the pin.

Problem je ena majhna podrobnost:
Upon power reset or wakeup from shutdown mode, the NRST pin is configured as Reset input/output and driven low by the system until it is reconfigured to the expected mode when the option bytes are loaded, in the fourth clock cycle after the end of trsttempo.

Pin 4 (reset vhod) moraš imeti takoj po vklopu vsaj 250µs (tip), 400µs (max) na high, sicer bo ostal v resetu in ne bo štartal z nalaganjem konfiguracije iz option bajtov. Torej ni čisto poljubna izbira. Če imaš pin 4 kot vhod, moraš poskrbeti, da je ob vklopu za kratek čas visok nivo.

V nadaljevanju bom opisal primer, kako v uVision-u sprogramirat kak zanimiv primer. Za delo rabimo (poleg uVision-a) še ST-Link vmesnik (iz USB na SWD). Gre seveda tudi z bootloaderjem, samo jaz kar precej uporabljam tudi debugiranje in pride zelo prav. Tile dubug vmesniki so zelo poceni, je pa tudi na vsakem ST-jevem evaluation boardu.



pin1.jpg
 Opis:
 Velikost datoteke:  52.41 KB
 Pogledana:  1 krat

pin1.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: 3220
Aktiv.: 33.18

PrispevekObjavljeno: Sob Mar 26, 2022 10:50 pm    Naslov sporočila:   Odgovori s citatom

Aha, še to... če na reset pinu nikakor ni možno zanesljivo zagotoviti visokega nivoja ob vklopu, težavo reši tole.


trsttempo.jpg
 Opis:
 Velikost datoteke:  113.39 KB
 Pogledana:  31 krat

trsttempo.jpg



_________________
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 Mar 27, 2022 9:32 am    Naslov sporočila:   Odgovori s citatom

Hvala za podatke, sploh o uporabi reset pina.
Imam sedaj en služben projekt kjer bi mogoče uporabil lahko celo tega 8 pinskega, sicer pa je že en čas plan stm32g031f6p6.
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: Tor Jun 28, 2022 5:39 pm    Naslov sporočila:   Odgovori s citatom

Zdravo
Nekaj delam s STM32g031f6. Vsi pini so že uporabljeni, zmanjkal mi še ravno en izhod in bi rad uporabil reset pin kot gpio PF2. Nikakor ne znam pravilno nastaviti postopka in reset vedno ostaja le reset in ne postane PF2.
Prosim, če lahko kdo pove kje je napaka in mi kaj svetuje. Sledeča koda se za test enkrat izvede ob pritisku na neko tipko med delovanjem programa, potem pa naj bi bili novi option biti itak v flashu trajno spremenjeni a ne deluje:

HAL_FLASH_Unlock(); // odklene flash
HAL_FLASH_OB_Unlock(); // odklene option bajte

// v FLASH_OPTR registru nastavi GPIO mode za reset pin
FLASH->OPTR &= 0xf7ffffff; // postavi 0 na mesto 27 NRST kot gpio pin PF2
FLASH->OPTR |= 0x10000000; // postavi 1 na mesto 28

// pocaka da se s flashom nic ne dogaja
while( (FLASH->SR & FLASH_SR_BSY1) != 0 ) ;

FLASH->CR |= FLASH_CR_OPTSTRT; // postavi start bit za zacetek nalaganja
// option bite zapisuje v flash
while( (FLASH->SR & FLASH_SR_BSY1) != 0 ) ;

// nalozi novo konfiguracijo option bitov
HAL_FLASH_OB_Launch();

HAL_FLASH_OB_Lock(); // zaklene option bajte
HAL_FLASH_Lock(); // zaklene flash


GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOF_CLK_ENABLE();
//PF2 nastavi kot izhodni pin
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
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: 3220
Aktiv.: 33.18

PrispevekObjavljeno: Sre Jun 29, 2022 3:26 pm    Naslov sporočila:   Odgovori s citatom

Preveri lepo po vrsti:

Unlocking the Flash memory
After reset, write into the FLASH control register (FLASH_CR) is not allowed so as to
protect the Flash memory against possible unwanted operations due, for example, to
electric disturbances. The following sequence unlocks these registers:
1. Write KEY1 = 0x4567 0123 in the FLASH key register (FLASH_KEYR)
2. Write KEY2 = 0xCDEF 89AB in the FLASH key register (FLASH_KEYR).
Any wrong sequence locks the FLASH_CR registers until the next system reset. In the case
of a wrong key sequence, a bus error is detected and a Hard Fault interrupt is generated.
The FLASH_CR registers can be locked again by software by setting the LOCK bit in one of
these registers.


Če po unlock-u konča v hard fault, potem je napaka tam. Preveri še pravo zaporedje:

3.4.2 FLASH option byte programming
After reset, the options related bits of the FLASH control register (FLASH_CR) are write-
protected. To run any operation on the option bytes page, the option lock bit OPTLOCK of
the FLASH control register (FLASH_CR) must be cleared. The following sequence is used
to unlock this register:
1. Unlock the FLASH_CR with the LOCK clearing sequence (refer to Unlocking the Flash
memory)
2. Write OPTKEY1=0x08192A3B of the FLASH option key register (FLASH_OPTKEYR)
3. Write OPTKEY2=0x4C5D6E7F of the FLASH option key register (FLASH_OPTKEYR)

Any wrong sequence locks up the Flash memory option registers until the next system
reset. In the case of a wrong key sequence, a bus error is detected and a Hard Fault
interrupt is generated.
The user options can be protected against unwanted erase/program operations by setting
the OPTLOCK bit by software.



V glavnem, preveri, ali imaš vse, kot definira poglavje 3.4 v https://www.st.com/resource/en/reference_manual/rm0444-stm32g0x1-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

Preveri tudi vse "Noe" in "caution" zapise.

Poskusi še z STM32Cube programmer, če lahko nastavljaš option bite.

_________________
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: Čet Jun 30, 2022 3:06 pm    Naslov sporočila:   Odgovori s citatom

Hvala za nasvete.
Trudim se delati kot je v navodilih za uporabo. Flash se odklene, tudi option bite odklene, kar lahko vidim v debuggerju, ko izgineta kljukici pri lock in optlock v registru CR.
Po tem pa se nikakor ne da spremeniti vsebine registra OPTR. Izgleda kot da je še nekaj narobe. In potem se tudi optstrt bit v registru cr ne postavi. Pojma nimam zakaj. Še nekaj manjka??
Ali pa ja kak HW problem.
Še tole ne razumem: Če boot0 pin dam na 3.3V po resetu ne gre v boot. Boot1 je v option bitih in ga itak ne morem dati na 0. Si pa boot0 in swc delita pin 19 in pojma nimam kako procesor ve ali je tam boot pin ali swc. Očitno ima nov procesor tam swc ali kaj?? Iz data šita pa zastopim, da bi tam moral biti boot, swc pa je AF. Če nov čip programiraš z SW potem mu nekaj pove, da se tja postavi swd???
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: Sre Jul 06, 2022 7:22 am    Naslov sporočila:   Odgovori s citatom

Z uporabo STM32 st-link utility se da nastaviti option bite. Nrst_mode se da na gpio in reset pin deluje kot pf2.
Preko softwera pa zaenkrat še ne deluje. Je cilj, da se naredi kodo, ki bi ob vsakm zagonu pogledala stanje option bitov in če so različni od želenega stanja jih nato ustrezno nastavi. To bi se zgodilo le enkrat ob prvem zagonu procesorja. Koda zgoraj ne deluje v redu, ko bo narejeno tiskano vezje si bom vzel čas in se potrudil to narediti kot je treba. Če ima kdo izkušnje s tem nastavljanjem prosim, če lahko kaj svetuje in pomaga, ker zaenkrat še ne vem kje je napaka.
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
Stran 1 od 1

 
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