Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

STM32 clock

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] STM32 clock

Messaggioda Foto Utentealle96 » 9 mar 2015, 18:19

Salve, sono tornato con altri dubbi :ok:

Per merito dei vostri consigli sono riuscito ad utilizzare GPIO, timer ed interrupt su keil uvison5 utilizzando il micro della stm32f4-discovery.
Usando il timer mi sono reso conto che la scheda non gira a 168Mhz. Ho provato a scrivere la funzione per il clock.
Ecco il risultato:
Codice: Seleziona tutto
RCC ->CR |= RCC_CR_PLLON; //attivo pll
   RCC ->CR &= ~(RCC_CR_HSEBYP); //non bypasso
   RCC ->CR &= ~(RCC_CR_HSION); //no HSI
   
   RCC ->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; //HSE source
   RCC ->PLLCFGR |= RCC_PLLCFGR_PLLM_3; //divide by 8
   RCC ->PLLCFGR |= 0x5400; //moltiplico per 336
   RCC ->PLLCFGR |= RCC_PLLCFGR_PLLP_1; //re-divede by 2
   
   RCC ->CFGR |= RCC_CFGR_SW_HSE; //seleziono l'HSE
   
   RCC ->CR |= RCC_CR_HSEON; //attivo HSE
   while(!RCC_CR_HSERDY);


Non ho un oscilloscopio per verificare ma voi cosa ne pensate? ho scritto le cose bene?
Scusate se ho fatto qualche errore elementare O_/
Avatar utente
Foto Utentealle96
15 4
 
Messaggi: 47
Iscritto il: 21 feb 2012, 16:21

1
voti

[2] Re: STM32 clock

Messaggioda Foto UtenteTardoFreak » 9 mar 2015, 19:54

Nell' F4 bisognerebbe verificarlo ma probabilmente devi anche impostare il numeo di wait states per la memoria interna altrimenti il micro non può funzionare.
Se usi la "Standard Peripheral Library" della STM tutte queste funzioni vengono fatte in automatico.
La scarichi dal sito della ST e ci sono i modelli da copiare per realizzare un nuovo progetto.
E' obbligatorio leggersi la documentazione per capire come funziona il framework ma poi ti può esserre molto utile, soprattutto per l' inizializzazione delle periferiche e per le prime prove con queste.

Ricordati che le periferiche (include le GPIO) non basta abilitarle, bisogna fornire loro il clock perima di farci qualsiasi cosa, anche solo l' inizializzazione.

Se usi una periferica (ad esempio la seriale) che usa dei PIN di I/O devi dare il clock a questa, il clock alla GPIO corrispondente, Inizializzare i PIN di I/O e poi la periferica.

I Cortex sono un po' macchinosi, non sono per principianti.

Un sistema semplice per iniziare a provare qualcosa (che consiglio vivamente e fortemente ai neofiti degli ARM) è prendere il classico progetto "blinky" che ti fa lampeggiare un LED e partire da questo come base per sviluppare i tuoi progetti.

Partire da zero significa studiare per un paio di mesi e non riuscire neanche a far lampeggiare un LED.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: STM32 clock

Messaggioda Foto Utentesimo85 » 9 mar 2015, 19:56

Prova anche a dare una occhiata a questo thread sul forum della ST:

https://my.st.com/public/STe2ecommuniti ... tviews=225
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[4] Re: STM32 clock

Messaggioda Foto Utentealle96 » 9 mar 2015, 22:10

Sono riuscito a farla funzionare ma non sono sicuro il mio ragionamento sia corretto. Ho letto il datasheet e risulta che il TIM7 abbia 84MHz di freqenza clock e 42MHz di interfacciamento, considerando che l'STM32F407VG usa 2 cicli di clock per 1 istruzione allora il TIM7 aumenterà il counter a 21MHz. Quanto pensato è giusto? incrementa con frequenza di 21MHz?

Grazie in anticipo O_/
Avatar utente
Foto Utentealle96
15 4
 
Messaggi: 47
Iscritto il: 21 feb 2012, 16:21

0
voti

[5] Re: STM32 clock

Messaggioda Foto UtenteTardoFreak » 10 mar 2015, 10:31

No, il ragionamento è sballato, completamente.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[6] Re: STM32 clock

Messaggioda Foto Utentealle96 » 10 mar 2015, 16:43

cavoli ahahahah ok

Ma ho letto che il Timer7 ha 84Mhz di clock e 42Mhz di interfacciamento. Puoi dirmi la differenza?
Avatar utente
Foto Utentealle96
15 4
 
Messaggi: 47
Iscritto il: 21 feb 2012, 16:21

0
voti

[7] Re: STM32 clock

Messaggioda Foto UtenteTardoFreak » 10 mar 2015, 17:34

Il clock della periferica non ha niente a che fare con l' ingresso di clock del timer.
Bei cortex M3 il clock di periferica (quello che serve per i casini interni sui) è a 24MHz mentre il clock d'ingresso al timer arriva fino a 72Mhz.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[8] Re: STM32 clock

Messaggioda Foto Utentealle96 » 17 mar 2015, 7:55

Ho appena finito, dopo un periodo di inattività, la funzione per far andare la discovery a 168MHz senza dover cambiare nulla e senza funzioni particolari. La posto qua sotto che magari serve a qualcuno O_/

Codice: Seleziona tutto
void Clock_Set()
{
   uint32_t val;
   /*imposto 5WS per i 168MHz*/
   FLASH ->ACR |= FLASH_ACR_LATENCY_5WS;
   
   /*azzero il registro per il clock*/
   RCC ->CR &= 0x0000;
   /*HSE e PLL*/
   RCC ->CR |= RCC_CR_HSEON | RCC_CR_PLLON;
   /*reset CFGR*/
   RCC ->PLLCFGR &= 0x0000;
   /*imposto PLL_M 8, PLL_N 336, PLL_P 2*/
   RCC ->PLLCFGR |= RCC_PLLCFGR_PLLM_3 | 0x0150 | RCC_PLLCFGR_PLLSRC_HSE;
   /*seleziono PLL HSE*/
   RCC ->CFGR |= RCC_CFGR_SW_PLL;
}


Bye bye O_/
Avatar utente
Foto Utentealle96
15 4
 
Messaggi: 47
Iscritto il: 21 feb 2012, 16:21

0
voti

[9] Re: STM32 clock

Messaggioda Foto UtenteTardoFreak » 17 mar 2015, 12:32

Ottimo! :ok:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti