ROCKPro64 - i2c Bus



  • Mal beim Kaffee schnell was Basteln ­čśë

    Nachmachen auf eigene Gefahr!

    IMG_20190310_103859_ergebnis.jpg

    Auch der ROCKPro64 hat mehrere i2c Bussysteme. Erst mal eine Grafik dazu.

    Bild Text

    Hardware

    Als allererstes eine Warnung! Viele I2C-Module sind f├╝r 5 Volt gebaut, der ROCKPro64 kann aber nur 3 Volt Signale verarbeiten. F├╝r den Betrieb der 5V-Module an 3V-Ger├Ąten gibt es preiswerte Wandler. Eine Nichtbeachtung kann zur Zerst├Ârung des ROCKPro64 f├╝hren!

    Der Adapter ist bestellt, aber ich hatte von der Fa. Wenzel Systems die I2C-Switch-Bar hier liegen und man will das ja ausprobieren. Da bin ich ├╝ber einen Tipp im Netz gestolpert. Auf dem Board sind zwei Abschlusswiderst├Ąnde auf den Bus geschaltet. Diese kann man entfernen, daf├╝r sind auf dem Board zwei L├Âtbr├╝cken SJ1 und SJ2. Das L├Âtzinn entfernt, nachgemessen das die Verbindung nicht mehr besteht und angeschlossen.

    Schaltplan der Fa. Wenzel Systems
    Schaltplan ROCKPro64 v2.1

    Der Anschluss an einen ROCKPro64 sieht dann wie folgt aus:

    Switch-Bar RP64v2.1
    +3,3V P01
    GND P09
    SDA P27 / I2C4 SDA
    SCL P28 / I2C4 SCL

    Wenn ich das alles richtig verstanden habe, dient die Leitung SCL f├╝r die Zeitsignale (Clock) und SDA f├╝r die Daten (Data). Die beiden Leitungen bilden den I2C-Bus, die anderen beiden dienen der Stromversorgung der Switch-Bar.

    In der Grafik sind die I2C Busse mit Nummern versehen, hier im Beispiel I2C4, das entspricht dem Bus Nr.4

    Dann weiter...

    Software

    System

    rock64@rockpro64:~/temp$ uname -a
    Linux rockpro64 5.0.0-1101-ayufan-g41eeb7cd789e #ayufan SMP PREEMPT Fri Mar 8 22:14:59 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
    

    Tools installieren

    sudo apt install i2c-tools
    

    Den Bus absuchen

    rock64@rockpro64:~$ sudo i2cdetect -y 4
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --                         
    

    Oben ist der Originalzustand, ohne das was angeschlossen ist. Jetzt mit angeschlossener Switch-Bar.

    rock64@rockpro64:~/temp$ sudo i2cdetect -y 4
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --  
    

    Switchbar gefunden ­čśë

    Ok, ein paar Erl├Ąuterungen. Den Befehl mal zerlegen.

    sudo i2cdetect -y 4
    
    • sudo - Der Befehl muss mit Rootrechten ausgef├╝hrt werden.
    • -y - Wir stimmen der Ausf├╝hrung zu
    • 4 - Nummer des i2c Busses, hier die Nummer 4

    Ohne das -y w├╝rde das so aussehen.

    rock64@rockpro64:~/temp$ sudo i2cdetect 4
     WARNING! This program can confuse your I2C bus, cause data loss and worse!
     I will probe file /dev/i2c-4.
     I will probe address range 0x03-0x77.
     Continue? [Y/n] n
    

    Wert der Switchbar auslesen

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x00
    

    Auch hier wieder die Zustimmung gesetzt -y, Busnummer 4 und die Adresse der Switch-Bar 0x3e.
    Danach die R├╝ckgabe des Wertes 0x00 Das ist auch korrekt, alle DIP-Schalter sind auf OFF.

    Schalter Nr.1 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x01
    

    Schalter Nr.2 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x02
    

    Schalter Nr.3 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x04
    

    Schalter Nr.4 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x08
    

    Schalter Nr.5 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x10
    

    Schalter Nr.6 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x20
    

    usw. Man sieht also, das die Zust├Ąnde Hexadezimal angezeigt werden.

    Hex Dual Dez
    0 0 0 0 0 00
    1 0 0 0 1 01
    2 0 0 1 0 02
    3 0 0 1 1 03
    4 0 1 0 0 04
    5 0 1 0 1 05
    6 0 1 1 0 06
    7 0 1 1 1 07
    8 1 0 0 0 08
    9 1 0 0 1 09
    A 1 0 1 0 10
    B 1 0 1 1 11
    C 1 1 0 0 12
    D 1 1 0 1 13
    E 1 1 1 0 14
    F 1 1 1 1 15

    Viel Spa├č beim Ausprobieren, aber sch├Ân vorsichtig ­čÖé


Log in to reply
 

Diese Artikel k├Ânnten Dich auch interessieren.

  • 2
  • 1
  • 2
  • 4
  • 2
  • 44
  • 1

  • Linux  

    1