{"id":129653,"date":"2026-03-10T09:52:08","date_gmt":"2026-03-10T08:52:08","guid":{"rendered":"https:\/\/riverdi.com\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4"},"modified":"2026-03-10T09:52:08","modified_gmt":"2026-03-10T08:52:08","slug":"getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4","status":"publish","type":"post","link":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4","title":{"rendered":"Iniziare a controllare due display con l&#8217;STM32H7: TouchGFX + EVE4"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #002175;color:#002175\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #002175;color:#002175\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Panoramica_dellhardware\" >Panoramica dell&#8217;hardware<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Programmazione_e_debug\" >Programmazione e debug<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Visualizzazioni\" >Visualizzazioni<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Interfacce\" >Interfacce<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Pila_software\" >Pila software<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Sviluppo\" >Sviluppo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Grafica_e_interfaccia_utente\" >Grafica e interfaccia utente<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Livello_applicazione\" >Livello applicazione<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Concetto_di_architettura_una_logica_due_rendering\" >Concetto di architettura: una logica, due rendering<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Modelli_di_rendering\" >Modelli di rendering<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Scenario_dimostrativo_stato_condiviso_e_interazione_bidirezionale\" >Scenario dimostrativo: stato condiviso e interazione bidirezionale<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Ordine_di_inizializzazione\" >Ordine di inizializzazione<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Struttura_del_progetto\" >Struttura del progetto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Modello_di_runtime_TouchGFX_task_EVE\" >Modello di runtime (TouchGFX + task EVE)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Riassunto_del_rendering_di_EVE\" >Riassunto del rendering di EVE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Risultato\" >Risultato<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\/#Riepilogo_e_passi_successivi\" >Riepilogo e passi successivi<\/a><\/li><\/ul><\/nav><\/div>\n<p>Un display incorporato pu\u00f2 pilotarne un altro allo stesso tempo?<br \/>\nIn questa guida ti mostriamo come un singolo STM32H7 integrato in un display Riverdi pu\u00f2 essere utilizzato contemporaneamente:<\/p>\n<ul>\n<li>renderizzare la propria interfaccia grafica utilizzando TouchGFX e<\/li>\n<li>controllare un secondo display basato su EVE4 tramite RiBUS (SPI).<\/li>\n<\/ul>\n<p>Il risultato \u00e8 un modello pulito e ripetibile per sistemi a doppio display come terminali POS, chioschi e pannelli HMI industriali.<br \/>\nL&#8217;esempio \u00e8 volutamente minimale. Si concentra su: <\/p>\n<ul>\n<li>ordine di inizializzazione corretto,<\/li>\n<li>una chiara separazione delle responsabilit\u00e0,<\/li>\n<li>uno stato applicativo condiviso utilizzato da due percorsi di rendering indipendenti.<\/li>\n<\/ul>\n<p>La struttura \u00e8 concepita come una base pratica che pu\u00f2 essere ampliata passo dopo passo in progetti reali.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Panoramica_dellhardware\"><\/span>Panoramica dell&#8217;hardware<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Programmazione_e_debug\"><\/span>Programmazione e debug<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>ST-LINK\/V3 collegato via SWD all&#8217;STM32H7 integrato nel display Riverdi<\/li>\n<li>Viene programmato solo l&#8217;STM32H7<\/li>\n<li>Il display dell&#8217;EVE4 non viene mai flashato e comunica esclusivamente tramite SPI<br \/>\n(RiBUS)<br \/>\nSTM32 + EVE4 &#8211; Blog<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Visualizzazioni\"><\/span>Visualizzazioni<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/riverdi.com\/it\/product\/display-lcd-da-7-pollici-capacitivo-touch-panel-optical-bonding-uxtouch-stm32h7-rvt70hssnwc00-b\">Riverdi STM32 Embedded Display<\/a> (master)<br \/>\nDisplay da 7&#8243; con STM32H7 integrato, pilotato da TouchGFX.<\/p>\n<p><a href=\"https:\/\/riverdi.com\/it\/product\/eve4-intelligent-display-rvt70hsbnwc00-b\">Display EVE4 Riverdi<\/a> (slave)<br \/>\nDisplay da 7&#8243; basato su EVE4, controllato da STM32H7 su RiBUS.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Interfacce\"><\/span>Interfacce<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>SWD &#8211; programmazione e debug<\/li>\n<li>SPI (RiBUS) &#8211; STM32H7 \u2192 Interfaccia di comando EVE4<\/li>\n<li>Interfacce touch su entrambi i display<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"alignnone wp-image-128880 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4.jpg\" alt=\"\" width=\"1280\" height=\"600\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4.jpg 1280w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4-300x141.jpg 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4-1024x480.jpg 1024w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4-768x360.jpg 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4-600x281.jpg 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4-64x30.jpg 64w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Pila_software\"><\/span>Pila software<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Sviluppo\"><\/span>Sviluppo<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>STM32CubeIDE<\/li>\n<li>STM32 HAL<\/li>\n<li>FreeRTOS<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Grafica_e_interfaccia_utente\"><\/span>Grafica e interfaccia utente<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>TouchGFX &#8211; GUI basata su framebuffer sul display integrato nell&#8217;STM32H7<\/li>\n<li>EVE4 (BT81x) &#8211; rendering basato su comandi tramite liste di visualizzazione su SPI<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Livello_applicazione\"><\/span>Livello applicazione<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Logica di applicazione singola su STM32H7<\/li>\n<li>Contesti di esecuzione separati (task FreeRTOS)<\/li>\n<li>Stato dell&#8217;applicazione condiviso utilizzato per sincronizzare entrambi gli schermi<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Concetto_di_architettura_una_logica_due_rendering\"><\/span>Concetto di architettura: una logica, due rendering<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Il principio architettonico chiave \u00e8 la separazione tra logica e rendering.<\/p>\n<ul>\n<li>L&#8217;STM32H7 \u00e8 proprietario dello stato dell&#8217;applicazione<\/li>\n<li>TouchGFX e EVE4 sono backend di rendering indipendenti<\/li>\n<li>Entrambi i display reagiscono allo stesso stato condiviso<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Modelli_di_rendering\"><\/span>Modelli di rendering<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>TouchGFX<\/strong><\/p>\n<ul>\n<li>Rendering basato su framebuffer<\/li>\n<li>Completamente gestito dall&#8217;STM32H7<\/li>\n<\/ul>\n<p><strong>EVE4<\/strong><\/p>\n<ul>\n<li>Rendering basato sui comandi utilizzando gli elenchi di visualizzazione<\/li>\n<li>Rendering eseguito dalla GPU di EVE<\/li>\n<\/ul>\n<p>L&#8217;obiettivo non \u00e8 quello di confrontare questi approcci, ma di dimostrare che entrambi possono coesistere in un unico sistema gestito da un microcontrollore.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-128888 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2.png\" alt=\"\" width=\"826\" height=\"760\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2.png 826w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-300x276.png 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-768x707.png 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-600x552.png 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-64x59.png 64w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Scenario_dimostrativo_stato_condiviso_e_interazione_bidirezionale\"><\/span>Scenario dimostrativo: stato condiviso e interazione bidirezionale<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>L&#8217;esempio mostra un piccolo stato condiviso dell&#8217;applicazione scambiato tra due UI indipendenti.<\/p>\n<ul>\n<li>Il <strong>display TouchGFX (master)<\/strong> propone le modifiche.<\/li>\n<li>Il <strong>display dell&#8217;EVE4 (slave)<\/strong> li conferma o li rifiuta.<\/li>\n<\/ul>\n<p>L&#8217;interazione touch su un display influisce direttamente sul comportamento dell&#8217;altro.<\/p>\n<p><strong>Stato dell&#8217;applicazione condivisa<\/strong><\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">typedef struct {\n\nuint8_t master_proposedColor;\nuint8_t master_requestPending;\nuint8_t slave_currentColor;\nuint8_t slave_lastResponse;\nuint8_t slave_responseDirty;\n\n} app_state_t;\n\nvolatile app_state_t gAppState = {\n\n.master_proposedColor = COLOR_RED,\n.master_requestPending = 0,\n.slave_currentColor = COLOR_RED,\n.slave_lastResponse = SLAVE_IDLE,\n.slave_responseDirty = 0\n\n};\nLo stato viene inizializzato in modo deterministico in modo che entrambi i display partano sincronizzati.<\/pre>\n<p>Da quel momento:<\/p>\n<ul>\n<li>TouchGFX aggiorna <em>master_proposedColor<\/em> e imposta <em>master_requestPending.<\/em><\/li>\n<li>EVE4 accetta o rifiuta e aggiorna <em>slave_currentColor<\/em> e <em>slave_lastResponse<\/em>.<\/li>\n<\/ul>\n<p>Entrambi i percorsi di rendering leggono continuamente <em>gAppState<\/em> e aggiornano l&#8217;interfaccia utente di conseguenza.<\/p>\n<p>In questo modo il flusso di interazione rimane esplicito, facile da seguire e completamente guidato dalla logica applicativa condivisa di<br \/>\npiuttosto che dalla comunicazione diretta tra display.<\/p>\n<p>Questo modello di interazione \u00e8 volutamente semplice e serve come modello chiaro per i progetti reali di<br \/>\nin cui due display devono cooperare pur rimanendo architettonicamente indipendenti.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ordine_di_inizializzazione\"><\/span>Ordine di inizializzazione<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Qui viene mostrata solo la sequenza corretta.<\/p>\n<ol>\n<li><strong>Inizializzazione e clock dell&#8217;MCU<\/strong><br \/>\n<em>HAL_Init() \u2192 SystemClock_Config() \u2192 PeriphCommonClock_Config()<\/em><\/li>\n<li><strong>Inizializzazione delle periferiche<\/strong><br \/>\n<em>GPIO, LTDC\/DSI, DMA2D\/MDMA, SPI, timer, memoria esterna (SDRAM\/QSPI)<\/em><\/li>\n<li><strong>Inizializzazione di TouchGFX<\/strong><br \/>\n<em>MX_TouchGFX_Init() \u2192 MX_TouchGFX_PreOSInit()<\/em><\/li>\n<li><strong>Inizializzazione SPI per RiBUS<\/strong><br \/>\n<em>MX_SPI1_Init() (o istanza selezionata)<\/em><\/li>\n<li><strong>Inizializzazione di EVE4<\/strong><br \/>\n<em>EVE4_RiBUS_Init(&amp;eve)<\/em><br \/>\n<em>EVE4_RiBUS_ConfigIPS70(&amp;eve)<\/em><\/li>\n<li><strong>Avviare FreeRTOS<\/strong><br \/>\n<em>osKernelInitialize() \u2192 MX_FREERTOS_Init() \u2192 osKernelStart()<\/em><\/li>\n<\/ol>\n<p>Seguendo questa sequenza si evitano problemi di avvio e si assicura che entrambi i percorsi di rendering siano inizializzati in modo pulito. TouchGFX inizia con una pipeline di visualizzazione completamente configurata, mentre EVE4 \u00e8 pronto per il rendering non appena il suo task FreeRTOS inizia l&#8217;esecuzione. <\/p>\n<h2><span class=\"ez-toc-section\" id=\"Struttura_del_progetto\"><\/span>Struttura del progetto<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Questo progetto mantiene chiaramente separate l&#8217;interfaccia TouchGFX e l&#8217;integrazione di EVE4.<\/p>\n<ul>\n<li><strong>CM7\/Core\/<\/strong><br \/>\nAvvio dell&#8217;MCU e inizializzazione delle periferiche (main.c, *_init.c)<br \/>\nconfigurazione del sistema e creazione della scheda<\/li>\n<li><strong>CM7\/TouchGFX\/<br \/>\n<\/strong>Applicazione TouchGFX (schermate, widget, asset)<br \/>\nLogica UI principale (display master)<strong><br \/>\n<\/strong><\/li>\n<li><strong>Application\/User\/Core\/<br \/>\napp_state.c \/ app_state.h<\/strong> &#8211; stato dell&#8217;applicazione master\/slave condiviso (gAppState)<br \/>\n eve4_ribus<strong>.c \/ eve4_ribus.h<\/strong> &#8211; driver EVE4 di basso livello (SPI + accesso ai registri + helper per l&#8217;elenco dei display)<br \/>\n eve_task<strong>.c<\/strong> &#8211; task EVE FreeRTOS (loop di rendering + gestione del touch sul display slave)<\/li>\n<li><strong>Application\/User\/gui\/<\/strong> (livello utente TouchGFX)<br \/>\nad esempio Screen1View.cpp\/.hpp &#8211; logica master dell&#8217;interfaccia utente (proporre il colore, riflettere lo stato dello slave)<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Modello_di_runtime_TouchGFX_task_EVE\"><\/span>Modello di runtime (TouchGFX + task EVE)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>L&#8217;applicazione viene eseguita in FreeRTOS e utilizza due contesti di esecuzione indipendenti:<\/p>\n<p><strong>Attivit\u00e0 TouchGFX (display principale)<\/strong><\/p>\n<p>Gestisce il rendering dell&#8217;interfaccia utente principale e l&#8217;interazione tattile sul display guidato dall&#8217;STM32.<br \/>\nLe azioni dell&#8217;utente aggiornano lo stato condiviso (gAppState).<\/p>\n<p><strong>Compito di EVE (visualizzazione dello slave)<\/strong><\/p>\n<p>Costruisce e scambia gli elenchi dei display di EVE ed elabora gli input tattili sul display di EVE4. Le decisioni (accettazione\/rifiuto) aggiornano gAppState e si riflettono sull&#8217;interfaccia utente principale. Entrambi i percorsi di rendering reagiscono allo stesso stato condiviso dell&#8217;applicazione, mantenendo l&#8217;architettura semplice e le responsabilit\u00e0 chiaramente separate.  <\/p>\n<h2><span class=\"ez-toc-section\" id=\"Riassunto_del_rendering_di_EVE\"><\/span>Riassunto del rendering di EVE<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Il display di EVE4 viene aggiornato utilizzando una sequenza standard di elenchi di display eseguita da<br \/>\nla GPU di EVE:<br \/>\nCLEAR_COLOR_RGB() &#8211; imposta il colore di sfondo<br \/>\nCLEAR() &#8211; cancella i buffer di disegno<br \/>\ncomandi di disegno<br \/>\nDISPLAY() &#8211; termina l&#8217;elenco di visualizzazione<br \/>\nFlush_DL_Buffer() &#8211; copia i comandi nella RAM_DL<br \/>\nDLSWAP_FRAME &#8211; rende visibile il nuovo fotogramma<br \/>\nQuesto flusso di rendering di basso livello \u00e8 intenzionalmente mantenuto semplice e invariato, fornendo a<br \/>\nil pieno controllo su come e quando l&#8217;EVE4 aggiorna il suo display.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Risultato\"><\/span>Risultato<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Con questa configurazione:<\/p>\n<ul>\n<li>entrambi i display funzionano contemporaneamente,<\/li>\n<li>entrambi i display reagiscono all&#8217;input tattile,<\/li>\n<li>L&#8217;interazione dell&#8217;utente su uno schermo si riflette sull&#8217;altro.<\/li>\n<\/ul>\n<p>Il risultato \u00e8 un&#8217;architettura a doppio display pulita e scalabile gestita da un unico STM32H7, dove un&#8217;applicazione controlla due percorsi di rendering indipendenti con responsabilit\u00e0 chiaramente separate.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-128895 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_3.png\" alt=\"\" width=\"826\" height=\"400\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_3.png 826w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_3-300x145.png 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_3-768x372.png 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_3-600x291.png 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_3-64x31.png 64w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Riepilogo_e_passi_successivi\"><\/span>Riepilogo e passi successivi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Questo modello fornisce un punto di partenza per i sistemi che richiedono due display gestiti da un unico microcontrollore, utilizzando modelli di rendering diversi ma una logica applicativa condivisa.<\/p>\n<p>Pu\u00f2 essere esteso in modo naturale:<\/p>\n<ul>\n<li>espandere lo stato condiviso,<\/li>\n<li>introdurre caratteristiche grafiche avanzate di EVE,<\/li>\n<li>adattare il modello di interazione a flussi di lavoro pi\u00f9 complessi,<\/li>\n<li>migrare verso le nuove generazioni di EVE.<\/li>\n<\/ul>\n<p>Il progetto di riferimento completo \u00e8 disponibile su GitHub:<br \/>\n<a href=\"https:\/\/github.com\/riverdi\/STM32H7-EVE4\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/riverdi\/STM32H7-EVE4<\/a><\/p>\n<p>Questo progetto \u00e8 stato concepito come base pratica per sistemi scalabili a doppio display basati su STM32 ed EVE.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un display incorporato pu\u00f2 pilotarne un altro allo stesso tempo? In questa guida ti mostriamo come un singolo STM32H7 integrato in un display Riverdi pu\u00f2 essere utilizzato contemporaneamente: renderizzare la propria interfaccia grafica utilizzando TouchGFX e controllare un secondo display basato su EVE4 tramite RiBUS (SPI). Il risultato \u00e8 un modello pulito e ripetibile per [&hellip;]<\/p>\n","protected":false},"author":3328,"featured_media":128883,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[4710],"tags":[],"class_list":["post-129653","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visualizza-101"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Iniziare a controllare due display con l&#039;STM32H7: TouchGFX + EVE4 - Riverdi<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Iniziare a controllare due display con l&#039;STM32H7: TouchGFX + EVE4 - Riverdi\" \/>\n<meta property=\"og:description\" content=\"Un display incorporato pu\u00f2 pilotarne un altro allo stesso tempo? In questa guida ti mostriamo come un singolo STM32H7 integrato in un display Riverdi pu\u00f2 essere utilizzato contemporaneamente: renderizzare la propria interfaccia grafica utilizzando TouchGFX e controllare un secondo display basato su EVE4 tramite RiBUS (SPI). Il risultato \u00e8 un modello pulito e ripetibile per [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\" \/>\n<meta property=\"og:site_name\" content=\"Riverdi\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/riverdi.displays\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-10T08:52:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rafa\u0142 F\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@riverdidisplays\" \/>\n<meta name=\"twitter:site\" content=\"@riverdidisplays\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rafa\u0142 F\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\"},\"author\":{\"name\":\"Rafa\u0142 F\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\"},\"headline\":\"Iniziare a controllare due display con l&#8217;STM32H7: TouchGFX + EVE4\",\"datePublished\":\"2026-03-10T08:52:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\"},\"wordCount\":1123,\"image\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_STM32xEVE4.jpg\",\"articleSection\":[\"Visualizza 101\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\",\"url\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\",\"name\":\"Iniziare a controllare due display con l'STM32H7: TouchGFX + EVE4 - Riverdi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_STM32xEVE4.jpg\",\"datePublished\":\"2026-03-10T08:52:08+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#primaryimage\",\"url\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_STM32xEVE4.jpg\",\"contentUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_STM32xEVE4.jpg\",\"width\":1280,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Front Page\",\"item\":\"https:\\\/\\\/riverdi.com\\\/it\\\/prima-pagina\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Iniziare a controllare due display con l&#8217;STM32H7: TouchGFX + EVE4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#website\",\"url\":\"https:\\\/\\\/riverdi.com\\\/it\",\"name\":\"Riverdi\",\"description\":\"Global TFT LCD Manufacturer\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/riverdi.com\\\/it?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\",\"name\":\"Rafa\u0142 F\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"caption\":\"Rafa\u0142 F\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Iniziare a controllare due display con l'STM32H7: TouchGFX + EVE4 - Riverdi","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4","og_locale":"it_IT","og_type":"article","og_title":"Iniziare a controllare due display con l'STM32H7: TouchGFX + EVE4 - Riverdi","og_description":"Un display incorporato pu\u00f2 pilotarne un altro allo stesso tempo? In questa guida ti mostriamo come un singolo STM32H7 integrato in un display Riverdi pu\u00f2 essere utilizzato contemporaneamente: renderizzare la propria interfaccia grafica utilizzando TouchGFX e controllare un secondo display basato su EVE4 tramite RiBUS (SPI). Il risultato \u00e8 un modello pulito e ripetibile per [&hellip;]","og_url":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4","og_site_name":"Riverdi","article_publisher":"https:\/\/www.facebook.com\/riverdi.displays\/","article_published_time":"2026-03-10T08:52:08+00:00","og_image":[{"width":1280,"height":600,"url":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4.jpg","type":"image\/jpeg"}],"author":"Rafa\u0142 F","twitter_card":"summary_large_image","twitter_creator":"@riverdidisplays","twitter_site":"@riverdidisplays","twitter_misc":{"Scritto da":"Rafa\u0142 F","Tempo di lettura stimato":"6 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#article","isPartOf":{"@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4"},"author":{"name":"Rafa\u0142 F","@id":"https:\/\/riverdi.com\/it#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef"},"headline":"Iniziare a controllare due display con l&#8217;STM32H7: TouchGFX + EVE4","datePublished":"2026-03-10T08:52:08+00:00","mainEntityOfPage":{"@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4"},"wordCount":1123,"image":{"@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#primaryimage"},"thumbnailUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4.jpg","articleSection":["Visualizza 101"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4","url":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4","name":"Iniziare a controllare due display con l'STM32H7: TouchGFX + EVE4 - Riverdi","isPartOf":{"@id":"https:\/\/riverdi.com\/it#website"},"primaryImageOfPage":{"@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#primaryimage"},"image":{"@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#primaryimage"},"thumbnailUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4.jpg","datePublished":"2026-03-10T08:52:08+00:00","author":{"@id":"https:\/\/riverdi.com\/it#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef"},"breadcrumb":{"@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#primaryimage","url":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4.jpg","contentUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_STM32xEVE4.jpg","width":1280,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/riverdi.com\/it\/blog\/getting-started-with-stm32h7-controlling-two-displays-touchgfx-eve4#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Front Page","item":"https:\/\/riverdi.com\/it\/prima-pagina"},{"@type":"ListItem","position":2,"name":"Iniziare a controllare due display con l&#8217;STM32H7: TouchGFX + EVE4"}]},{"@type":"WebSite","@id":"https:\/\/riverdi.com\/it#website","url":"https:\/\/riverdi.com\/it","name":"Riverdi","description":"Global TFT LCD Manufacturer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/riverdi.com\/it?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/riverdi.com\/it#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef","name":"Rafa\u0142 F","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","caption":"Rafa\u0142 F"}}]}},"_links":{"self":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/posts\/129653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/users\/3328"}],"replies":[{"embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/comments?post=129653"}],"version-history":[{"count":0,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/posts\/129653\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/media\/128883"}],"wp:attachment":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/media?parent=129653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/categories?post=129653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/tags?post=129653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}