Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 6 of 6

Thread: My i2c sniffer

  1. #1

    My i2c sniffer

    I am sharing my I2C sniffer I made for my teensy 3.1. You can basically attach your teensy to an I2C bus SCL0(pin19)and SDA0(pin18) and it will dump out the i2c commands to the serial port.

    The following is a sample output watching the Linear Powerplay GUI with their 3880 power controller chip demo kit.

    Code:
    Opening port
    -----------------
    Legend:
     S=Start
     Sr=Start repeat
     P=stoP
     R=Read
     W=Write
     A=Ack
     N=Nak
    -----------------
    Waiting for data...
    Port open
    Waiting for data...
    Waiting for data...
    S,Addr=0x48,W,A,PAGE(0x00),A,Sr,Addr=0x48,R,A,0x01,N,P
    S,Addr=0x48,W,A,MFR_CONFIG_ALL_LTC3880(0xD1),A,Sr,Addr=0x48,R,A,0x69,N,P
    S,Addr=0x48,W,A,PAGE(0x00),A,0x00,P
    S,Addr=0x48,W,A,MFR_COMMON(0xEF),A,Sr,Addr=0x48,R,A,0xDC,N,P
    S,Addr=0x48,W,A,READ_TEMPERATURE_2(0x8E),A,Sr,Addr=0x48,R,A,0xDD,A,0xE2,N,P
    S,Addr=0x48,W,A,READ_IIN(0x89),A,Sr,Addr=0x48,R,A,0x02,A,0x9A,N,P
    S,Addr=0x48,W,A,NOT_DOCUMENTED_0X95(0x95),A,Sr,Addr=0x48,R,A,0xE8,A,0x03,N,P
    S,Addr=0x48,W,A,READ_VIN(0x88),A,Sr,Addr=0x48,R,A,0x00,A,0xD3,N,P
    S,Addr=0x48,W,A,MFR_CONFIG_ALL_LTC3880(0xD1),A,Sr,Addr=0x48,R,A,0x69,N,P
    S,Addr=0x48,W,A,MFR_VIN_PEAK(0xDE),A,Sr,Addr=0x48,R,A,0x00,A,0xD3,N,P
    S,Addr=0x48,W,A,MFR_TEMPERATURE_2_PEAK(0xF4),A,Sr,Addr=0x48,R,A,0xE0,A,0xE2,N,P
    S,Addr=0x48,W,A,STATUS_INPUT(0x7C),A,Sr,Addr=0x48,R,A,0x00,N,P
    S,Addr=0x48,W,A,STATUS_CML(0x7E),A,Sr,Addr=0x48,R,A,0x00,N,P
    S,Addr=0x48,W,A,MFR_PADS(0xE5),A,Sr,Addr=0x48,R,A,0x33,A,0x03,N,P
    S,Addr=0x48,W,A,LTC2978_MFR_VOUT_MIN (0xFB),A,Sr,Addr=0x48,R,A,0x06,A,0x5A,A,0x49,A,0xB4,A,0x00,A,0x00,A,0x00,A,0x23,N,Sr,Addr=0x48,W,A,0x00,A,0x00,N,0x52,A,P
    S,Addr=0x48,W,A,MFR_VOUT_PEAK(0xDD),A,Sr,Addr=0x48,R,A,0x36,A,0x0B,N,P
    S,Addr=0x48,W,A,READ_VOUT(0x8B),A,Sr,Addr=0x48,R,A,0x33,A,0x0B,N,P
    Attached Files Attached Files

  2. #2
    Senior Member
    Join Date
    Jan 2013
    Posts
    966
    Thanks for sharing. Will have to ry this one out!

  3. #3
    Junior Member
    Join Date
    Oct 2016
    Location
    Longview, WA
    Posts
    4
    kito thank you for sharing this code, this provided a great starting point for some similar I2C decoding I was doing.

  4. #4
    Senior Member
    Join Date
    Dec 2016
    Location
    Montreal, Canada
    Posts
    3,267
    i used this to sniff the touchscreen coordinates, touches, multi touches of my pioneer nex4100, the chip is i2c located just behind the touchscreen bezel lcd frame, required very fine soldering detail to miniscule 2 solder points with optional 3rd for interrupt touches, to allow teensy to feed it as mouse data to pc over USB. after i put the pc hdmi on the NEX for video into and mapped the coordinates, i was able to control a windows pc via touchscreen from the radio

    pretty crazy, i even used a touch gesture on the radio to start the car hehehe

  5. #5
    Quote Originally Posted by jontscott View Post
    kito thank you for sharing this code, this provided a great starting point for some similar I2C decoding I was doing.
    Thanks for the note. Its been so long I chuckled to myself when I saw the forum update me. Actually one thing to note is that I think the code I originally reads SCL as pin 18 and SDA pin 19 and the comments are wrong. The funny thing is I mistakenly wired it backwards on my setup and wrote the code backwards. So the two backwards mistakes equals 1 step forward I guess.

  6. #6
    Junior Member
    Join Date
    Mar 2018
    Posts
    13
    Could this be married to the sigrok/Pulseview effort? They work fantastically! They're also free.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •