Udało mi się obsłużyć i2c, jednak mam z nim małe problemy.
Obsłużyłem bezproblemowo układ PCF8574 i zabrałem się do obsługi 4 kanałowego procesora dźwięku TDA7313 i działa wszystko bez zarzutu oprócz regulacji głośności dźwięku. Wszystkie komendy są wysyłane prawidłowo i nie są zgłaszane żadne błędy, a regulacji jak nie było tak niema. Myślę, że jest to związane z bitem kontroli ACK. Ktoś może wie jak go prawidłowo obsłużyć?
Poniżej fragment mojego kodu w c++:
res = ioctl(fileHander, I2C_SLAVE, slaveAddr);
if (res != 0) {
LOGE("I2C: Can't set slave address, res=%d ", res);
goto err2;
}
if ((j = write(fileHander, bufByte, len + 1)) != len + 1) {
LOGE("write fail in i2c");
goto err2;
}
---------- Post dołączono o 13:36 ---------- Poprzedni post napisano o 12:48 ----------
Po wielkich trudach doszedłem jaki jest problem. Przy wysyłaniu zmiennej int w postaci Decymalnej np 10, wysyła przetwarza mi to na postać binarna 1010 zamiast 00001010.
Próbuje to poprawić za pomocą: int sets= Integer.toBinaryString(zmienna); ale zgłasza błąd, że nie może przekształcić typu string w typ int. Potrzebuję zapisać zmienną w postać np int sets= 00001010.
Ktoś ma jakiś pomysł?