Esercizio 33bus CAN e SPI, DMA, PLL analogico, antenne e ZigBee (esempio del corso, lacune dei temi d'esame)
In questa pagina 7
Testo (esempio del corso: argomenti del programma che non compaiono nei temi d'esame ma sono trattati nelle lezioni di comunicazione e wireless).
(i) Tre nodi CAN con identificatori , e iniziano a trasmettere insieme. Scrivere gli identificatori a 11 bit e indicare bit per bit quale nodo vince l'arbitraggio. (ii) Un messaggio CAN standard con 8 byte di dati viaggia a 500 kbit/s: durata senza e con il caso peggiore di bit stuffing. (iii) Un trasferimento SPI di 16 bit con clock SCK a 10 MHz: durata. Quante linee servono per un master e tre slave? (iv) Un VCO ha frequenza da 1 MHz a 2 MHz per una tensione di controllo da 0 a 5 V. Calcolare il guadagno . Un PLL con divisore per deve produrre una portante a 433 MHz da un quarzo: frequenza del quarzo. (v) Un'antenna loop deve funzionare a 433 MHz e una antenna patch a 2,4 GHz (). Lunghezza massima del loop e lunghezza del patch. Per un pacchetto ZigBee da 127 byte a 250 kbit/s, durata della trasmissione. (vi) Un DMA a blocchi trasferisce 512 parole da 16 bit con un bus che accetta una parola per ciclo di clock a 100 MHz: durata del trasferimento e confronto con una ISR da 1 µs per ogni parola (polling a interruzione).
Teoria usata: Bus I2C, SPI e CANI2C: bus seriale sincrono a 2 fili (SDA dati, SCL clock, con resistenze di pull-up), un master (il µC) e molti slave con indirizzo a 7 bit; byte da 9 bit (8 + ACK dato dal ricevitore abbassando SDA); start: SDA scende con SCL alto; stop: SDA sale con SCL alto; 100 kbit/s (normale), 400 kbit/s (fast); half-duplex. SPISerial Peripheral Interface: bus seriale sincrono a quattro fili: 4 fili (MOSI, MISO, SCK, CS), full duplex, master e slave selezionati da CS, 4 modi (CPOL, CPHA). CAN: bus differenziale (120 Ω) asincrono, messaggi etichettati da un identificatore (11 o 29 bit), arbitraggio automatico (vince l'ID più basso), bit stuffing dopo 5 bit uguali, CRC a 15 bit, contatori di errori (127, 255).Bus I2C, SPI e CAN →, Comunicazione wireless - ASK, OOK, FSK, PLL e antenneMolti µC integrano un trasmettitore RF semplice: PLL che genera la portante a $N$ volte la frequenza di un quarzo, amplificatore (LNA) e antenna con rete di adattamento. Modulazioni digitali: ASK (due livelli di ampiezza), OOK (un livello è zero), FSK (due frequenze). In analogico si usa l'FM con VCO e PLL (CD4046). Il PLL è un anello di retroazione: comparatore di fase, filtro passa-basso, VCO ($k_{VCO}=\frac{f_{max}-f_{min}}{V_{max}-V_{min}}$), divisore per $N$; a regime errore nullo di frequenza e di fase. Antenne a microstriscia: loop (lunghezza $\lesssim\lambda/10$), patch ($f_r\simeq\frac c{2L\sqrt{\varepsilon_r}}$). Standard: Wi-Fi 802.11, Bluetooth 802.15.1, ZigBee 802.15.4 (2,4 GHz, 250 kbit/s, rete mesh, basso consumo).Comunicazione wireless - ASK, OOK, FSK, PLL e antenne →, Sottosistema di I-O - polling, interruzioni e DMALe periferiche si collegano al bus con una interfaccia che ha registri di dati (DREG), controllo (CREG) e stato (SREG); nei µC e DSP sono mappati in memoria (si leggono e scrivono come locazioni). Poiché le periferiche sono asincrone e lente, la sincronizzazione avviene per polling (inefficiente), per interruzioni (la più usata) o per DMA (costoso, per grandi quantità di dati). Una interruzione: completa l'istruzione, salva il contesto (PC e registro di stato, spesso altro), esegue la ISR, ripristina. Le sorgenti si distinguono con ISR di stato, interruzioni vettorizzate o daisy-chaincollegamento delle periferiche in catena, in cui il segnale di riconoscimento passa dall'una all'altra; le NMI non sono mascherabili.Sottosistema di I-O - polling, interruzioni e DMA →.
(i) Arbitraggio CAN
In binario a 11 bit: , , . Nel CAN lo stato dominante (0) prevale sul recessivo (1) (wired-AND) e ogni nodo confronta il bit che trasmette con quello che legge sul bus: se trasmette 1 e legge 0, ha perso e smette.
- Bit 1 e 2: per tutti: nessuno perde.
- Bit 3: : nessuno perde.
- Bit 4: il nodo con trasmette 1, gli altri due 0: il bus va a 0, il nodo perde e diventa ricevitore.
- Bit 5-7: per entrambi i nodi rimasti ( e ): nessuno perde.
- Bit 8: il nodo trasmette 0, il nodo 1 (, : la prima differenza è all'ottavo bit): il nodo perde. Vince il nodo con , l'identificatore numericamente più basso, senza perdita di tempo né di dati: il suo messaggio prosegue senza interruzioni come se fosse stato solo.
(ii) Durata di un messaggio CAN
Senza stuffing: SOF (1) + ID (11) + RTR (1) + controllo (6) + dati () + CRC (15) + delimitatore CRC (1) + ACK (2) + EOF (7) bit, più 3 bit di intervallo tra i messaggi: 111 bit . Il bit stuffing agisce da SOF fino al CRC (98 bit): nel caso peggiore (tutti uguali) si inserisce un bit ogni 4 bit uguali dopo il primo: bit in più: bit (+22%).
(iii) SPI
Il trasferimento di 16 bit con MHz dura (SPI è full duplex: mentre il master invia sulla linea MOSI riceve 16 bit su MISO). Per un master e tre slave: SCK, MOSI, MISO (condivise) e una linea CS per slave: linee.
(iv) VCO e PLL
. Con un divisore per nell'anello la portante è : (il quarzo comune da 6,7650 MHz o simile con un piccolo scarto: nelle applicazioni reali si sceglie il valore commerciale più vicino e si regola ).
(v) Antenne e ZigBee
m. Loop: lunghezza totale . Patch a 2,4 GHz: (circa 3 cm). ZigBee: (più il tempo di accesso al canale: il duty-cycle di trasmissione è basso).
(vi) DMA
Con un bus a 100 MHz ( ns per ciclo) e una parola per ciclo: per l'intero blocco, con la CPU libera (tranne i cicli di bus ceduti: cycle stealing o burst) e una sola interruzione a fine trasferimento. Con una ISR da 1 µs per parola: di tempo di CPU, cioè 100 volte di più, senza contare la latenza di ogni interruzione. Il DMA è l'unica scelta se la periferica produce dati molto velocemente.
Errori comuni
- Dire che in CAN vince l'identificatore più alto: vince il più basso (il bit 0 è dominante).
- Contare lo stuffing anche su CRC delimitatore, ACK e EOF (si applica da SOF a CRC).
- Confondere le linee dei bus: I2C ne ha 2 (SDA, SCL), SPI per slave, CAN 2 differenziali.
- Calcolare la lunghezza del loop come invece che .
Versione ripasso
Testo. Arbitraggio CAN, durata di un messaggio, SPI, VCO e PLL, antenne e ZigBee, DMA (esempio del corso).
- CAN:
10110011100,10100110111,10100111001: al bit 4 perde 1436, al bit 8 perde 1337; vince 1335. Messaggio da 8 byte: 111 bit = 222 µs, caso peggiore 135 bit = 270 µs. - SPI: 16 bit a 10 MHz = 1,6 µs; master + 3 slave = 6 linee.
- PLL: kHz/V; quarzo MHz.
- Antenne: loop cm a 433 MHz; patch a 2,4 GHz, : mm; ZigBee 127 byte = 4,06 ms.
- DMA: 512 parole in µs, una sola interruzione, contro 512 µs di ISR.
- Errori: vince l'ID più alto; stuffing su tutto; linee dei bus; loop lungo (Bus I2C, SPI e CANI2C: bus seriale sincrono a 2 fili (SDA dati, SCL clock, con resistenze di pull-up), un master (il µC) e molti slave con indirizzo a 7 bit; byte da 9 bit (8 + ACK dato dal ricevitore abbassando SDA); start: SDA scende con SCL alto; stop: SDA sale con SCL alto; 100 kbit/s (normale), 400 kbit/s (fast); half-duplex. SPISerial Peripheral Interface: bus seriale sincrono a quattro fili: 4 fili (MOSI, MISO, SCK, CS), full duplex, master e slave selezionati da CS, 4 modi (CPOL, CPHA). CAN: bus differenziale (120 Ω) asincrono, messaggi etichettati da un identificatore (11 o 29 bit), arbitraggio automatico (vince l'ID più basso), bit stuffing dopo 5 bit uguali, CRC a 15 bit, contatori di errori (127, 255).Bus I2C, SPI e CAN →).