shield GPS arduino con interfacia SPI

Salve,
qualcuno conosce una qualche shield GPS di Arduino che sia controllabile attraverso l'interfaccia SPI?

Perché non Ti piace un modulo con l'interfaccia seriale usando una emulatione software della seriale e percui poterlo collegarlo a qualsiasi pin?
Ciao Uwe

utilizzando l'interfaccia SPI tutti i processi di comunicazione avvengono in tempi molto ridotti, se una seriale e' difficile che arrivi ad un megabit al secondo per le interfaccie SPI sugli atmega si arriva anche a sedici megabit al secondo ed oltretutto io uso gestire le comunicazioni su interfacia SPI scrivendo direttamente il registro SPDR atraverso il quale trasmetto e ricevo un byte e non ho tempi morti di attesa o se li ho sono minimi, utilizzando le interfaccie seriali (UART) le routine per la lettura dei dati da esse prendono molto tempo di cpu e per quello che devo fare io non va bene

Siccome mi son reso conto che e' molto difficile trovare un gps con interfaccia spi allora dovro' dedicare un picolo microcontrollore per fare la conversione UART<->SPI cosi le varie attese dei dati su UART e tempi morti se li becca sto piccolo microcontrollore in periferia e mi scarica dalle attese quello centrale che comunichera' col microcontrollore periferico attraverso la SPI

>robarduino: ... QUESTO forse potrebbe fare al caso tuo, QUI la documentazione ... mi pare di capire che si possa interfacciare sia in SPI che I2C :slight_smile:

Guglielmo

... oppure, leggi QUI (... probabilmente più semplice) :smiley:

Guglielmo

Non vorrei dire una cavolata, ma il Neo-6 di u-blox dovrebbe essere interfacciabile in SPI.

SukkoPera:
Non vorrei dire una cavolata, ma il Neo-6 di u-blox dovrebbe essere interfacciabile in SPI.

in effetti l'integrato neo-6 supporta l'interfacciamento via SPI (vedi allegato) , ,a non tutte le shield realizzate effettivamente prolungano i fili SPI verso l'esterno e ne tantomeno sappiamo se hanno scritto le routine di accesso attraverso l'interfaccia SPI

gpb01:
>robarduino: ... QUESTO forse potrebbe fare al caso tuo, QUI la documentazione ... mi pare di capire che si possa interfacciare sia in SPI che I2C :slight_smile:

Guglielmo

Pare proprio di si :smiley: , questo si interfaccia attraverso la SPI, ma le routine di accesso sono scritte per accedervi via SPI o I2c o sono scritte in maniera generalizzata e si possono usare in tutte le modalita' di accesso?

robarduino:
Pare proprio di si :smiley: , questo si interfaccia attraverso la SPI, ma le routine di accesso sono scritte per accedervi via SPI o I2c o sono scritte in maniera generalizzata e si possono usare in tutte le modalita' di accesso?

Questo bisogna che lo chiedi al venditore :slight_smile:

Guglielmo

robarduino:
utilizzando l'interfaccia SPI tutti i processi di comunicazione avvengono in tempi molto ridotti, se una seriale e' difficile che arrivi ad un megabit al secondo

Stai commettendo un errore di valutazione non indifferente, se usi una comunicazione UART, che è lo standard de facto per i gps, è totalmente gestita in hardware, dal punto di vista dell'impegno cpu è addirittura minore con la UART che con la SPI, tutti e due ovviamente gestiti tramite interrupt.
Il vero "problema" non è l'interfaccia, semmai fare il parsing delle sentenze NMEA visto che sono stringhe ascii abbastanza lunghe, questo si che richiede tempo cpu, ma non cambia nulla se le ricevi tramite spi o uart.

robarduino:
Pare proprio di si :smiley: , questo si interfaccia attraverso la SPI, ma le routine di accesso sono scritte per accedervi via SPI o I2c o sono scritte in maniera generalizzata e si possono usare in tutte le modalita' di accesso?

Con i moduli Ublox se vuoi usare interfacce diverse dalla UART, o la USB, devi abilitarle tramite appositi comandi, trovi tutto sulla documentazione dei moduli, in tutti i casi è inutile usare la SPI non porta nessun vantaggio.
Semmai sarebbe saggio usare una cpu intermedia, tra GPS e cpu dove gira l'applicazione, che si occupa di fare il parsing delle sentenze NMEA per estrapolare i dati di interesse e inviarle solo questi all'applicazione in un formato, preferibilmente binario, a piacere tramite il bus che si preferisce, questo è il sistema maggiormente usato per i moduli GPS utilizzati per i droni.

gpb01:
... oppure, leggi QUI (... probabilmente più semplice) :smiley:

Guglielmo

Si questa e' la soluzione alternativa che avevo pensato anch'io

astrobeed:
Con i moduli Ublox se vuoi usare interfacce diverse dalla UART, o la USB, devi abilitarle tramite appositi comandi, trovi tutto sulla documentazione dei moduli, in tutti i casi è inutile usare la SPI non porta nessun vantaggio.
Semmai sarebbe saggio usare una cpu intermedia, tra GPS e cpu dove gira l'applicazione, che si occupa di fare il parsing delle sentenze NMEA per estrapolare i dati di interesse e inviarle solo questi all'applicazione in un formato, preferibilmente binario, a piacere tramite il bus che si preferisce, questo è il sistema maggiormente usato per i moduli GPS utilizzati per i droni.

concordo al 99,9% , quindi se ho capito bene sti sensori GPS per default funzionano autonomamente e trasmettono sulla UART i dati, quindi se ho capito bene e' sufficiente fare un convertitore monodirezionale UART-->SPI e cioe' legere i dati dalla uart trasmessi dal GPS fare il parsing in base alle proprie esigenze e mettere i dati in un buffer di trasmissione che quando il CS andra low verra' letto e trasferito nel SPDR cosi che il master possa leggerlo.
Tutto cio' che ho scrito e' solo per domandare se e' sufficiente fare un convertitore monodirezionale UART-->SPI e basta oppure lo si deve comunque fare bidirezionale per consentire anche di dare delle impostazioni al modulo GPS?

Si, il funzionamento normale del GPS, tutti quanti, è inviare le varie sentenze NMEA, quali dipende dal setup del GPS, sulla seriale, o altro bus, non appena sono pronte, tipicamente 1 volta al secondo però quasi tutti i moderni moduli GPS possono farlo fino a 5 volte al secondo, fino a 10 volte quelli migliori, in modo continuo senza necessitare di nessun comando dall'altra parte.
In pratica basta una connessione minimale GND e Tx del GPS per ricevere i dati, l'Rx del GPS va collegato solo se è necessario modificare la modalità operativa del GPS mentre funziona, p.e. cambiare le sentenze NMEA da inviare.

Grazie a tutti, gentilissimi

robarduino:
concordo al 99,9% , quindi se ho capito bene sti sensori GPS per default funzionano autonomamente e trasmettono sulla UART i dati, quindi se ho capito bene e' sufficiente fare un convertitore monodirezionale UART-->SPI e cioe' legere i dati dalla uart trasmessi dal GPS fare il parsing in base alle proprie esigenze e mettere i dati in un buffer di trasmissione che quando il CS andra low verra' letto e trasferito nel SPDR cosi che il master possa leggerlo.
Tutto cio' che ho scrito e' solo per domandare se e' sufficiente fare un convertitore monodirezionale UART-->SPI e basta oppure lo si deve comunque fare bidirezionale per consentire anche di dare delle impostazioni al modulo GPS?

Non capisco perché pensi che una UART sia un collo di bottiglia. Il modulo UPS non manda una tonnelata di dati ogni secondo ma stringhe di lunghezza di una decina di Byte. Che finiscono automaticamente nello buffer del UART e vengono letti da quello senza grossi ritardi.

Ciao Uwe