LABORATORIO: 1
RETI PER AUTOMAZIONE INDUSTRIALE
STM32 NUCLEO
INTRO
[Link]@[Link] Ing. Antonino Raucea
Presentazione del corso
2
Creare un vocabolario comune
Permettere di lavorare con micro della STMicroelectronics
([Link]) a 32 bit della famiglia STM32, la piattaforma usata
per gli esempi, in particolare usando la piattaforma Nucleo
Mostrare tecniche e stili di programmazione e debugging, lontani
dalla classica programmazione per programmi PC
Un’opportunità!!!
MCU Course 17-Apr-18
Prerequisiti
3
Conoscenza del C
Conoscenze «spicciole» di Elettrotecnica e di
Elettronica
Volontà e pazienza
MCU Course
Microcontrollore o in breve Micro
4
Un microprocessore è destinato unicamente ad effettuare calcoli. Un
Esempi microcontrollore contiene al suo interno un microprocessore (CPU – sempre
destinato a fare calcoli) più numerose altre periferiche che gli permettono di
interagire con il mondo esterno: linee di comunicazione, un certo quantitativo
di memoria per immagazzinare dati e programmi, convertitori
analogico/digitali ecc.
MCU Course
Esempio
5
FPGA
Uso dei micro
6
Un microcontrollore è il genere di computer in miniatura che potete trovare in ogni
genere di oggetti. Se possiede dei tasti ed un display, è probabile che abbia anche un
cervello a microcontrollore.
Provate a fare un elenco e contate quanti dispositivi con microcontrollore usate in una
giornata tipo. Qui ci sono alcuni esempi: se al mattino la vostra radio si spenge, e
premete più volte il tasto “snooze”, la prima cosa che fate nella vostra giornata è
interagire con un microcontrollore. Riscaldare dei cibi nel forno a microonde oppure
fare una telefonata con il cellulare, implica usare dei microcontrollori. E questo è
solamente l’inizio. Qui ci sono alcuni altri esempi: accendere un televisore con il
telecomando, giocare con un videogioco, usare una calcolatrice,ecc. Tutti questi
dispositivi contengono dei microcontrollori che interagiscono con voi.
Prodotti sul mercato
9
The Example: Arduino
10
Microcontrollore: vantaggi
11
L'integrazione delle periferiche su un singolo chip
Minor numero di dispositivi discreti per la realizzazione di un sistema
Dimensioni ridotte del sistema
Costi inferiori
Sistema nel complesso più affidabile
Protezione dalle copiature
Risparmio energetico
Riprogrammabilità del sistema
Comunicazione diretta con altri sistemi
Microcontrollore: svantaggi
12
Potenza di calcolo limitata (??????)
Assenza di FPU (Floating Point Unit) in quelli low
cost
Gestione dati limitata
RAM minima
Cooperazione tra diversi MCU
Architettura
13
Set di istruzioni: CISC/RISC
Organizzazione della memoria: Van Neumann/Harward
Frequenza di clock
Numero di dispositivi di I/O e di periferiche intergrate
Consumo
Numero di bit: 4/8/16/32
Il numero di bit rappresenta la dimensione massima del dato gestibile in un
unico ciclo macchina. Rappresenta inoltre solitamente la dimensione dei
singoli registri e del bus dati
Componenti
14
Peripheral
Memory • GPIO
• Ram • Timers
• Flash • Analog
• Comm
SysTick Interrupts
Memorie
15
Un microcontrollore è dotato di memoria interna. La memoria di un
microcontrollore ha il compito principale di immagazzinare il programma che
deve eseguire e quindi anche di immagazzinare i dati (le variabili)
provenienti dall’esterno o elaborate dal programma. Generalmente vengono
utilizzati microcontrollori che hanno una memoria di tipo Flash (perchè più
pratica e riutilizzabile). Le memorie Flash sono una varietà di memoria
EEPROM (o E2PROM) (Electrically Erasable and Programmable Read Only
Memory): i dati vengono immagazzinati all’interno della memoria e lì
rimangono anche in assenza di alimentazione elettrica (come le memorie
delle macchine fotografiche o le pendrive insomma), quando si ha bisogno
possono anche essere cancellati elettricamente.
I micro STM32 hanno un’architettura a memoria sezionata: vengono mantenute
separate la memorizzazione dati e le istruzioni. Programmando nei linguaggi di alto
livello non è necessario specificare il banco di memoria dal momento che queste
istruzioni vengono aggiunte direttamente dal compilatore senza preoccupazione
(questo è uno dei tanti vantaggi dei linguaggi ad alto livello).
Periferiche
16
GPIO: sono le linee di Input/Output, il ADC o DAC: tramite questo tipo di periferiche
microcontrollore è in grado di rilevare siamo in grado di acquisire dall’esterno o
“stimoli” digitali provenienti generare verso l’esterno un segnale analogico
dall’ambiente esterno (Input: pressione di (es: sonde di temperatura, sonde analogiche in
un tasto, ricezione di un segnale digitale, generale ecc).
chiusura di un contatto, ecc) oppure
trasmetterli (Output: accensione di un
LED, scritte su un display, ecc). Difatti Timer: Il compito di queste periferiche è
tramite il programma che andremo ad appunto quello di effettuare conteggi in
inserire nel nostro microcontrollore, maniera regolare e vengono utilizzati un po’
saremo in grado di dire ad esso quali per tutto: generare onde quadre, eseguire
pin (piedini) dovranno funzionare come operazioni allo scadere di un tempo
ingressi (input) e quali come uscite prefissato, realizzare applicazioni multitasking
(output). ecc.
Periferiche di comunicazione: tramite i bus di comunicazione siamo in grado di comunicare con
altri dispositivi: USB, CAN, SPI, USART, I2C.
L’Usart ci permette di comunicare con la porta seriale RS232 del pc o di altri strumenti (e non solo), e quindi
scambiare informazioni o dare istruzioni. Il protocollo di comunicazione CAN ad esempio è molto utilizzato
sulle automobili per far comunicare tra loro i vari dispositivi. Il protocollo I2C è usatissimo per comunicare con
piccoli dispositivi tipo chip realtime-clock (RTC), misuratori di distanza ad ultrasuoni, chipche permettono di
espandere gli I/O ecc ecc.
UART
17
Inviare un dato come testo o come byte
“48” => ‘4’, ‘8’ => 0x34, 0x38
48 => 0x30 => ‘0’
SPI Signals
18
WRITE
CS
CLK
MOSI
READ
CS
CLK
MOSI
MISO
Interrupt
19
Definizione (Da wikipedia):
un segnale asincrono che indica il bisogno di attenzione oppure un evento sincrono che consente
l’interruzione di un processo qualora si verifichino determinate condizioni.
Esempio:
Siamo a casa e abbiamo un telefono: per vedere se qualcuno ci sta chiamando è necessario che
ogni tanto alziamo la cornetta? No! Il telefono squilla avvisandoci che qualcuno ci sta
chiamando, quindi alzeremo la cornetta solo quando sta squillando.
Immaginate: siamo a casa ad effettuare le nostre faccende, non abbiamo bisogno di alzare
ogni tanto la cornetta, perché il telefono ci avviserà con uno squillo, consentendoci di
interrompere ciò che stiamo facendo e dedicarci quindi alla telefonata.
Concetto chiave:
lo squillo del telefono è il nostro interrupt: ci consente di interrompere momentaneamente ciò che
stavamo facendo per dedicarci alla situazione che ha generato l’interrupt fino a quando non
decidiamo di riprendere le nostre faccende nel punto in cui le avevamo rimaste.
Interrupt : azioni
20
Viene salvato il valore numerico
Il programma principale viene del PC (Program Counter, che è Il micro salta ad una
interrotto al verificasi un contatore interno del micro determinata locazione di
dell’evento che fa scaturire un che tiene conto di quale riga di memoria (denominata Interrupt
interrupt programma sta eseguendo) Vector) nella quale vengono
nello Stack (che è un registro appunto memorizzate le
apposito per memorizzare tale istruzioni da eseguire in caso di
valore). interrupt.
Il micro esegue le istruzioni Finito di eseguire tali istruzioni, Il programma principale
contenute nell’interrupt vector. il micro preleva dallo Stack la riprende dal punto in cui era
riga del programma principale stato interrotto dall’interrupt.
in cui si era fermato.
Nei registri di delle periferiche ci sono dei bit che permettono di attivare o disattivare un determinato
evento di interrupt; e dei bit che ci avvisano se si è verificato questo o quel determinato tipo di
interrupt. e vengono settati dal micro quando si verifica l’evento di interrupt e devono essere resettati
da noi via software.
Piattaforme ARM : Core Cortex-Mx
21
STM32 NUCLEO Platform
22
Debugger
Application
MCU
Arduino connector
Passi
23
Configuratore: Flash loader Debugger :
(Integrato in ST-Link 2.1
STM32CubeMX IAR WB) (Nucleo)
Ambiente di Compilatore
Sviluppo
(IDE) : IAR (Integrato in FIRMWARE
Workbench IAR)
Configuratore : STM32CubeMX
24
Ver 4.25.0
Java based
Configuratore : STM32CubeMX
25
STM32 HAL
26
STM32 HAL
27
STM32 HAL
28
IDE : IAR Workbench
29
Feature:
- Breakpoints
- Watch / Live watch
8.10.1 - Registers
- Output view
- Memory
- Disassembly
Debugger : Integrated ST-Link
30
Joint Test Action Group (JTAG)
Serial Wire Debug (SWD)