Il Serial Programmer di Renesas – Puntata 1

Renesas

Questo articolo rappresenta la prima parte della serie "Il Serial Programmer di Renesas" della Rubrica Firmware Reload, all'interno della quale sono presenti articoli della passata rivista cartacea Firmware. La casa costruttrice Renesas ha messo a punto una nuova metodologia per riprogrammare i processori della serie R8C/38C proponendo un sistema assolutamente trasparente per l’utilizzatore, in grado di adattarsi a ogni specifica richiesta e con prerogative tali da permettere al progettista di controllare direttamente tutta la fase di lavoro.  

Renesas, azienda da sempre molto attenta alle implicazioni tecnologiche dei suoi prodotti, prevede oggi nuove soluzioni che permettono di riprogrammare i processori R8C/38C in modo assolutamente trasparente. Secondo le sue stesse specifiche, il nuovo Serial Programmer è applicabile alla linea di processori R8C/38C, ovvero MCU in configurazione da 128 Kb e clock XIN per serial I/O mode 2 pari a 14,7456 MHz e mode 3 con 8 MHz. Il documento in riferimento [1] (vedere puntate successive) descrive le specifiche del Serial Programmer di Renesas, un nuovo sistema che permette di riprogrammare l’area programma ROM in una MCU della serie appena citata, insieme alla specifica del protocollo di comunicazione seriale. È opportuno precisare che questa particolarità s’intende anche applicabile ad altri R8C che condividono gli stessi insiemi dei registri SFR, così come la serie R8C/38C.

Il costruttore assicura grazie a questa possibilità una nuova e più flessibile procedura di aggiornamento del software residente, permettendo all’utilizzatore di selezionare differenti modalità di funzionamento al momento del boostrap della macchina; infatti, è possibile scegliere tra mode 2 e mode 3. In base alle specifiche del costruttore, il nuovo Serial Programmer funziona con un clock asincrono perché le sue caratteristiche tecniche rientrano tra quelle previste di un UART; infatti, in accordo allo standard seriale, è possibile comunicare con il dispositivo di destinazione attraverso una semplice linea seriale con start bit pari a uno, con bit di parità, stop bit e un data transfer pari a 8. Il transfer rate è selezionabile, spaziando da un 460800 bps con standard serial I/O mode 2 e fino a 500000 bps con mode 3.

CENNI SULLA COMUNICAZIONE SERIALE

Lo standard seriale, RS232, è una tecnica molto semplice dato che non richiede particolari criteri implementativi tanto da essere alla portata di tutti: dal semplice cultore alle realizzazioni più squisitamente industriali. In realtà, per la precisione, si stanno sempre più diffondendo soluzioni che permettono di sfruttare più elevate velocità di connessioni e che differiscono dallo standard perché propongono altri criteri implementativi. In questo contesto, ci vogliamo riferire allo standard comunemente conosciuto come RS232 proposto con differenti cablaggi o connettori con diversi pin-out. Quando ci riferiamo a uno standard di questo tipo, ossia trasmissione di tipo seriale, i bit sono trasmessi uno per volta in una medesima connessione. Per applicazioni più semplici è possibile impiegare solo tre fili, ossia una linea di trasmissione Tx, una di ricezione Rx e un collegamento di massa. È intuitivo comprendere che, tipicamente, una connessione di tipo seriale è di certo meno prestazionale di una parallela per via di una sua minore capacità di trasferimento, anche se occorre considerare altri fattori che, in alcuni casi, potrebbero anche vanificare una soluzione di questo tipo.

L’uso di una connessione di tipo seriale trova la sua giustificazione, ad esempio, in un minore ingombro di scheda o per via della presenza/assenza di un disallineamento temporale dei vari segnali che compongono la trasmissione, il cosiddetto skew. Non solo, l’industria, poi, ha fatto passi da gigante per assicurare maggiori prestazioni con soluzioni seriali con minor ingombro su scheda; pensiamo ai diversi standard USB o Ethernet. Per il progettista alle prime armi, o anche per l’appassionato, appare necessario precisare il contesto seriale su cui operiamo. Una trasmissione di tipo seriale può essere di tipo asincrono o sincrono. Nel primo caso, per inviare l’informazione non si ha la necessità di utilizzare un clock di riferimento non essendo indispensabile sincronizzare la trasmissione con la ricezione. In questa particolare applicazione, i due attori, trasmettitore e ricevitore, devono essere dotati di un clock locale per interpretare i dati, e la sincronizzazione dei due clock è necessaria ed è fatta in corrispondenza della prima transizione sulla linea dei dati. Non solo, quando ci si riferisce alla velocità di trasmissione, è necessario intendersi su che cosa significhi parlare di baud e di bit per secondo (bps): questi termini sono a volte trattati in modo erroneo e utilizzati come sinonimi. Quando, in effetti, ci si riferisce al baud rate, allora vogliamo indicare il numero di simboli al secondo che si susseguono sulla linea seriale; al contrario, con bps si vuole indicare quanti bit al secondo sono trasmessi lungo la linea. In un contesto seriale è anche opportuno chiarire i termini di half-duplex e full-duplex.

Nel primo caso, l’half-duplex, ci troviamo in un sistema di tipo bidirezionale, ma nel quale la comunicazione non avviene nello stesso momento, ossia, i ruoli di ricevitore e di trasmettitore sono assegnati in modo flessibile. Un esempio classico è quello di due radioamatori che si parlano su un singolo canale: quando uno parla (TX) l’altro ascolta (RX), e quando il processo tra i due si inverte, lo stesso avviene per le rispettive funzioni. Infatti, nei sistemi di comunicazione è possibile che a fronte di determinate condizioni, una parte possa invertire il proprio funzionamento come avviene, ad esempio, nei sistemi di debug. Nell’altro caso, il full-duplex, non esistono ruoli distinti, ma la comunicazione può svolgersi nello stesso momento in entrambe le direzioni. In questo caso, si deve considerare un aumento della complessità del progetto poiché è indispensabile prevedere più linee di comunicazione. Ricordiamo che lo standard non pone particolari vincoli perché intende garantire una perfetta integrazione delle due modalità. La Figura 1 pone in evidenza una trasmissione seriale con un bps pari a 9600 con il dato pari a 00110000, di solito si indica come 8n2, ossia una trasmissione con un data byte pari a 8, nessuna parità e due bit di stop.

Trasmissione seriale a 9600 bps del dato 00110000

Figura 1: Trasmissione seriale a 9600 bps del dato 00110000

La transizione dei dati, o anche ampiezza del segnale, avviene tra un valore alto, pari ad una tensione di alimentazione positiva di 12V, e uno basso, tensione negativa a - 12 volt. Tipicamente, il livello positivo di 12 volt è anche chiamato “0 logico” ed è indicato come space, al contrario il livello negativo, o anche “1 logico” è indicato come mark. Siccome i dati viaggiano ad una velocità di 9600 bps, allora le transizioni devono trovarsi in corrispondenza dei multipli di 102 microsecondi ottenuti come 1/9600. Una trasmissione seriale inizia con un bit di start e può terminare con una certa varietà di bit di stop (1, 1,5 o 2) successivi all’eventuale valore di parità: questo parametro permette di aggiungere un controllo in fase di trasmissione/ ricezione. La prima transizione inizia da valore logico basso, bit di start, con una durata di 104 microsecondi e solo in seguito inizia la trasmissione dei dati verso il ricevitore, dal bit meno significativo a quello più significativo. Al termine della trasmissione, per via della presenza di due bit di stop, per almeno 208 microsecondi non deve transitare nulla prima di iniziare la successiva spedizione: questo vuol dire che per trasmettere un carattere ASCII dobbiamo impiegare 3 bit in più, quindi 11, con un carico di 1,1 millisecondi.

É anche necessario precisare che lo standard prevede differenti valori di parità, ovvero è possibile scegliere tra Nessuna (non si gestisce alcun bit di parità e di conseguenza non viene introdotto alcun controllo aggiuntivo), parità Pari (anche nota come even e in questo caso il numero di mark, incluso anche questo bit, deve essere sempre pari), parità Dispari (nota come odd, il numero di mark deve essere sempre dispari); con mark il bit di parità vale sempre mark e, infine, con space il bit di parità vale sempre space. Nello standard seriale RS232, in particolare con la modalità UART, non esiste nessun clock comune di riferimento utilizzato per trasmettere e ricevere il flusso dei dati. In questo caso, il problema è risolto ricorrendo al bit di start e campionando, in ricezione, il centro di ciascun bit. Non solo, lo standard non prevede, in maniera categorica, una velocità di riferimento. Siccome vi sono state diverse evoluzioni dello standard seriale, si è arrivati comodamente fino a velocità di 115Kbps: per questa ragione è necessario che il ricevitore e il trasmettitore si mettano d’accordo prima di iniziare una vera sessione di lavoro, ed è quello che succede in questo Serial Programmer di Renesas.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend