- Messaggi: 29
- Ringraziamenti ricevuti 0
×
MSP430, Microcontrollori 16 bit Ultra Low Power
MSP430 ed interfaccia SPI
2 Anni 8 Mesi fa #1
da Blu
MSP430 ed interfaccia SPI è stato creato da Blu
Ciao a tutti,
come da titolo, vorrei fare una domanda riguardo all’interfaccia SPI implementata nei microcontrollori MSP430.
Attualmente sto pensando di avvalermi di un integrato della Texas Instruments, il DRV8908-Q1half-bridge motor driver.
Purtroppo, con questa cavolo di crisi dei chip mi toccherà aspettare ancora un bel po’ per poterlo comprare, ma intanto ho pensato bene di studiarmi il suo datasheet.
Ho così scoperto che questo integrato è dotato di interfaccia SPI; le frasi che riporto qui di seguito (in inglese) le ho prese dal paragrafo 8.5.1 dedicato appunto alla comunicazione con l’interfaccia SPI.
The SPI input data (SDI) word consists of a 16 bit word …
If the data word sent to the SDI pin is less than or more than 16 bits, a frame error occurs and the data word is ignored.
Da ciò si capisce che la sua interfaccia SPI è a 16 bit, e non accetta comandi di lunghezza diversa (niente di strano fin qui).
Quindi, sono andato a vedere le caratteristiche del MCU che avrei voluto impiegare (MSP430FR4133) ed ho scoperto, con mia grande sorpresa, che pur trattandosi di un MCU a 16 bit la sua interfaccia SPI è a 8 bit; e sono ancor più rimasto sorpreso quando ho visto nella User’s Guide che i registri deputati ad inviare/ricevere i dati attraverso l’interfaccia SPI (cioè, i registri UCBxTXBUF e UCBxRXBUF) sono in effetti registri di 16 bit, ma i primi 8 sono “reserved”, e solo quelli da 7 a 0 sono utilizzabili.
Ho quindi pensato di scaricare le User’s Guide di altri MSP430 (di “famiglie” diverse), ed ho trovato sempre la stessa situazione.
Poi, mi sono imbattuto in un documento molto interessante, dal titolo: Implementing SPI Communication Between MSP430™G2452 and LTC2382-16 ADC.
Ebbene, in questo documento veniva mostrato come far dialogare l’MSP430G2452 (quindi, un MSP430 “elementare”) con un integrato, usando la comunicazione SPI a 16 bit.
Sono andato a riguardarmi la User’s Guide di questo MCU, ed ho visto che effettivamente è possibile avvalersi della SPI a 16 bit, nel momento in cui ci si avvale del modulo USI, presente in alcuni (pochi) MSP430, quelli più “elementari”: quelli più performanti hanno il modulo USCI, che invece permette di avvalersi solo di una SPI ad 8 bit.
Almeno, questo è ciò che, da principiante, ho capito io, e mi è sembrato talmente strano da farmi pensare di chiedere a chi è più esperto di me come stanno le cose, perché come ho scritto più sopra l’integrato della Texas Instruments con cui vorrei dialogare funziona solo con una SPI a 16 bit.
Vorrei chiedere anche un’altra cosa, sempre legata alla SPI.
Come noto, il master può connettersi agli slave singolarmente, oppure si può avere un collegamento a catena (“daisy chain”).
Purtroppo, alcuni dispositivi dotati di SPI non hanno il pin “Slave Out”: ad esempio, è così per alcuni display LCD, che evidentemente non hanno nulla di importante da dire al master.
In una situazione in cui si hanno molti slave che possono essere collegati in daisy chain, ed uno slave che invece non può (perché gli manca lo Slave Out), è possibile pensare ad una configurazione “mista”, in cui un pin GPIO del MCU va ad “accendere” la comunicazione con gli slave connessi in daisy chain, ed un altro pin GPIO va invece ad accendere la comunicazione con l’altro slave, quello sprovvisto di Slave Out? Ovviamente, i due pin GPIO saranno sempre attivati in alternativa l’uno all’altro.
Grazie in anticipo per la risposta.
come da titolo, vorrei fare una domanda riguardo all’interfaccia SPI implementata nei microcontrollori MSP430.
Attualmente sto pensando di avvalermi di un integrato della Texas Instruments, il DRV8908-Q1half-bridge motor driver.
Purtroppo, con questa cavolo di crisi dei chip mi toccherà aspettare ancora un bel po’ per poterlo comprare, ma intanto ho pensato bene di studiarmi il suo datasheet.
Ho così scoperto che questo integrato è dotato di interfaccia SPI; le frasi che riporto qui di seguito (in inglese) le ho prese dal paragrafo 8.5.1 dedicato appunto alla comunicazione con l’interfaccia SPI.
The SPI input data (SDI) word consists of a 16 bit word …
If the data word sent to the SDI pin is less than or more than 16 bits, a frame error occurs and the data word is ignored.
Da ciò si capisce che la sua interfaccia SPI è a 16 bit, e non accetta comandi di lunghezza diversa (niente di strano fin qui).
Quindi, sono andato a vedere le caratteristiche del MCU che avrei voluto impiegare (MSP430FR4133) ed ho scoperto, con mia grande sorpresa, che pur trattandosi di un MCU a 16 bit la sua interfaccia SPI è a 8 bit; e sono ancor più rimasto sorpreso quando ho visto nella User’s Guide che i registri deputati ad inviare/ricevere i dati attraverso l’interfaccia SPI (cioè, i registri UCBxTXBUF e UCBxRXBUF) sono in effetti registri di 16 bit, ma i primi 8 sono “reserved”, e solo quelli da 7 a 0 sono utilizzabili.
Ho quindi pensato di scaricare le User’s Guide di altri MSP430 (di “famiglie” diverse), ed ho trovato sempre la stessa situazione.
Poi, mi sono imbattuto in un documento molto interessante, dal titolo: Implementing SPI Communication Between MSP430™G2452 and LTC2382-16 ADC.
Ebbene, in questo documento veniva mostrato come far dialogare l’MSP430G2452 (quindi, un MSP430 “elementare”) con un integrato, usando la comunicazione SPI a 16 bit.
Sono andato a riguardarmi la User’s Guide di questo MCU, ed ho visto che effettivamente è possibile avvalersi della SPI a 16 bit, nel momento in cui ci si avvale del modulo USI, presente in alcuni (pochi) MSP430, quelli più “elementari”: quelli più performanti hanno il modulo USCI, che invece permette di avvalersi solo di una SPI ad 8 bit.
Almeno, questo è ciò che, da principiante, ho capito io, e mi è sembrato talmente strano da farmi pensare di chiedere a chi è più esperto di me come stanno le cose, perché come ho scritto più sopra l’integrato della Texas Instruments con cui vorrei dialogare funziona solo con una SPI a 16 bit.
Vorrei chiedere anche un’altra cosa, sempre legata alla SPI.
Come noto, il master può connettersi agli slave singolarmente, oppure si può avere un collegamento a catena (“daisy chain”).
Purtroppo, alcuni dispositivi dotati di SPI non hanno il pin “Slave Out”: ad esempio, è così per alcuni display LCD, che evidentemente non hanno nulla di importante da dire al master.
In una situazione in cui si hanno molti slave che possono essere collegati in daisy chain, ed uno slave che invece non può (perché gli manca lo Slave Out), è possibile pensare ad una configurazione “mista”, in cui un pin GPIO del MCU va ad “accendere” la comunicazione con gli slave connessi in daisy chain, ed un altro pin GPIO va invece ad accendere la comunicazione con l’altro slave, quello sprovvisto di Slave Out? Ovviamente, i due pin GPIO saranno sempre attivati in alternativa l’uno all’altro.
Grazie in anticipo per la risposta.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Blu
- Autore della discussione
- Junior Member
Riduci
Di più
2 Anni 8 Mesi fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic MSP430 ed interfaccia SPI
Salve Blu,
...DRV8908-Q1 avrai un'attesa lunga.
Riguardo alla SPI 8 vs. 16 bit, non è un problema.
puoi usare un qualunque modulo SPI dell'MSP430 per comunicare con il DRV8908-Q1.
In trasmissioni a 16 bit o altri multipli di 8bit, devi semplicemente controllare il CS per mezzo di un pin digitale.
Abiliti CS, invii i tuoi byte, disattivi il CS.
Maggiori dettagli a riguardo li trovi nel tutorial " Il protocollo SPI ".
Il capitolo SPI nel corso MSP430 , l'ho scritto ma non è ancora pubblicato. Attualmente ho messo gli aggiornamenti "in attesa di tempi migliori".
Saluti,
Mauro
...DRV8908-Q1 avrai un'attesa lunga.
Riguardo alla SPI 8 vs. 16 bit, non è un problema.
puoi usare un qualunque modulo SPI dell'MSP430 per comunicare con il DRV8908-Q1.
In trasmissioni a 16 bit o altri multipli di 8bit, devi semplicemente controllare il CS per mezzo di un pin digitale.
Abiliti CS, invii i tuoi byte, disattivi il CS.
Maggiori dettagli a riguardo li trovi nel tutorial " Il protocollo SPI ".
Il capitolo SPI nel corso MSP430 , l'ho scritto ma non è ancora pubblicato. Attualmente ho messo gli aggiornamenti "in attesa di tempi migliori".
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
2 Anni 8 Mesi fa #3
da Blu
Risposta da Blu al topic MSP430 ed interfaccia SPI
Ciao Mauro,
grazie per la risposta. Creo di aver capito come fare, non farò altre domande al riguardo fino a quando non avrò avuto modo di fare qualche prova con dei componenti reali, ma già il fatto di sapere che gli MSP430 possono tranquillamente comunicare con altri integrati che accettano solo la SPI a 16 bit è già una gran cosa.
Riguardo alla mia seconda domanda, riguardo alla soluzione “mista” daisy chain + collegamento singolo, si tratta di una via percorribile, oppure bisogna sempre fare una scelta esclusiva tra le due?
Saluti,
Marco
grazie per la risposta. Creo di aver capito come fare, non farò altre domande al riguardo fino a quando non avrò avuto modo di fare qualche prova con dei componenti reali, ma già il fatto di sapere che gli MSP430 possono tranquillamente comunicare con altri integrati che accettano solo la SPI a 16 bit è già una gran cosa.
Riguardo alla mia seconda domanda, riguardo alla soluzione “mista” daisy chain + collegamento singolo, si tratta di una via percorribile, oppure bisogna sempre fare una scelta esclusiva tra le due?
Saluti,
Marco
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Blu
- Autore della discussione
- Junior Member
Riduci
Di più
- Messaggi: 29
- Ringraziamenti ricevuti 0
2 Anni 8 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic MSP430 ed interfaccia SPI
Salve Marco,
ogni multiplo di 8 bit non è un problema. SPI supporta diverse modalità e gli IC che richiedono più byte usano la modalità (sequenza) che ho indicato al thread precedente.
se hai più integrati con protocollo SPI, puoi usare il modulo SPI per tutti, ed ad ognuno dedichi un CS (pin IO).
abiliti una periferica alla volta.
Per il daisy chain l'integrato deve supportare data IN e data out, in maniera da poterli mettere in cascata.
se per esempio metti in daisy chan due integrati con comunicazione a 16 bit, devi sempre inviare 32 bit se vuoi comunicare con gli integrati, in maniera da inviare i byte giusti ad ognuno. In casi particolari puoi ottimizzare il numero di byte da inviare.
Da un punto di vista temporale l'architettura daisy chain non ha vantaggi.
Hai un vantaggio solo in termini di linee sul PCB, il quale si semplifica in daisy chain.
Saluti,
Mauro
ogni multiplo di 8 bit non è un problema. SPI supporta diverse modalità e gli IC che richiedono più byte usano la modalità (sequenza) che ho indicato al thread precedente.
Riguardo alla mia seconda domanda, riguardo alla soluzione “mista” daisy chain + collegamento singolo, si tratta di una via percorribile, oppure bisogna sempre fare una scelta esclusiva tra le due?
se hai più integrati con protocollo SPI, puoi usare il modulo SPI per tutti, ed ad ognuno dedichi un CS (pin IO).
abiliti una periferica alla volta.
Per il daisy chain l'integrato deve supportare data IN e data out, in maniera da poterli mettere in cascata.
se per esempio metti in daisy chan due integrati con comunicazione a 16 bit, devi sempre inviare 32 bit se vuoi comunicare con gli integrati, in maniera da inviare i byte giusti ad ognuno. In casi particolari puoi ottimizzare il numero di byte da inviare.
Da un punto di vista temporale l'architettura daisy chain non ha vantaggi.
Hai un vantaggio solo in termini di linee sul PCB, il quale si semplifica in daisy chain.
Saluti,
Mauro
Ringraziano per il messaggio: Blu
Si prega Accedi o Crea un account a partecipare alla conversazione.
2 Anni 8 Mesi fa #5
da Blu
Risposta da Blu al topic MSP430 ed interfaccia SPI
Salve Mauro,
grazie ancora per le tue esaurienti risposte.
Buon lavoro,
Marco
grazie ancora per le tue esaurienti risposte.
Buon lavoro,
Marco
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Blu
- Autore della discussione
- Junior Member
Riduci
Di più
- Messaggi: 29
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.