MKR1000 + MPU9250 via SPI

Salve a tutti,
Premetto che sono alle prime esperienze con arduino.
Detto questo…
Ho collegato un MKR1000 ad un MPU9250 con protocollo i2c e funziona tutto bene ma avendo bisogno di più velocità ho provato in SPI ma non ho risposta.
Vi posto collegamenti e sketch.
Grazie in anticipo.

prova_spi.ino (535 Bytes)

prova_spi.ino (535 Bytes)

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

Ciao a tutti,

sto avendo lo stesso problema con la connessione SPI con MPU9250 utilizzando la breakout board sparkfun

Provo a inviare anche solo il comando 'who am I' e non ho alcuna risposta dall'integrato.
Qualcuno ha esperienza con questo chip?

C

Qui, trovi un progetto completo basato sul MPU6050+magnetometro, il 9250 è un 6050 + magnetometro nello stesso case, puoi usare il codice che ho pubblicato come base per iniziare a lavorare con i 9250, se ti serve solo la parte IMU il codice fa già tutto quello che ti serve con tanto di utilizzo del modulo DMP interno al 6050.
Attenzione al ID del MPU perché a quanto pare le breakout possono arrivare sia con il 9250 che il 9255, la differenza principale è l'ID fornito, trovi tutto spiegato nella penultima pagina del topic che ti ho linkato.

Ma la libreria è progettata per lavorare con l'interfaccia SPI?
Libreria con supporto SPI
--> GitHub - sparkfun/SparkFun_MPU-9250_Breakout_Arduino_Library: Arduino sketch for MPU-9250 9DoF with AHRS sensor fusion

Tra l'uso della SPI o della I2C la differenza non è nella velocità, non cambia nulla perché il componente è "lento" di suo, quindi ai fini della velocità acquisizione dati non cambia nulla.
La SPI consente una connessione più affidabile e meno soggetta a blocchi come succede con la I2C, sopratutto in ambiente Arduino dove la gestione standard della I2C è bloccante in caso di errori, infatti nel mio codice uso la I2Cdev che non è bloccante, usa un timeout per auto ripristinare le condizioni di errore.

Grazie a tutti per le risposte.
Proverò a fare qualcosa leggendo il post che mi hai linkato, Astrobeed.
Per quanto riguarda il mio problema specifico, ho scoperto che le librerie che regolano il protocollo i2c (Wire.h) usavano un clock a 100Khz quindi mi è bastato aumentarlo a 400Khz per avere la velocità che mi serviva.
Vi aggiornerò nei prossimi giorni.

Grazie ancora.