I2C

8 Anni 5 Mesi fa #1 da Claudio_F
I2C è stato creato da Claudio_F
Sto provando il MPU6050 su un moduletto Gy-521. Ho trovato su internet varie versioni delle librerie MPU6050 e sto cercando di adattarle all’uso della libreria LTlib – modulo I2C, così sto spulciando un po’ il file moduleI2C.c. Se ho ben capito, le routine ‘I2C1_write_byte’ e ‘I2C1_read_byte’ si limitano a scrivere o leggere un byte, mentre ‘I2C1_write_byte_to_external_device’ e ‘I2C1_read_byte_from_external_device’ si occupano di inviare indirizzo del dispositivo, locazione da indirizzare e fatti tutti i controlli, scrivono o leggono un byte.
1)Ho letto, che con un loop posso fare delle letture successive per leggere bytes contigui inviando solo l’indirizzo della prima locazione. Dovrei implementarlo facendo uso delle funzioni ‘I2C1_start_bit’ ‘I2C1_read_byte’, ‘I2C1_wait_bus_IDLE’ etc.?
2) L’indirizzo del dispositivo è 7 bits a cui va aggiunto in posizione bit0 un bit per indicare lettura o scrittura. Il control_byte va passato già a 8 bits?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Claudio_F
  • Premium Member
  • Premium Member
Di più
8 Anni 5 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic I2C
Relativamente alle considerazioni prima delle domande, confermo la tua comprensione.

Relativamente alle domande vedi la funzione I2C1_read_byte_from_external_device per una migliore comprensione del control byte inviato.

il byte inviato è a 8 bit.
Il bit meno significativo (bit 0) deve essere 0 e rappresenta il bit di W. Gli altri 7 bit di indirizzo sono compresi tra il bit 1 e 7 del byte.

La gestione di invio multipli di byte senza ripetere l'indirizzo dovrebbe essere una combinazione di funzioni, la prima è quella che invia il byte con indirizzo iniziale e il primo byte e poi semplicemente singoli byte.

Andando a memoria la prima funzione che invia il byte dovrebbe terminare la comunicazione in maniera diversa da una comunicazione standard (ACK).
Anche i singoli invii di byte terminano in maniera diversa per dire che stai inviando altri byte.
L'ultimo termina invia la comunicazione rilasciando il bus.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
8 Anni 5 Mesi fa #3 da Claudio_F
Risposta da Claudio_F al topic I2C
Un altro interrogativo, la funzione I2C1_read_byte_from_external_device è dichiarata signed char , in caso di esito positivo viene ritornato il dato come unsigned char questo crea problemi?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Claudio_F
  • Premium Member
  • Premium Member
Di più
8 Anni 5 Mesi fa - 8 Anni 5 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic I2C

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login