Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
STM32 generic board
Tako je, isto tako taj otpornik kod izlaza od MCU poboljsa signal na kraju voda, periferije isto tako (malo drugacije) vide signal kao sa predhodnih oscilograma.
Taj procesor ima veoma velik sleew-rate na svojim izlazima, neophodno zbog brzine, veci nego npr kod 8bit MCU i onda mora da se malo obrati paznja oko toga, za sve te novije kontrolere obavezno kada se napravi prototip valja da se provere signali na vodovima, i to sa onim "federima" za vrh sonde, bez "dugackih" GND zica sa stipaljkom.
Reply
(07-15-2017, 07:25 PM)progster Wrote: Drastično poboljšanje sa običnim metal-film otpornikom od 100R.

Drugar,

Mislim da ti može jako biti korisna AN-47 od Jim Williams-a.
Bez obzira što se radio o analognim op-amps, radi se o takvima kojima su tranzijenti brži od 74HC serije, tj. u klasi tog stm na 72MHz.
Ima mnogo toga korisnog oko tehnika merenja skopom i oko sondi i njihove konekcije. Nećeš zažaliti konzumaciju te app. note.

Pozdrav
Reply
@Macola

Hvala mnogo na preporuci, koliko sutra ću je proučiti. Smile
Nov sam u ovome, u svetu mikrokontrolera, i u svetu ovako brzih signala, bilo analognih, bilo digitalnih, tako da mi je svaka pomoć dobrodošla. Smile
Generalno, scope imam od skoro, tek par meseci, a obaveze na fakultetu su me pritisle pa sam tek sad našao vremena da se pozabavim sa tim.

Pozdrav.
Reply
Nema na čemu Progster.

Mnogi "matori vuci" koji se nisu kačili sa brzom impulsnom elektronikom, a koji su se dohvatili modernih MCU sa tranzicijama reda <20nS, znali su da "natrče" na neterminisano parče pcb koje ih maltene "u grob otera" jer se nedeljama namuče sa nekom sasvim prosečnom periferijom koja je malo odmaknuta, a zazvoni joj reflektovani talas na vodu i "prlja" podatke.

Kada god nisi siguran u prilagođenje voda i postojanje moguće refleksije, ne bilo ti teško, dodaj svakom pinu na MCU serijski otpornik od koju stotinu ohm...

Ja po defaultu dodajem na 5V MCU oko 680R na svaki pin (na 3V3 390R), pa tek iza radim šta želim.
Korist je višestruka:

- prigušio si refleksije i RLC odzvonjavanja čak i ako vodiš dugačke pcb iza,

- veoma si rasteretio MCU od kapacitativnih tereta iza, gde možeš da se provučeš sa manjim decoupling kondovima na MCU,

- sprečio si sam sebe da greškom ubiješ MCU ako mu konfigurišeš slučajno željeni input pin, kao out pin, a tu ti odnekud dolazi signal H :-)

- direktno iza kačiš većinu optokaplera ili led, jer već imaš optimalan serijski otpornik...

- imaš taj isti otpornik kao potencijalni jumper kojim možeš lako da otkačiš neki pin od okolnog sveta, a da ne seckaš pcb :-)

Eto tako.
Kad praviš pcb, odmah predvidiš fest do pinova po jedan otpornik, SMD ili TH, sve jedno. Malkice više košta, ali bar otpornici nisu skupi.

Pozz
Reply
Kutice za BluePill, model za 3D printer by @bogdan.kecman

https://www.thingiverse.com/thing:2461399
Reply
Hvala Miki,
Upravo pustili da "pržimo" ovu kutijicu, rezultati za 5-6 sati, realno sutra Smile
Reply
Evo par fotografija:

Reply
Cime je radjeno?
Reply
Ultimaker 3
https://ultimaker.com/en/products/ultimaker-3

Pri izradi su korišćeni PLA + PVA materijali.
Reply
Evo jedan fin i poucan primer kako baratati "low-level" registrima unutar STM32F103, bez upotrebe perifernih biblioteka ili CubeMX, koristi se samo osnovni CMSIS koji obezbeduje definiciju svih registra i dodaje start_up code.

Primer samo brzo togluje LED na plocici (PC13), brzinom oko 17.5MHz i zanimljivo je to posmatrati preko osciloskopa gde se vidi da je baratanje portom maksimalnom brzinom od 36MHz i da je while() struktura dosta sporija (oko 4.5MHz) pa se vide "pauze".

Program sam pokrenuo preko Keil uVision 5, ali posto je potpuno nezavistan od drugih biblioteka lako ga je portovati na GCC okruzenje, to planiram u narednim danima, trebam napisati make/linker skriptu ...

PHP Code:
/*
Bare minimum primer za blink LED za BluePill plocicu sa STM32F103C8
Koristi se samo osnovni CMSIS core bez dodatnih drajvera
Primer je pokrenut kroz Keil uVision 5
*/

#include "stm32f10x.h"

int main(void) {
    
    
//-------------------------------------------------------
    //----------- Konfiguracija za Clock --------------------
    //-------------------------------------------------------
    
    //prilikom reseta default je interni RC oscilator, da bi radio sa externim 
    //kristalom mora da se enabluje HSE (High Speed External) u RCC (Reset and Clock Control)
    
RCC->CR |= RCC_CR_HSEON//External High Speed clock enable
    
    //posto treba vremena da se stabilizuje clock, cekamo RCC_CR_HSERDY flag
    
while (!(RCC->CR RCC_CR_HSERDY )) {
        ; 
//cekaj tu
    
}
    
    
//aktiviramo PLL za HSE
    
RCC->CR |= RCC_CR_PLLON;

    
//postavljamo da je HSE izvor cloka za PLL
    
RCC->CFGR |= RCC_CFGR_PLLSRC_HSE;
    
    
//stavljamo x9 za PLL (8MHz * 9 = 72MHz) u registar RCC_CFGR
    
RCC->CFGR |= RCC_CFGR_PLLMULL9;
        
    
//cekamo PLL da se stabilizuje
    
while (!(RCC->CFGR RCC_CIR_PLLRDYC )) {
        ; 
//cekaj tu
    
}
    
    
//za APB1 bus je prebrzo 72MHz, maksimum je 36MHz, 
    //ukljucujemo delitelj /2
    
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;
    
    
    
//-------------------------------------------------------
    //----------- Konfiguracija za I/O port -----------------
    //-------------------------------------------------------
    
    //svaka periferija je po resetu iskljucena tako sto 
    //joj je iskljucen clock
    //Da bi radila mora da se ukljuci
    
    //ukljuci clock za sistemski bus AHB
    //ovo je opciono, po default je ukljuceno za SRAM i FLASH memoriju
    
RCC->AHBENR |= RCC_AHBENR_SRAMEN;
    
RCC->AHBENR |= RCC_AHBENR_FLITFEN;    
    
    
//ukljuci clock za APB2, on je za sve GPIOx
    
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN//GPIOA
    
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN//GPIOB
    
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN//GPIOC
    
    //konfiguracija PC13
    //po default svi pinovi su Input
    //ima dva registra CRL za pinove 0-7 i CRH za pinove 8-15
    //definisi ga kao general purpose Output push-pull, 50MHz
    
GPIOC->CRH &= ~GPIO_CRH_CNF13_0//ocisti bit CNF13_0
    
GPIOC->CRH &= ~GPIO_CRH_CNF13_1//ocisti bit CNF13_1
    
GPIOC->CRH |=  GPIO_CRH_MODE13_0//setuj bit MODE13_0
    
GPIOC->CRH |=  GPIO_CRH_MODE13_1//setuj bit MODE13_1
    
    //atomic setovanje (BS) ili resotovanje (BR) pojedinacnog bita porta 
    
GPIOC->BSRR=GPIO_BSRR_BR13//0 = TURN LED ON
    
    
while(1) {
        
//tu se vrtimo ...
        
GPIOC->BSRR=GPIO_BSRR_BR13;
        
GPIOC->BSRR=GPIO_BSRR_BS13;
        
GPIOC->BSRR=GPIO_BSRR_BR13;
        
GPIOC->BSRR=GPIO_BSRR_BS13;
        
GPIOC->BSRR=GPIO_BSRR_BR13;
        
GPIOC->BSRR=GPIO_BSRR_BS13;
        
GPIOC->BSRR=GPIO_BSRR_BR13;
        
GPIOC->BSRR=GPIO_BSRR_BS13;
    }
    

Reply
hehe, meni su te kutije bas znacile, vise ne mogu da jurim bp-ove po stolu a cesto ih trosim .. pa reko da spucam nesto na brzaka .. obratite paznju samo ima 2-3 verzijhe bp-a vezano za usb steker i za debljinu pcb-a tako da .. mozda treba jos neka debljina da se doda Big Grin

@miki, za ovaj "native", ko sto rekoh, sve je to lepo al visual debugger je visual debugger Big Grin .. a i kad zabodes malo kompleksnije stvari (network, sdio.. ) koriste brate one biblioteke samo tako Big Grin
Reply
@mikikg
Evo trude se iz ST-a da još malo poprave low-level situaciju, pored Snippets-a ovo su ponudili od skora:
http://www.st.com/content/st_com/en/abou...n3949.html
Reply
Hehe, probao sam to pre nego sto sam otisao na odmor ...
Iskreno nisam skontao uopste o cemu se tu radi jer sam gledao generisan code, sve ono sto je predhodno bilo tipa HAL_blabla sad je LL_blabla Smile
Pisano u Javi, pa nema Java na Win10, pa skidaj jos 100+ MB instalaciju, aman ...Smile

Dok sam pisao ovaj gore primer pala mi je jedna ideja napamet, a to je da ja napravim svoj online "STM-kockatore" Smile

Recimo, da bi inicializovao jedan PIN treba da se upise "nesto" u maksimalno dva registra! Sto to ne mogu da budu dve linije code-a??

Napravi se JavaScript engine koji na kliktanje iskonfigurise/generise dve linije code-a!
To nije nikakva nauka napraviti, neka bude za pocetak za jedan samo procesor STM32F103C8 i da samo sluzi za generisanje code-a za GPIO.

Debelo razmisljam o tome da napravim takav engine ...

Ja to gledam tako da sve sto moram da ponavljam X puta da nekako automatizujem i uvek mi se pokazalo kao ispravno razmisljanje da ulozeno vreme u takve stvari se kasnije uvek isplate.

Hocu "kockatore" ali koji generise veoma kompaktan code ...

Trazio, niko nije napravio nista slicno Smile
Reply
Nisam još konkretno isprobao, ali kao što sam već pisao ranije meni su "Standard Peripherial Libraries" koje je STM koristio do pre par godina bile nekako logičnije i pravilnije pisane i kao framework bile su na nižem nivou od HAL-a. E sad ovo što su izbacili omogućava da se kodovi pisani u ovom frameworku "lagano" iskonvertuju u HAL kompatibilne kako bi mogli stari projekti da se koriste i time nasledi mnogo niži nivo rada sa registrima sa ST kontrolerima. Jer očigledno da rutine u HAL frameworku nisu dovoljno optimizovane za neke od projekata.

Ja sam tako razumeo ovaj ST pokušaj sa LL API.

Što se tiče "STM-kockatore" ideja je odlična, ali mislim da su ST kontroleri prilično šareni sa nekim osnovnim registrima i podešavanjima, pa je upitno koliku kompatibilnost možeš da postigneš. Ali recimo ako se vežeš za STM32F103 i samo njega uradiš onda i nije tako strašno Smile

Na primer kod Microchip-a mnogo je jednostavnije koristiti IO portove, imaš TRIS, PORT i LAT registre. Postaviš 1, 0 i to je to. Kod ST-a (ARM-a) imaš jedan registar pa zavisno od pozicije odnosno bita gde staviš "1" setuješ IO pin na 0 ili 1 itd... da ne dužim, mislim da je prilično komplikovaniji pristup u odnosu na ove prve. To su u novim generacijama nešto ispravljali, pa otud i šarenilo. Recimo ja češće koristim STM32L generaciju ST mikrokontrolera.
Reply
Da li je neko probavao STM32F407VET6, da li se može preko Arduino softvera programirati?

[Image: eda8217b-160c-429e-a3d2-25149b2f28af.JPG]

Slično nešto kao Arduino Mega, samo što ovo ima dodatke za tft, nrf modul, SD karticu i još ponešto.
Reply
Sličan iz te serije sam koristio čisto znatiželje radi, na Discovery board-u:
http://www.st.com/en/evaluation-tools/st...overy.html

Rade ti mikrokontroleri veoma dobro.
Kasnije se izrodilo dosta novih i moćnijih sa extremno malom potrošnjom a bazirani na CortexM4, STM32L4xx tako da mislim da nema tu problema...

Najozbiljniji projekat koji smo radili sa CortexM4 je sa korišćenjem STM32F429ZIT6 i taj mikrokontroler nam je u profi uređaju sa dosta kompleksnih taskova.
Mašina nema šta...
Reply
STM32F4xx tj Cortex M4 je previse "ozbiljan" (kompleksan) kontroler za okrezunje poput Arduino.
Mislim da pod Arduino imaju samo osnovne funkcije podrzane, tipa GPIO, tajmeri i seriske komunikacije, ostale stvari zbog komplekstnosti nisu jos podrzali i pitanje je da li ce biti u buducnosti.
Reply
@mikikg iz tvog posta negde na pocetku ove teme, videh da si Blue Pill plocicu pretvorio u BMP, jel sa njom mozes da radis JTAG Boundary-Scan?
Reply
Ne znam da li je mesto dobro, ali ajde da postavim pitanje ovde.
Ako na STM32 definisem u C-u

unsigned char Niz[100];

koliko bajtova ce biti zauzeto u memoriji kontrolera? Da li ce biti zauzeto 100 bajtova ili 400 bajtova posto je 32-bitni MCU? Koristim Atollic TrueStudio i ne znam jos uvek kako mogu da gledam zauzetost memorije.
Reply
400 bajtova, nema manja memoriska lokacija od 32bit, ne moze u jednoj lokaciji posle da imas 4 char adrese Wink
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)