Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ARM9][MMnet1001] I2C, TLV320AIC23B

23 Sty 2012 20:45 1174 3
  • Poziom 2  
    Witam,

    Otóż mam taki problem z I2C, gdy próbuję użyć kodeka audio TLV320AIC23B.

    [ 794.700000] tlv320aic23_write cannot write 07f to register R8
    [ 794.700000] i2c i2c-0: sendbytes: NAK bailout.
    [ 794.710000] tlv320aic23_write cannot write 042 to register R7
    [ 794.720000] i2c i2c-0: sendbytes: NAK bailout.
    [ 794.720000] tlv320aic23_write cannot write 001 to register R9
    [ 794.730000] i2c i2c-0: sendbytes: NAK bailout.
    [ 794.730000] tlv320aic23_write cannot write 047 to register R6

    System to Linux OpenWRT, jądro 2.6.36.4 (+ patche od OpenWRT).

    Pozdrawiam, Jacek.
  • Użytkownik usunął konto  
  • Poziom 2  
    Poprawność połączeń jest dobra, a tak mi się wydaję z racji tego, ponieważ w tej sprawie konsultowałem się z samym producentem sprzętu. Chyba, że to on się pomylił ;)

    Co do własnej aplikacji, chyba nie muszę pisać niczego własnego, gdyż sterownik do tego kodeka audio jest obecny w jądrze Linuxa, więc w teorii powinien działać, jednak bardziej bym tu obwiniał sterownik od I2C. Problem w tym, że plików źródłowych z I2C w jądrze, jest troszkę sporo i tak naprawdę nie wiem za to dokładnie się zabrać :(
    Myślałem jeszcze nad plikiem konfiguracyjnym płytki (arch/arm/mach-at91/board-mmnet1000.c), może tam należy umieścić jakąś konfigurację I2C?

    Korzystałem z aplikacji dostępnych w pakiecie i2c-tools, jednak kodek jest pod kontrolą sterownika więc I2C go pomija i za wiele zrobić się nie da,
    świadczą o tym oznakowania "UU" podczas komendy "i2cdetect -y 0". (Link)
    Wynik próby zrealizowania komendy i2cset:
    Code:
    Error: Could not set address to 0x1a: Device or resource busy
  • Poziom 2  
    Znalazłem rozwiązanie.
    Natura problemu okazała się być techniczna, a nie jak wcześniej podejrzewałem programowa.

    Rozwiązaniem okazało się dolutowanie do linii SDIN i SCLK po jednym rezystorze podciągającym, każdy po 10k.