STMicroelectronics-LOGO

Generatore di codice radio WiSE STM3399Cube UM32 di STMicroelectronics

STMicroelect-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-PRODOTTO

Istruzioni per l'uso del prodotto

  • L'applicazione STM32CubeWiSE-RadioCodeGenerator richiede almeno 2 Gbyte di RAM, porte USB e Adobe Acrobat Reader 6.0.
  • Estrarre il contenuto di stm32wise-cgwin.zip file in una directory temporanea.
  • Avviare STM32CubeWiSE-RadioCodeGenerator_Vx.xxexe file e seguire le istruzioni sullo schermo.
  • Il pacchetto SW STM32CubeWiSE-RadioCodeGenerator filesono organizzati in cartelle tra cui 'app' e 'examples'.
  • Per creare un diagramma di flusso in STM32CubeWiSE-RadioCodeGenerator:
  • Aggiungere SeqActions al diagramma di flusso utilizzando la barra degli strumenti o il menu globale.
  • Collegare SeqActions al punto di ingresso e tra loro disegnando frecce di transizione delle azioni.
  • È possibile spostarsi nel grafico di flusso trascinando le azioni e aggiungendo transizioni di azione in base alle esigenze.

Introduzione

  • Questo documento descrive il pacchetto SW STM32CubeWiSE-RadioCodeGenerator (STM32CubeWiSEcg) con il generatore di codice sequenziatore STM32WL3x MRSUBG.
  • STM32CubeWiSE-RadioCodeGenerator è un'applicazione per PC utilizzata per creare un diagramma di flusso che definisce quali azioni del ricetrasmettitore eseguire e in quali condizioni, utilizzando il driver del sequencer MRSUBG.
  • La radio sub-GHz STM32WL3x contiene questo sequenziatore, che è un meccanismo simile a una macchina a stati che consente la gestione autonoma dei trasferimenti RF, senza alcun bisogno di intervento della CPU.
  • Se è richiesto l'intervento della CPU, è possibile definire degli interrupt. Le azioni del transceiver possono essere organizzate in un grafico di flusso. In questo documento, le singole azioni del transceiver sono denominate SeqActions.
  • Tuttavia, il codice sorgente non è la migliore rappresentazione per i diagrammi di flusso, poiché nasconde la loro struttura logica e temporale.
  • STM32CubeWiSE-RadioCodeGenerator risolve questo problema fornendo un metodo grafico per creare diagrammi di flusso e quindi esportare i diagrammi di flusso generati come codice sorgente C per l'integrazione nelle applicazioni utente.
  • La definizione del diagramma di flusso è memorizzata nella RAM del microcontrollore sotto forma di:
    • Un set di tabelle RAM ActionConfiguration, collegate tra loro tramite puntatori. Questi puntatori definiscono le SeqActions, ovvero il tipo di azione (ad es.ample, trasmissione, ricezione, interruzione), nonché parametri radio specifici di SeqAction e condizioni per le trasmissioni di azioni.
    • Una tabella RAM GlobalConfiguration unica. Definisce il punto di ingresso del flowgraph (il primo SeqAction da eseguire), così come alcuni valori di flag predefiniti e parametri radio comuni.
  • I parametri radio, che possono essere configurati individualmente per ogni SeqAction, sono memorizzati in uno dei registri dinamici, il cui contenuto fa parte della tabella RAM ActionConfiguration. I parametri radio che sono fissi per l'intera esecuzione del flowgraph (a meno che non vengano modificati durante un interrupt della CPU), sono memorizzati in registri statici, il cui contenuto fa parte della tabella RAM di configurazione globale.

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-1

informazioni generali

Licenza
Questo documento descrive il software che gira sul microcontrollore STM32WL3x basato su Arm® Cortex ® -M0+.
Nota: Arm è un marchio registrato di Arm Limited (o delle sue consociate) negli Stati Uniti e/o altrove.

Documenti correlati

Tabella 1. Riferimenti documentali

Numero Riferimento Titolo
[1] Prezzo RM0511 MCU sub-GHz basati su Arm® STM32WL30xx/31xx/33xx

Iniziare

  • Questa sezione descrive tutti i requisiti di sistema per eseguire STM32CubeWiSE-RadioCodeGenerator.
  • Descrive inoltre in dettaglio la procedura di installazione del pacchetto software.

Requisiti di sistema
L'applicazione STM32CubeWiSE-RadioCodeGenerator ha i seguenti requisiti minimi:

  • PC con processore Intel® o AMD® con sistema operativo Microsoft® Windows 10
  • Almeno 2 GB di RAM
  • Porte USB
  • Lettore Adobe Acrobat 6.0

Configurazione del pacchetto SW STM32CubeWiSE-RadioCodeGenerator
Eseguire i seguenti passaggi:

  1. Estrarre il contenuto di stm32wise-cgwin.zip file in una directory temporanea.
  2. Estrarre e avviare STM32CubeWiSE-RadioCodeGenerator_Vx.xxexe file e seguire le istruzioni sullo schermo.

Pacchetto SW STM32CubeWiSE-RadioCodeGenerator files
Il pacchetto SW STM32CubeWiSE-RadioCodeGenerator filesono organizzati nelle seguenti cartelle:

  • app: contiene STM32CubeWiSE-RadioCodeGenerator.exe
  • examples: questa cartella è organizzata nelle seguenti sottocartelle:
  • codice: questa cartella contiene i diagrammi di flusso example già esportato come codice C, pronto per essere iniettato in un progetto applicativo
  • flowgraphs: questa cartella memorizza alcuni exampscenari di operazioni di sequenziamento MRSUBG autonome

Note di rilascio e licenza filesi trovano nella cartella principale.

Descrizione del software STM32CubeWiSE-RadioCodeGenerator

  • Questa sezione descrive le funzioni principali dell'applicazione STM32CubeWiSE-RadioCodeGenerator. Per eseguire questa utility, fare clic sull'icona STM32CubeWiSE-RadioCodeGenerator.

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-2

Dopo aver avviato STM32CubeWiSE-RadioCodeGenerator, appare la finestra principale dell'applicazione. È composta da:

  • Un menu e una barra degli strumenti globali
  • La rappresentazione visiva drag-and-drop del diagramma di flusso
  • Sezione di configurazione SeqAction (visibile solo se è in corso la modifica di un SeqAction)

Costruire un diagramma di flusso
Nozioni di base
I grafici di flusso vengono realizzati in due fasi:

  1. Aggiungere SeqActions al flowgraph. Questo può essere fatto usando il pulsante "Aggiungi azione" nella barra degli strumenti, usando il menu globale (Modifica → Aggiungi azione) o con la scorciatoia "Ctrl+A".
  2. Collegare SeqActions al punto di ingresso e tra loro disegnando frecce di transizione delle azioni.

Le condizioni in cui si verificano queste transizioni sono definite in seguito (vedere Sezione 3.2.1: Flusso di controllo).

Navigazione nel diagramma di flusso, trascinamento delle azioni
Trascinando lo sfondo a scacchiera del diagramma di flusso con il puntatore del mouse (clic sinistro), il viewporta sul diagramma di flusso può essere regolata. La rotellina del mouse può essere utilizzata per ingrandire e rimpicciolire. Cliccando in qualsiasi punto di un'azione (tranne che per le porte di output, il pulsante di eliminazione e il pulsante di modifica) per selezionare un'azione. Le azioni possono essere disposte nel diagramma di flusso trascinandole con il pulsante sinistro del mouse.

Aggiunta di transizioni di azione

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-3

  • Come mostrato nella Figura 2, ogni azione ha due "porte di output", chiamate NextAction1 (NA1) e NextAction2 (NA2), che possono essere collegate a SeqActions che vengono eseguite dopo che l'azione è stata completata. Ad esempioampAd esempio, NextAction1 potrebbe essere utilizzato per eseguire un'azione se l'azione corrente ha avuto esito positivo, mentre NextAction2 potrebbe essere attivato in caso di errore.
  • Per creare una transizione di azione, passa il puntatore del mouse su una delle porte di output, premi il pulsante sinistro del mouse e sposta il puntatore del mouse per trascinare una freccia di transizione. Sposta il puntatore del mouse sulla porta di input a sinistra di un'altra SeqAction e rilascia il pulsante sinistro del mouse per rendere permanente la connessione. Per rimuovere una transizione di azione, ripeti semplicemente i passaggi per la creazione di una transizione di azione, ma rilascia il pulsante sinistro del mouse da qualche parte sullo sfondo a scacchiera.
  • Se un'uscita (NextAction1, NextAction2) non è connessa, il sequencer termina se viene attivata l'azione successiva.
  • Assicuratevi di collegare anche l'"Entry Point" alla porta di input di qualche SeqAction. Questa SeqAction è la prima ad essere eseguita non appena il sequencer viene attivato.

Modifica ed eliminazione delle azioni

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-4

  • Le SeqActions possono essere modificate cliccando sul pulsante matita in alto a sinistra di SeqAction. Possono essere eliminate cliccando sulla croce rossa in alto a destra (vedi Figura 3). L'eliminazione di una SeqAction rimuove anche tutte le transizioni di azione in entrata e in uscita.

Configurazione SeqAction
SeqActions può essere configurato tramite un'interfaccia di configurazione a schede accessibile tramite il pulsante matita in alto a sinistra di ogni azione nel diagramma di flusso. Questa interfaccia configura essenzialmente il contenuto della tabella ActionConfiguration RAM per l'azione specifica, costituita sia da opzioni di configurazione correlate al flusso di controllo sia dal contenuto del registro dinamico. Il contenuto del registro dinamico può essere configurato manualmente con controllo completo su ogni valore del registro (vedere Sezione 3.2.3: Configurazione radio avanzata) o tramite un'interfaccia semplificata (vedere Sezione 3.2.2: Configurazione radio di base). L'interfaccia semplificata dovrebbe essere sufficiente per quasi tutti i casi d'uso.

Flusso di controllo
La scheda del flusso di controllo (vedere Figura 4) contiene alcune opzioni di configurazione di base come il nome dell'azione e l'intervallo di timeout dell'azione. Il nome dell'azione non è solo utilizzato per la visualizzazione nel flowgraph, ma è anche trasferito al codice sorgente generato.

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-5STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-6

  • La scheda del flusso di controllo (vedere Figura 4) contiene alcune opzioni di configurazione di base come il nome dell'azione e l'intervallo di timeout dell'azione. Il nome dell'azione non è solo utilizzato per la visualizzazione nel flowgraph, ma anche trasferito al codice sorgente generato.
  • Ancora più importante, la scheda del flusso di controllo configura la condizione da cui dipende una transizione a NextAction1 / NextAction2, nonché l'intervallo di transizione e i flag. La condizione di transizione può essere configurata cliccando sul pulsante etichettato "...", che fa apparire la finestra di dialogo di selezione della maschera mostrata nella Figura 5. L'intervallo di transizione ha modificato la proprietà NextAction1Interval / NextAction2Interval della tabella RAM. Fare riferimento al manuale di riferimento STM32WL3x [1] per maggiori informazioni sul significato di questo intervallo e sul significato dei flag SleepEn / ForceReload / ForceClear.
  • Inoltre, una breve descrizione del blocco SeqAction può essere aggiunta in questa scheda. Questa descrizione è utilizzata solo per scopi di documentazione e trasferita al codice sorgente generato come commento al codice sorgente.

Configurazione radio di base

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-7

La scheda di configurazione radio di base può essere suddivisa in tre parti:

  1. Una sezione in alto dove vengono configurati due dei parametri più importanti di qualsiasi azione: il comando da eseguire (TX, RX, NOP, SABORT e così via) e, se applicabile, la lunghezza del pacchetto da trasferire.
  2. Una sezione sulla sinistra in cui vengono configurati i parametri radio effettivi quali: frequenza portante, velocità dati, proprietà di modulazione, soglie del buffer dati e timer.
  3. Una sezione sulla destra in cui gli interrupt della CPU possono essere abilitati individualmente. Viene generato un gestore di interrupt per ciascuno degli interrupt selezionati. Questo configura sostanzialmente il contenuto del registro RFSEQ_IRQ_ENABLE.

Per il significato dei vari parametri radio fare riferimento al manuale di riferimento STM32WL3x [1].

Configurazione radio avanzata

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-8

  • Se le opzioni di configurazione esposte tramite la scheda di configurazione radio di base (Sezione 3.2.2: Configurazione radio di base) non sono sufficienti, la scheda di configurazione radio avanzata STM32WL3x consente l'impostazione di contenuti di registro dinamici arbitrari. La scheda di configurazione avanzata viene abilitata spuntando la casella di controllo Configurazione avanzata in alto a destra dell'interfaccia di configurazione a schede.
  • Non è possibile utilizzare contemporaneamente sia la configurazione base che quella avanzata, l'utente deve selezionare l'una o l'altra. Tuttavia, è ovviamente anche possibile modificare manualmente il codice sorgente generato in seguito e aggiungere opzioni di configurazione potenzialmente mancanti.

Finestra di dialogo di configurazione globale

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-9

  • È possibile accedere alla finestra di dialogo "Global Project Settings" tramite il pulsante della barra degli strumenti "Global Settings". La finestra di dialogo contiene sia opzioni di configurazione per i contenuti del registro statico sia impostazioni di progetto aggiuntive. Si noti che solo una piccola frazione delle opzioni di configurazione del registro statico può essere configurata tramite questa finestra di dialogo. Queste opzioni sono fornite solo per accelerare le applicazioni di prototipazione delle applicazioni con STM32CubeWiSE-RadioCodeGenerator.
  • Di solito ci si aspetta che il contenuto del registro statico venga impostato nel codice sorgente scritto manualmente dell'applicazione.
  • Il significato delle altre impostazioni del progetto è spiegato nella finestra di dialogo stessa.
  • Potrebbe essere fornito anche codice C aggiuntivo inserito appena prima di creare la tabella Global Configuration RAM dal contenuto del registro statico. Questo campo può essere utilizzato per impostare valori di registro statici inaccessibili tramite la maschera di configurazione del registro statico fornita.

Generazione del codice
Il flowgraph può essere tradotto in un codice sorgente C completo del progetto premendo il pulsante Generate Code nella barra degli strumenti. La cartella del progetto generato non contiene il progetto files per IAR, Keil® o GCC. Questi filedevono essere aggiunti manualmente al progetto STMWL3x.
Questa è la struttura delle cartelle del progetto generato:

Cartella del progetto

  • compreso
  • SequencerFlowgraph.h: intestazione file per SequencerFlowgraph.c, statico. Non modificarlo.
  • stm32wl3x_hal_conf.h: configurazione HAL STM32WL3x file, statico.
  • origine
  • SequencerFlowgraph.c: definizione del flowgraph. Questa è la parte importante file che usa il driver sequencer per definire le tabelle RAM global-configuration e action-configuration. Generato automaticamente, non modificare.
  • main.c: Progetto principale file che dimostra come caricare e applicare la definizione del flow-graph. Statico, modificalo come necessario.
  • Per modificare main.c o stm32wl3x_hal_conf.h, seleziona overwrite behavior Keep nelle impostazioni del progetto. In questo modo, solo SequencerFlowgraph.c viene sovrascritto.

Come importare il codice generato in un file ex CubeMXample
Per importare un progetto generato da STM32CubeWiSE-RadioCodeGenerator in un'applicazione CubeMXample (MRSUBG_Skeleton), è necessario seguire i seguenti passaggi:

  1. Apri la cartella contenente il files generato da STM32CubeWiSE-RadioCodeGenerator e copia le cartelle “Inc” e “Src”.
  2. Incollare le due cartelle nella cartella “MRSUBG_Skeleton” sovrascrivendo le due già presenti.
  3. Aprire il progetto “MRSUBG_Skeleton” in uno dei seguenti IDE:
    • CALDO
    • MDK-BRACCIO
    • STM32CubeIDE
  4. All’interno del progetto “MRSUBG_Skeleton”, aggiungi “SequencerFlowghraph.c” file:
    • Per un progetto EWARM, il percorso per aggiungere il file è il seguente: MRSUBG_Skeleton\Application\UserSTMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-11
    • Per un progetto MDK-ARM, il percorso per aggiungere il file è il seguente: MRSUBG_Skeleton\Application/UserSTMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-12
    • Per un progetto STM32CubeIDE, il percorso per aggiungere il file è lo stesso:
      MRSUBG_Skeleton\Applicazione\UtenteSTMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-13
  5. All'interno del progetto MRSUBG_Skeleton, aggiungere stm32wl3x_hal_uart.c e stm32wl3x_hal_uart_ex.c files al seguente percorso: MRSUBG_Skeleton\Drivers\STM32WL3x_HAL_Driver. Il percorso è lo stesso per tutti gli IDE. I due filesi trovano in Firmware\Drivers\STM32WL3x_HAL_Driver\Src.STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-14
  6. Per utilizzare le funzionalità COM, stm32wl3x_nucleo_conf.h file, situato in Firmware\Projects\NUCLEOWL33CC\ Examples\MRSUBG\MRSUBG_Skeleton\Inc, deve essere modificato impostando USE_BSP_COM_FEATURE e USE_COM_LOG su 1U:STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-15
  7. Copiare il seguente codice in “stm32wl3x_it.c”, che si trova in MRSUBG_Skeleton\Application\User.

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-16STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-17

Diagramma di flusso examples

  • Quattro exampi diagrammi di flusso sono forniti insieme al codice sorgente. Questi exampi file possono essere caricati in STM32CubeWiSE-RadioCodeGenerator cliccando sul pulsante "Carica" ​​nella barra degli strumenti.

AutoACK_RX

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-18

  • La demo Auto-ACK illustra come due dispositivi STM32WL3x possano comunicare automaticamente tra loro con un intervento minimo della CPU, con l'ausilio dell'hardware del sequencer.
  • Questo diagramma di flusso implementa il comportamento (Auto-Transmit-ACK) del dispositivo A. Nel dispositivo A, il sequencer viene inizializzato in uno stato di ricezione (WaitForMessage), in cui attende l'arrivo di un messaggio.
  • Una volta che arriva un messaggio valido, il sequencer passa automaticamente a uno stato di trasmissione (TransmitACK), in cui un pacchetto ACK viene inviato come risposta, senza l'intervento della CPU. Una volta terminato, il sequencer viene reimpostato nel suo stato iniziale WaitForMessage.
  • Questo diagramma di flusso implementa lo stesso comportamento dell'esempio MRSUBG_SequencerAutoAck_Rxample dall'Esamples\MRSUBG del pacchetto software STM32Cube WL3. Se AutoACK_RX è flashato su un dispositivo
    A, e AutoACK_TX è flashato su un dispositivo, B, i due dispositivi si inviano messaggi avanti e indietro, come in una partita a ping-pong.

AutoACK_TX

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-19

  • La demo "Auto-ACK" illustra come due dispositivi STM32WL3x possono comunicare automaticamente tra loro con un intervento minimo della CPU grazie all'ausilio dell'hardware del sequencer.
  • Questo flowgraph implementa il comportamento ("Auto-Wait-for-ACK") del dispositivo B. Nel dispositivo B, il sequencer viene inizializzato in uno stato di trasmissione (TransmitMessage), in cui trasmette un messaggio. Una volta terminata la trasmissione, passa automaticamente a uno stato di ricezione in cui attende un acknowledgment dal dispositivo A (WaitForACK). Una volta che arriva un acknowledgment valido, il sequencer viene reimpostato nel suo stato iniziale TransmitMessage e l'intero processo ricomincia. Nel caso in cui non venga ricevuto alcun ACK entro 4 secondi, viene attivato un timeout e il sequencer torna comunque allo stato TransmitMessage.
  • Questo diagramma di flusso implementa lo stesso comportamento dell'esempio "MRSUBG_SequencerAutoAck_Tx"ample dall'Examples\MRSUBG del pacchetto software STM32Cube WL3. Se AutoACK_RX viene flashato su un dispositivo, A, e AutoACK_TX viene flashato su un altro dispositivo, B, i due dispositivi inviano messaggi avanti e indietro, come in una partita di ping-pong.

Ascoltare prima di parlare (LBT)

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-20

  • Questo example è tratto dal manuale di riferimento STM32WL3x [1]. Fare riferimento a tale manuale per ulteriori dettagli su questo esempioamplui.

Modalità sniff

STMicroelec-onics-UM3399-STM32Cube-WiSE-Radio-Code-Generator-FIG-21

  • Questo example è tratto dal manuale di riferimento STM32WL3x [1]. Fare riferimento a tale manuale per ulteriori dettagli su questo esempioamplui.

Cronologia delle revisioni

Tabella 2. Cronologia delle revisioni del documento

Data Versione Cambiamenti
21-nov-2024 1 Versione iniziale.
10-feb-2025 2 Nome dispositivo aggiornato per includere STM32WL3x.

AVVISO IMPORTANTE – LEGGERE ATTENTAMENTE

  • STMicroelectronics NV e le sue consociate ("ST") si riservano il diritto di apportare modifiche, correzioni, miglioramenti, migliorie e migliorie ai prodotti ST e/o al presente documento in qualsiasi momento e senza preavviso. Gli acquirenti devono ottenere le ultime informazioni rilevanti sui prodotti ST prima di effettuare ordini. I prodotti ST sono venduti in conformità ai termini e alle condizioni di vendita di ST in vigore al momento della conferma dell'ordine.
  • Gli acquirenti sono gli unici responsabili della scelta, della selezione e dell'uso dei prodotti ST e ST non si assume alcuna responsabilità per l'assistenza applicativa o la progettazione dei prodotti degli acquirenti.
  • Nel presente documento ST non concede alcuna licenza, espressa o implicita, su alcun diritto di proprietà intellettuale.
  • La rivendita di prodotti ST con disposizioni diverse dalle informazioni qui stabilite invaliderà qualsiasi garanzia concessa da ST per tale prodotto.
  • ST e il logo ST sono marchi di fabbrica di ST. Per ulteriori informazioni sui marchi ST, fare riferimento a www.st.com/trademarks. Tutti gli altri nomi di prodotti o servizi sono di proprietà dei rispettivi proprietari.
  • Le informazioni contenute nel presente documento annullano e sostituiscono le informazioni fornite in precedenza in qualsiasi versione precedente del documento.
  • © 2025 STMicroelectronics – Tutti i diritti riservati

Domande frequenti

  • D: Quali sono i requisiti minimi di sistema per STM32CubeWiSE-RadioCodeGenerator?
    • A: I requisiti minimi di sistema includono almeno 2 Gbyte di RAM, porte USB e Adobe Acrobat Reader 6.0.
  • D: Come posso configurare il pacchetto software STM32CubeWiSE-RadioCodeGenerator?
    • A: Per installare il pacchetto software, estrarre il contenuto dello zip fornito file in una directory temporanea e avviare l'eseguibile file seguendo le istruzioni sullo schermo.

Documenti / Risorse

Generatore di codice radio WiSE STM3399Cube UM32 di STMicroelectronics [pdf] Manuale d'uso
UM3399, UM3399 STM32 Cube WiSE Generatore di codice radio, UM3399, STM32, Cube WiSE Generatore di codice radio, Generatore di codice, Generatore

Riferimenti

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *