# Microcontrollori e architetture

### **Microcontrollori e architetture**

#### **STM32**

1. **Architettura ARM Cortex-M** – STM32 utilizza core ARM Cortex-M (M0, M3, M4, M7), ottimizzati per elaborazione a bassa potenza con accelerazione hardware per operazioni DSP e floating point. I dispositivi supportano memoria Flash interna fino a 2MB e SRAM con DMA avanzato.
    
2. **Periferiche avanzate** – Include ADC a 12/16 bit, DAC, PWM ad alta risoluzione, watchdogs, timers configurabili, GPIO multipli con interrupt configurabili. L’integrazione di periferiche dedicate (CAN, USB, Ethernet) facilita l'uso in embedded.
    
3. **Tool di sviluppo e debugging** – STM32CubeMX permette la generazione automatizzata di codice, HAL facilita l’astrazione hardware, mentre ST-Link offre debugging JTAG/SWD in tempo reale, essenziale per firmware ottimizzato.
    

#### **RENESAS**

1. **Microcontrollori RL78 e RX** – RL78 è ultra-low-power per applicazioni IoT, RX utilizza core a 32 bit con unità DSP e FPU, offrendo alte prestazioni per sistemi embedded avanzati. Entrambi supportano varie modalità di risparmio energetico.
    
2. **Sicurezza hardware integrata** – Renesas include hardware-based cryptography, unità di protezione memoria (MPU) e Secure Boot, permettendo autenticazione e protezione firmware crittografata, ideale per applicazioni industriali e automotive.
    
3. **Connettività avanzata** – Supporto per Ethernet, CAN-FD, USB 3.0, e interfacce wireless con stack TCP/IP hardware accelerato, migliorando le prestazioni in sistemi embedded con trasmissione dati ad alta velocità.
    

#### **Texas Instruments (TI)**

1. **Serie MSP430 e TMS320** – MSP430 è specializzato in applicazioni ultra-low-power con wake-up rapido e ridottissimo consumo in deep sleep mode. TMS320 DSP è ottimizzato per elaborazioni intensive, come audio e controllo motori.
    
2. **Gestione avanzata della potenza** – TI offre soluzioni a consumo ultra-ridotto con LDO e convertitori DC-DC integrati. Funzionalità di gestione energetica dinamica riducono i consumi senza degradare le prestazioni.
    
3. **Compatibilità con protocolli industriali** – Le MCU TI supportano Ethernet industriale (PROFINET, EtherCAT, Modbus) e bus CAN avanzati per applicazioni automotive e automazione industriale, garantendo alta affidabilità.
    

#### **PIC32**

1. **Core MIPS a 32 bit** – PIC32 utilizza architettura MIPS32 con pipeline avanzata e cache L1, migliorando le prestazioni su operazioni DSP. Supporta fino a 512 KB di Flash e 128 KB di RAM.
    
2. **Controllo avanzato dei periferici** – Include motori grafici integrati (Graphics Controller), USB OTG, Ethernet MAC/PHY, e ADC a 12-bit con triggering DMA, migliorando la gestione di segnali analogici e digitali.
    
3. **Sistema operativo real-time (RTOS) compatibile** – Supporta FreeRTOS e MQX RTOS per applicazioni multi-thread, permettendo scheduling ottimizzato e gestione efficiente delle interruzioni e delle periferiche.
    

#### **NXP**

1. **LPC e** [**i.MX**](http://i.MX) – Le MCU LPC sono ottimizzate per bassa potenza con periferiche avanzate (ADC, DAC, PWM). La serie [i.MX](http://i.MX) è basata su ARM Cortex-A, ideale per applicazioni multimediali con accelerazione hardware per grafica e AI.
    
2. **Interfacce di comunicazione industriali** – Supporto per CAN, FlexIO, Ethernet TSN, UART avanzati con DMA, fondamentali per automazione e trasmissione dati in ambienti embedded complessi.
    
3. **Sicurezza e crittografia** – Integra moduli di sicurezza avanzati come EdgeLock SE050 con autenticazione hardware e acceleratori di crittografia AES, SHA, RSA, rendendolo ideale per applicazioni IoT sicure.
    

---

### **Protocolli di comunicazione**

#### **SPI (Serial Peripheral Interface)**

1. **Architettura full-duplex a 4 fili** – SPI utilizza linee MOSI, MISO, SCLK e CS per una comunicazione sincrona ad alta velocità tra master e slave. La modalità di clock (CPOL/CPHA) permette configurazioni flessibili per compatibilità con vari dispositivi.
    
2. **Velocità di trasferimento dati elevata** – A differenza di I2C, SPI offre velocità fino a 100 MHz, ideale per comunicazioni rapide tra MCU, memorie Flash, sensori e display. È spesso usato per trasmissioni continue di grandi quantità di dati.
    
3. **Gestione multi-slave tramite CS selettivo** – SPI può gestire più dispositivi utilizzando linee di selezione chip (CS), ma non ha un protocollo di arbitraggio nativo, richiedendo una gestione software per evitare collisioni.
    

#### **I2C (Inter-Integrated Circuit)**

1. **Bus a 2 fili con indirizzamento** – I2C utilizza solo due linee (SCL, SDA) per comunicazione tra dispositivi con indirizzi univoci, riducendo il numero di connessioni necessarie rispetto a SPI. Supporta modalità multi-master.
    
2. **Modalità di trasferimento standard e Fast Mode** – Supporta velocità da 100 kHz (Standard), 400 kHz (Fast Mode) fino a 3.4 MHz (High-Speed Mode), permettendo comunicazioni efficienti tra MCU e periferiche a bassa velocità come EEPROM e sensori.
    
3. **Protocollo con handshaking integrato** – La sincronizzazione tramite ACK/NACK garantisce integrità dei dati e rilevamento errori, permettendo un’interfaccia robusta per dispositivi embedded con requisiti di comunicazione affidabile.
    

#### **UART (Universal Asynchronous Receiver Transmitter)**

1. **Comunicazione seriale asincrona** – UART trasmette dati in formato seriale senza clock condiviso, utilizzando solo TX e RX. Supporta velocità configurabili e parità per rilevamento errori.
    
2. **Protocolli standardizzati** – UART è utilizzato in RS232, RS485 e TTL seriale. L'handshaking opzionale (RTS/CTS) migliora la gestione del flusso dati tra dispositivi con buffer limitato.
    
3. **Interfaccia per debug e bootloader** – Molte MCU usano UART per aggiornamenti firmware e debug tramite terminali seriali. Bootloader su STM32 e PIC32 spesso utilizzano UART per flashing del firmware senza programmatore hardware.
    

#### **RS485**

1. **Comunicazione half-duplex differenziale** – RS485 utilizza segnali differenziali (A, B) per trasmissioni robuste in ambienti industriali, resistendo a interferenze elettromagnetiche. Supporta fino a 1200 m di lunghezza del bus.
    
2. **Multi-drop con fino a 32 dispositivi** – RS485 consente il collegamento di più dispositivi sullo stesso bus con gestione collisioni tramite protocollo master-slave o token passing.
    
3. **Velocità e integrazione con Modbus** – Può raggiungere velocità fino a 10 Mbps, con supporto per protocolli come Modbus RTU, ampiamente usato in automazione industriale e building management systems (BMS).
    

#### **RS232**

1. **Standard legacy per comunicazione seriale** – RS232 utilizza tensioni differenziali (+12V, -12V) per trasmissione a lungo raggio, spesso tra PC e dispositivi embedded. Supporta velocità fino a 115200 bps con frame di dati configurabili.
    
2. **Connessione punto-punto full-duplex** – Supporta comunicazione bidirezionale simultanea con segnali di controllo (DTR, DSR, CTS, RTS) per gestione del flusso dati senza perdita di pacchetti.
    
3. **Compatibilità con dispositivi industriali** – Ampiamente usato in sistemi legacy, strumentazione scientifica e automazione. Adattatori USB-RS232 permettono l’integrazione con PC moderni privi di porte seriali fisiche.
    

---

### **Memorie e Debug**

#### **SRAM (Static Random Access Memory)**

1. **Memoria volatile a basso consumo** – SRAM non richiede refresh come la DRAM, offrendo accesso istantaneo ai dati con latenza minima, ideale per buffer di alta velocità in MCU e DSP.
    
2. **Struttura flip-flop per stabilità dati** – Utilizza celle a latch per ogni bit, evitando perdite di dati finché l'alimentazione è presente, a differenza della DRAM che richiede refresh periodico.
    
3. **Utilizzo in cache e buffer ad alta velocità** – Presente in CPU e microcontrollori per ridurre latenza in operazioni critiche, migliorando prestazioni in elaborazione dati e controllo embedded.
