{"id":129687,"date":"2026-03-16T14:00:51","date_gmt":"2026-03-16T13:00:51","guid":{"rendered":"https:\/\/riverdi.com\/blog\/a-guide-to-fundamental-display-operations-on-stm32"},"modified":"2026-03-16T14:00:51","modified_gmt":"2026-03-16T13:00:51","slug":"a-guide-to-fundamental-display-operations-on-stm32","status":"publish","type":"post","link":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32","title":{"rendered":"Guida alle operazioni di visualizzazione fondamentali su STM32"},"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\/a-guide-to-fundamental-display-operations-on-stm32\/#Controllo_della_retroilluminazione_dei_display_STM32_Riverdi\" >Controllo della retroilluminazione dei display STM32 Riverdi<\/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\/a-guide-to-fundamental-display-operations-on-stm32\/#Moduli_STM32_Riverdi_supportati\" >Moduli STM32 Riverdi supportati<\/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\/a-guide-to-fundamental-display-operations-on-stm32\/#Principio_di_controllo_della_retroilluminazione\" >Principio di controllo della retroilluminazione<\/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\/a-guide-to-fundamental-display-operations-on-stm32\/#Requisiti_hardware_e_software\" >Requisiti hardware e software<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Esempio_di_configurazione_PWM\" >Esempio di configurazione PWM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Gamma_di_luminosita_e_significato\" >Gamma di luminosit\u00e0 e significato<\/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\/a-guide-to-fundamental-display-operations-on-stm32\/#Regolazione_della_luminosita_in_tempo_reale\" >Regolazione della luminosit\u00e0 in tempo reale<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Rotazione_dello_schermo_sui_display_STM32\" >Rotazione dello schermo sui display STM32<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Rotazione_dello_schermo_con_LVGL\" >Rotazione dello schermo con LVGL<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Inizializzazione_LVGL_rendering_PARZIALE_rotazione\" >Inizializzazione LVGL (rendering PARZIALE + rotazione)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Flush_callback_rotazione_software_nel_framebuffer_LTDC\" >Flush callback (rotazione software nel framebuffer LTDC)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Risultato\" >Risultato<\/a><\/li><\/ul><\/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\/a-guide-to-fundamental-display-operations-on-stm32\/#Rotazione_dello_schermo_su_STM32_con_TouchGFX\" >Rotazione dello schermo su STM32 con TouchGFX<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Concetto_di_rotazione_TouchGFX\" >Concetto di rotazione TouchGFX<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Abilitazione_della_rotazione_dello_schermo_nel_designer_TouchGFX\" >Abilitazione della rotazione dello schermo nel designer TouchGFX<\/a><\/li><\/ul><\/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\/a-guide-to-fundamental-display-operations-on-stm32\/#Sintesi\" >Sintesi<\/a><\/li><\/ul><\/nav><\/div>\n<p>Il controllo della retroilluminazione e la rotazione dello schermo sono operazioni fondamentali per il display che hanno un impatto diretto sul comportamento del sistema nei progetti basati su STM32. Sono indipendenti dalla logica applicativa, ma strettamente collegate alla configurazione hardware e alle funzionalit\u00e0 del framework grafico. <\/p>\n<p>In questo articolo spieghiamo come i moduli display STM32 Riverdi implementano il controllo della retroilluminazione basato su PWM utilizzando TIM15 e un driver LED dedicato e come la rotazione dello schermo viene gestita in modo diverso nei progetti LVGL e TouchGFX. L&#8217;attenzione si concentra sui dettagli pratici dell&#8217;implementazione e sulla separazione architettonica. <\/p>\n<h2><span class=\"ez-toc-section\" id=\"Controllo_della_retroilluminazione_dei_display_STM32_Riverdi\"><\/span>Controllo della retroilluminazione dei display STM32 Riverdi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Il controllo della retroilluminazione \u00e8 una delle operazioni fondamentali quando si lavora con i display embedded. A differenza del rendering grafico o della gestione del tocco, il <strong>controllo della retroilluminazione \u00e8 indipendente dal framework dell&#8217;interfaccia grafica<\/strong> e non dipende dal fatto che l&#8217;applicazione utilizzi LVGL, TouchGFX o un altro stack grafico. <\/p>\n<p>Nei moduli display Riverdi basati su STM32, la luminosit\u00e0 della retroilluminazione \u00e8 controllata tramite un <strong>segnale PWM hardware,<\/strong> generato da un timer STM32.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Moduli_STM32_Riverdi_supportati\"><\/span>Moduli STM32 Riverdi supportati<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Il metodo descritto in questo articolo si applica ai moduli display STM32 Riverdi, come ad esempio:<\/p>\n<ul>\n<li>RVT121<\/li>\n<li>RVT101<\/li>\n<li>RVT70<\/li>\n<li>RVT50<\/li>\n<\/ul>\n<p>Lo stesso principio pu\u00f2 essere utilizzato su altre piattaforme Riverdi STM32 che espongono un ingresso di retroilluminazione controllato da PWM.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Principio_di_controllo_della_retroilluminazione\"><\/span>Principio di controllo della retroilluminazione<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nei moduli display Riverdi basati su STM32, il microcontrollore non pilota direttamente la retroilluminazione a LED. Al contrario, l&#8217;STM32 genera un <strong>segnale di controllo PWM<\/strong> che viene inviato a un <strong>circuito di pilotaggio della retroilluminazione LED<\/strong> dedicato <strong>.<\/strong> <\/p>\n<p>Il driver della retroilluminazione \u00e8 una sorgente a corrente costante, progettata per regolare la corrente che scorre attraverso le stringhe di LED. Il segnale PWM non modula direttamente la tensione dei LED. Controlla invece il ciclo di lavoro effettivo del driver, permettendo alla corrente media dei LED di variare tra lo 0% e il 100% del suo valore nominale.  <\/p>\n<p>L&#8217;architettura pu\u00f2 essere riassunta come segue:<\/p>\n<ul>\n<li>Il timer dell&#8217;STM32 (ad esempio, TIM15) genera un segnale PWM.<\/li>\n<li>Il segnale PWM viene indirizzato all&#8217;ingresso del driver della retroilluminazione.<\/li>\n<li>Il driver della retroilluminazione regola la corrente dei LED.<\/li>\n<li>l ciclo di lavoro del segnale PWM determina la luminosit\u00e0 effettiva.<\/li>\n<\/ul>\n<p>Questo significa che:<\/p>\n<ul>\n<li>La frequenza PWM \u00e8 definita dalla configurazione del timer<\/li>\n<li>La luminosit\u00e0 \u00e8 proporzionale al ciclo di lavoro PWM.<\/li>\n<li>La corrente del LED \u00e8 sempre regolata dal driver, non dal GPIO dell&#8217;MCU.<\/li>\n<\/ul>\n<p>Ciclo di lavoro pi\u00f9 elevato \u2192 corrente media del LED pi\u00f9 elevata \u2192 display pi\u00f9 luminoso<\/p>\n<p>Ciclo di lavoro pi\u00f9 basso \u2192 corrente media del LED pi\u00f9 bassa \u2192 display pi\u00f9 debole<\/p>\n<p>Perch\u00e9 i LED sono pilotati da una sorgente di corrente regolata:<\/p>\n<ul>\n<li>Il controllo della luminosit\u00e0 \u00e8 lineare e stabile,<\/li>\n<li>La durata dei LED \u00e8 protetta,<\/li>\n<li>il comportamento termico \u00e8 prevedibile,<\/li>\n<li>l&#8217;efficienza rimane elevata in tutto l&#8217;intervallo di funzionamento.<\/li>\n<\/ul>\n<p>Questo approccio prevede:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>controllo fluido della luminosit\u00e0,<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>bassa perdita di potenza,<\/li>\n<li>la corretta regolazione della corrente della retroilluminazione a LED,<\/li>\n<li>la completa indipendenza dell&#8217;hardware dal framework dell&#8217;interfaccia grafica.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Requisiti_hardware_e_software\"><\/span>Requisiti hardware e software<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" class=\"alignnone wp-image-128927 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1.png\" alt=\"\" width=\"826\" height=\"480\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1.png 826w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1-300x174.png 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1-768x446.png 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1-600x349.png 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1-64x37.png 64w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<p>Prima di regolare il livello di retroilluminazione, assicurati che:<\/p>\n<ul>\n<li>il display \u00e8 collegato correttamente al modulo STM32,<\/li>\n<li>la scheda \u00e8 collegata a un PC tramite ST-Link,<\/li>\n<li>il progetto \u00e8 costruito utilizzando un modello software supportato (LVGL o TouchGFX).<\/li>\n<\/ul>\n<p>Per il controllo della retroilluminazione non \u00e8 necessario modificare la configurazione del framework della GUI.<\/p>\n<p><strong>Timer utilizzato per il controllo della retroilluminazione<\/strong><\/p>\n<p>Nei moduli display Riverdi STM32, la retroilluminazione viene controllata utilizzando:<\/p>\n<ul>\n<li><strong>TIM15<\/strong> (su entrambe le infrastrutture U5 e H7)<\/li>\n<li>Uscita PWM hardware<\/li>\n<li>Canale 1<\/li>\n<\/ul>\n<p>La configurazione del PWM si trova nel file tim.c del progetto, all&#8217;interno della funzione <strong>MX_TIM15_Init().<\/strong><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Esempio_di_configurazione_PWM\"><\/span>Esempio di configurazione PWM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Il canale PWM viene configurato utilizzando le strutture HAL standard dell&#8217;STM32:<\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">sConfigOC.OCMode = TIM_OCMODE_PWM1;\n\nsConfigOC.Pulse = 998;\n\nsConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;\nsConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;\nsConfigOC.OCFastMode = TIM_OCFAST_DISABLE;\nsConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;\nsConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;\n\nse (HAL_TIM_PWM_ConfigChannel(&amp;htim15, &amp;sConfigOC, TIM_CHANNEL_1) !=\nHAL_OK)\n{\nError_Handler();\n}<\/pre>\n<p>Il parametro pi\u00f9 importante \u00e8 sConfigOC.Pulse.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Gamma_di_luminosita_e_significato\"><\/span>Gamma di luminosit\u00e0 e significato<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>La luminosit\u00e0 della retroilluminazione \u00e8 controllata dal ciclo di lavoro PWM:<\/p>\n<ul>\n<li><strong>0<\/strong> \u2192 retroilluminazione disattivata<\/li>\n<li> <strong> 998<\/strong> \u2192 luminosit\u00e0 massima<\/li>\n<\/ul>\n<p>Qualsiasi valore compreso tra 0 e 998 determina un livello di luminosit\u00e0 proporzionale.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Regolazione_della_luminosita_in_tempo_reale\"><\/span>Regolazione della luminosit\u00e0 in tempo reale<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Oltre alla configurazione statica, il livello di retroilluminazione pu\u00f2 essere modificato anche in fase di esecuzione scrivendo direttamente sul registro del timer:<\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">TIM15-&gt;CCR1 = il tuo_nuovo_valore_di_impulso;<\/pre>\n<p>Questo permette di:<\/p>\n<ul>\n<li>controllo dinamico della luminosit\u00e0,<\/li>\n<li>oscuramento basato sulla luce ambientale,<\/li>\n<li>modalit\u00e0 di risparmio energetico,<\/li>\n<li>effetti di dissolvenza in entrata e in uscita.<\/li>\n<\/ul>\n<p>Non \u00e8 necessaria la reinizializzazione del display.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Rotazione_dello_schermo_sui_display_STM32\"><\/span>Rotazione dello schermo sui display STM32<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A differenza del controllo della retroilluminazione, la <strong>rotazione dello schermo non \u00e8 un&#8217;operazione puramente hardware sull&#8217;STM32.<\/strong><br \/>\nLa periferica del controller del display LCD TFT (LTDC) non supporta la rotazione dell&#8217;immagine, il che significa che la rotazione deve essere gestita a livello di <strong>  livello di struttura grafica.<\/strong><\/p>\n<p>A seconda del framework GUI scelto, l&#8217;implementazione varia in modo significativo.<\/p>\n<p>Questa sezione spiega entrambi gli approcci utilizzati sui display STM32 Riverdi:<\/p>\n<ul>\n<li><strong>Rotazione basata su LVGL<\/strong><\/li>\n<li><strong>Rotazione basata su TouchGFX<\/strong><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Rotazione_dello_schermo_con_LVGL\"><\/span>Rotazione dello schermo con LVGL<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Quando si utilizzano moduli display STM32 Riverdi con pannelli RGB, la periferica STM32 LTDC invia i pixel dalla memoria linea per linea. Poich\u00e9 LTDC non supporta la rotazione hardware, l&#8217;unico modo affidabile per ruotare l&#8217;immagine \u00e8 farlo via software prima che i pixel raggiungano il framebuffer LTDC. <\/p>\n<p>LVGL supporta la rotazione del display attraverso:<br \/>\nlv_display_set_rotation(disp, LV_DISPLAY_ROTATION_xxx);<br \/>\ndove xxx pu\u00f2 essere 0, 90, 180 o 270.<\/p>\n<p>Tuttavia, questa chiamata aggiorna il sistema di coordinate interno di LVGL e la gestione del layout; non ruota automaticamente i dati dei pixel per le pipeline RGB basate su LTDC. Per questo motivo, la rotazione dei pixel deve essere gestita all&#8217;interno del callback LVGL flush. <\/p>\n<p><strong>Dove si inserisce la rotazione nella pipeline LVGL<\/strong><\/p>\n<p>In questa configurazione:<\/p>\n<ul>\n<li>LVGL esegue il rendering di piccole &#8220;piastrelle&#8221; in un buffer di lavoro (px_map) utilizzando la<strong> modalit\u00e0 di rendering PARZIALE.<\/strong><\/li>\n<li>Il callback flush (disp_flush) scrive le tessere renderizzate nel framebuffer LTDC.<\/li>\n<li>Se la rotazione \u00e8 abilitata, il callback di flush ruota il riquadro prima di scriverlo nel framebuffer.<\/li>\n<li>Le coordinate del tocco rimangono coerenti perch\u00e9 LVGL conosce la rotazione corrente del display.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Inizializzazione_LVGL_rendering_PARZIALE_rotazione\"><\/span>Inizializzazione LVGL (rendering PARZIALE + rotazione)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Il display viene creato e configurato in lvgl_port_display.c:<\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">void lvgl_display_init(void)\n{\ndisp = lv_display_create(MY_DISP_HOR_RES, MY_DISP_VER_RES);\n\n__attributo__((sezione(\".my_ram_d2_data\"))\nstatico uint8_t buf1[288 * 1024];\n\nlv_display_set_buffers(disp, (void *)buf1, NULL, sizeof(buf1),\nLV_DISPLAY_RENDER_MODE_PARTIAL);\n\n\/* Imposta la rotazione desiderata *\/\nlv_display_set_rotation(disp, LV_DISPLAY_ROTATION_90);\n\n\/* Registra il callback di flush *\/\nlv_display_set_flush_cb(disp, disp_flush);\n}<\/pre>\n<p><img decoding=\"async\" class=\"alignnone wp-image-128933 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1.png\" alt=\"\" width=\"826\" height=\"248\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1.png 826w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1-300x90.png 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1-768x231.png 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1-600x180.png 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1-64x19.png 64w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Flush_callback_rotazione_software_nel_framebuffer_LTDC\"><\/span>Flush callback (rotazione software nel framebuffer LTDC)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Di seguito \u00e8 riportato il callback di flush utilizzato per i display Riverdi STM32 con LTDC.<br \/>\nSupporta la rotazione per:<\/p>\n<ol>\n<li>Trasformare l&#8217;area di destinazione tramite lv_display_rotate_area(), e<\/li>\n<li>Ruota i dati dei pixel tramite lv_draw_sw_rotate() prima di scriverli nel framebuffer<br \/>\n.<\/li>\n<\/ol>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">static void disp_flush(lv_display_t * display,\nconst lv_area_t * area,\n\nuint8_t * px_map)\n{\nlv_color_format_t cf = lv_display_get_color_format(display);\nuint32_t px_size = lv_color_format_get_size(cf); \/* RGB565 = 2 byte *\/\n\n\/* Calcola l'area di destinazione dopo la rotazione *\/\nlv_area_t rot_area = *area;\nlv_display_rotate_area(display, &amp;rot_area);\n\nint32_t src_w = lv_area_get_width(area);\nint32_t src_h = lv_area_get_height(area);\n\nuint32_t src_stride = lv_draw_buf_width_to_stride(src_w, cf);\nuint32_t fb_stride = lv_draw_buf_width_to_stride(MY_DISP_HOR_RES, cf);\n\n\/* Indirizzo del framebuffer LTDC *\/\nuint8_t * fb = (uint8_t *)hltdc.LayerCfg[0].FBStartAdress;\nfb += (rot_area.y1 * fb_stride) + (rot_area.x1 * px_size);\n\n\/* Manutenzione della cache (necessaria quando il framebuffer \u00e8 nella SDRAM esterna) *\/\nSCB_CleanInvalidateDCache();\n\nlv_display_rotation_t r = lv_display_get_rotation(display);\n\nif(r == LV_DISPLAY_ROTATION_0) {\n\/* Percorso veloce: nessuna rotazione *\/\nfor(int32_t y = 0; y &lt; src_h; y++) {\nlv_memcpy(fb, px_map, src_stride);\npx_map += src_stride;\n\nfb += fb_stride;\n}\n} else {\n\/* Ruota la piastrella renderizzata direttamente nel framebuffer *\/\nlv_draw_sw_rotate(px_map, fb,\nsrc_w, src_h,\nsrc_stride, fb_stride,\nr, cf);\n}\n\n\/* Notifica a LVGL che il lavaggio \u00e8 stato completato *\/\nlv_display_flush_ready(display);\n}<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Risultato\"><\/span>Risultato<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Con questo approccio:<\/p>\n<ul>\n<li>l&#8217;immagine viene ruotata fisicamente prima dell&#8217;uscita LTDC,<\/li>\n<li>Il layout e il rendering di LVGL rimangono coerenti,<\/li>\n<li>le coordinate tattili rimangono allineate con l&#8217;interfaccia utente ruotata,<\/li>\n<li>non \u00e8 necessario modificare la configurazione della temporizzazione LTDC.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Rotazione_dello_schermo_su_STM32_con_TouchGFX\"><\/span>Rotazione dello schermo su STM32 con TouchGFX<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A differenza di LVGL,  <strong>TouchGFX gestisce la rotazione dello schermo a livello di framework e di configurazione.<\/strong>  Per la maggior parte dei progetti di display Riverdi basati sull&#8217;STM32, la rotazione pu\u00f2 essere abilitata  <strong>senza modificare i driver di visualizzazione di basso livello o il codice di gestione del framebuffer.<\/strong><\/p>\n<p>Questo rende TouchGFX particolarmente comodo quando:<\/p>\n<ul>\n<li>l&#8217;orientamento del display \u00e8 noto al momento della progettazione,<\/li>\n<li>la rotazione non deve essere modificata dinamicamente in fase di esecuzione,<\/li>\n<li>\u00e8 preferibile un approccio veloce e manutenibile basato sulla configurazione.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Concetto_di_rotazione_TouchGFX\"><\/span>Concetto di rotazione TouchGFX<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>TouchGFX astrae la pipeline di visualizzazione e la gestisce:<\/p>\n<ul>\n<li>layout del framebuffer,<\/li>\n<li>orientamento del rendering,<\/li>\n<li>trasformazioni di coordinate,<\/li>\n<li>mappatura dell&#8217;input tattile.<\/li>\n<\/ul>\n<p>Il risultato \u00e8 che:<\/p>\n<ul>\n<li>non \u00e8 necessaria la rotazione manuale dei pixel nel percorso di lavaggio LTDC,<\/li>\n<li>non \u00e8 necessaria alcuna manipolazione personalizzata del framebuffer,<\/li>\n<li>La rotazione viene applicata in modo coerente al rendering e all&#8217;input tattile.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Abilitazione_della_rotazione_dello_schermo_nel_designer_TouchGFX\"><\/span>Abilitazione della rotazione dello schermo nel designer TouchGFX<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>La rotazione dello schermo viene configurata direttamente in TouchGFX Designer.<\/p>\n<p>La denominazione esatta pu\u00f2 variare leggermente a seconda della versione di TouchGFX, ma il flusso di lavoro di<br \/>\n\u00e8 coerente.<\/p>\n<p><strong>Passo 1 &#8211; Aprire la configurazione del display<\/strong><\/p>\n<p>In TouchGFX Designer:<\/p>\n<ol>\n<li>Apri il tuo progetto.<\/li>\n<li>Vai alla sezione <strong>Display \/ Scheda \/ Configurazione dell&#8217;applicazione<\/strong>.<\/li>\n<li>Individua l&#8217;impostazione <strong>Orientamento del display<\/strong> o <strong>Rotazione dello schermo<\/strong>.<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Sintesi\"><\/span>Sintesi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nei moduli STM32 Riverdi, la luminosit\u00e0 della retroilluminazione \u00e8 controllata da un PWM hardware generato da TIM15 e regolato da un driver LED a corrente costante. Il duty cycle definisce la luminosit\u00e0 in modo indipendente dal framework della GUI, consentendo un funzionamento stabile e prevedibile. <\/p>\n<p>La rotazione dello schermo non \u00e8 supportata dall&#8217;hardware LTDC e deve essere gestita a livello grafico. In LVGL, la rotazione richiede la trasformazione dei pixel via software nel callback di flush. In TouchGFX, la rotazione viene configurata a livello di framework senza modificare i driver di visualizzazione di basso livello.  <\/p>\n<p>La separazione del controllo a livello hardware dalle responsabilit\u00e0 del livello grafico garantisce un&#8217;architettura pulita e un comportamento affidabile nei sistemi di visualizzazione basati su STM32.<\/p>\n<p><iframe style=\"aspect-ratio: 16\/9;\" title=\"\" src=\"https:\/\/www.youtube.com\/embed\/VsqYn-6io9A\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il controllo della retroilluminazione e la rotazione dello schermo sono operazioni fondamentali per il display che hanno un impatto diretto sul comportamento del sistema nei progetti basati su STM32. Sono indipendenti dalla logica applicativa, ma strettamente collegate alla configurazione hardware e alle funzionalit\u00e0 del framework grafico. In questo articolo spieghiamo come i moduli display STM32 [&hellip;]<\/p>\n","protected":false},"author":3328,"featured_media":128924,"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-129687","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>Guida alle operazioni di visualizzazione fondamentali su STM32 - 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\/a-guide-to-fundamental-display-operations-on-stm32\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guida alle operazioni di visualizzazione fondamentali su STM32 - Riverdi\" \/>\n<meta property=\"og:description\" content=\"Il controllo della retroilluminazione e la rotazione dello schermo sono operazioni fondamentali per il display che hanno un impatto diretto sul comportamento del sistema nei progetti basati su STM32. Sono indipendenti dalla logica applicativa, ma strettamente collegate alla configurazione hardware e alle funzionalit\u00e0 del framework grafico. In questo articolo spieghiamo come i moduli display STM32 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32\" \/>\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-16T13:00:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.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=\"9 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\"},\"author\":{\"name\":\"Rafa\u0142 F\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\"},\"headline\":\"Guida alle operazioni di visualizzazione fondamentali su STM32\",\"datePublished\":\"2026-03-16T13:00:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\"},\"wordCount\":1448,\"image\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\",\"articleSection\":[\"Visualizza 101\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\",\"url\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\",\"name\":\"Guida alle operazioni di visualizzazione fondamentali su STM32 - Riverdi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\",\"datePublished\":\"2026-03-16T13:00:51+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage\",\"url\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\",\"contentUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\",\"width\":1280,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Front Page\",\"item\":\"https:\\\/\\\/riverdi.com\\\/it\\\/prima-pagina\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guida alle operazioni di visualizzazione fondamentali su STM32\"}]},{\"@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":"Guida alle operazioni di visualizzazione fondamentali su STM32 - 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\/a-guide-to-fundamental-display-operations-on-stm32","og_locale":"it_IT","og_type":"article","og_title":"Guida alle operazioni di visualizzazione fondamentali su STM32 - Riverdi","og_description":"Il controllo della retroilluminazione e la rotazione dello schermo sono operazioni fondamentali per il display che hanno un impatto diretto sul comportamento del sistema nei progetti basati su STM32. Sono indipendenti dalla logica applicativa, ma strettamente collegate alla configurazione hardware e alle funzionalit\u00e0 del framework grafico. In questo articolo spieghiamo come i moduli display STM32 [&hellip;]","og_url":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32","og_site_name":"Riverdi","article_publisher":"https:\/\/www.facebook.com\/riverdi.displays\/","article_published_time":"2026-03-16T13:00:51+00:00","og_image":[{"width":1280,"height":600,"url":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.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":"9 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32#article","isPartOf":{"@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32"},"author":{"name":"Rafa\u0142 F","@id":"https:\/\/riverdi.com\/it#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef"},"headline":"Guida alle operazioni di visualizzazione fondamentali su STM32","datePublished":"2026-03-16T13:00:51+00:00","mainEntityOfPage":{"@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32"},"wordCount":1448,"image":{"@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage"},"thumbnailUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","articleSection":["Visualizza 101"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32","url":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32","name":"Guida alle operazioni di visualizzazione fondamentali su STM32 - Riverdi","isPartOf":{"@id":"https:\/\/riverdi.com\/it#website"},"primaryImageOfPage":{"@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage"},"image":{"@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage"},"thumbnailUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","datePublished":"2026-03-16T13:00:51+00:00","author":{"@id":"https:\/\/riverdi.com\/it#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef"},"breadcrumb":{"@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage","url":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","contentUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","width":1280,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/riverdi.com\/it\/blog\/a-guide-to-fundamental-display-operations-on-stm32#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Front Page","item":"https:\/\/riverdi.com\/it\/prima-pagina"},{"@type":"ListItem","position":2,"name":"Guida alle operazioni di visualizzazione fondamentali su STM32"}]},{"@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\/129687","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=129687"}],"version-history":[{"count":0,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/posts\/129687\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/media\/128924"}],"wp:attachment":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/media?parent=129687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/categories?post=129687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/tags?post=129687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}