Domanda:
I2C ha ripetuto l'avvio con BitBanging non funzionante - Libreria Pigpio su Raspberry Pi B +
Thomas
2016-02-01 08:59:03 UTC
view on stackexchange narkive permalink

Primo post qui sul forum! Ho ricevuto molto aiuto qui da tutti i post precedenti e sono grato per questa fantastica community.

Ho provato a utilizzare Avvio ripetuto utilizzando Libreria PIGPIO che utilizza il bitbanging.

Tuttavia, non sono riuscito a farlo funzionare e continuo a ricevere:

-82 errore: scrittura i2c non riuscita.

Ad esempio, quando provo a inizializzare il sensore RGB utilizzando la seguente riga:

  err = bbI2CZip (2, RGB_init_buf, sizeof (RGB_init_buf), NULL, 0);  

con il seguente buffer di inizializzazione:

  char RGB_init_buf [] = {4, RGB_ADDR, // set up Chip address 2, 7, 2, (RGB_COMMAND_BIT | TCS34725_ATIME), 0xEB, 3, // 2, 7, 2, (RGB_COMMAND_BIT | TCS34725_CONFIG), 0x00, 3, // 2, 7, 2, (RGB_COMMAND_BIT | TCS34725_CONTROL, 0x00, 3, // 2, 7, 2, (RGB_COMMAND_BIT | TCS34725_CONTROL) // 2, 7, 2, (RGB_COMMAND_BIT | TCS34725_ENABLE), TCS34725_ENABLE_PON, 3, // accensione 0 // EOL};  

Ottengo un codice di errore di -82 , corrispondente a una scrittura I 2 C non riuscita.

Ho impostato il mio bus I 2 C come segue:

  if (gpioInitialise () < 0) {printf ("Inizializzazione libreria Pigpio non riuscita \ n" ); return -1;} if (bbI2COpen (2,3,100000)! = 0) {printf ("Inizializzazione Bit Banging fallita \ n"); return -1;}  

Qualcuno ha idea di quale potrebbe essere il problema?

Non ci sono avviamenti ripetuti utilizzati. Ogni avvio (2) è seguito da un arresto (3) con una scrittura intermedia di due byte sul dispositivo (7 2 x y). Prova a inviare i singoli comandi con pigs i2cwd in quanto ciò otterrà lo stesso effetto e potrebbe mostrare quale scrittura non riesce. Ciò presuppone che il dispositivo sia visibile a i2cdetect.
Ciao Thomas, benvenuto in Raspberry PI SE! Solo per avvisarti, come mi è stato detto molte lune fa, questo è un sito di domande e risposte, non un forum ... :-)
Perché stai cercando di bitbang I2C quando c'è una porta I2C sul Raspberry Pi?
Una risposta:
crj11
2016-03-22 07:26:20 UTC
view on stackexchange narkive permalink

Sei sicuro di avere il valore giusto per RGB_ADDR? Ogni volta che ho visto un errore -82 con pigpio è stato perché il chip I2C non risponde. Questo di solito è perché stai usando l'indirizzo sbagliato. Un'altra possibilità è che SCL / SDA vengano scambiati. Nota che l'array di dati si aspetta un indirizzo a 7 bit e pigpio aggiunge automaticamente il bit di lettura / scrittura corretto per creare l'indirizzo a 8 bit / valore RW utilizzato per accedere allo slave.

Inoltre, come ha notato sopra joan, tu non sono presenti partenze ripetute effettive nell'array.

Tipicamente un inizio ripetuto viene utilizzato per leggere un registro dopo aver scritto il numero di registro. È specificato dai dati dell'array di byte nel formato mostrato di seguito:

  ... 2, 7, 1, regnum, 2, 6, nbytes, 3, ...  

L'iniziale "2, 7, 1" è start, write, byte count 1, seguito dal numero di registro di 1 byte. "2, 6, nbytes, 3" è un inizio ripetuto seguito da una lettura di nbyte seguita da un arresto.

Nota che devi specificare un indirizzo di un buffer per ricevere i dati letti.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...