Help analyzing I2C logic captures - Pro Mini

Hello,

I am looking for feedback on some I2C Salae captures. The Salae software is free to download. I do not know how to attach this files here.

I am trying to communicate between DS1307 emulator running on Pro Mini as Slave (either 5V/16MHz with level converter or 3.3V / 8MHz) and a 3.3V logic MCU of unknown type acting as Master

The scoreboard supply the original DS1307 with 5V VCC, however talks to the DS1307 on SDA/SCL with 3.3V.

The DS1307 fully supports this (5V VCC, but 3.3V logic)

The SCL clock from mystery MCU appear to be a little slow, around 93KHz instead of 100KHz, however this shouldn't be a problem, as the Arduino DS1307 emulator is acting as Slave.

I successfully have 2 Arduino, 1 running RTClib lib as Master and the other as ds1307 emulator Slave talking to each other fine, (albeit sloppy wave form due to only using internal pullups, but it still works)

However, when I connect to mystery MCU, as you can see in captures it is not working the same

I have captures of no pullup, 4.7K, 1.5K, and 0.67K, as well as the working communication between the two Pro Mini

What is best way to post the captures here?

I'm not familiar with the Saleae software so I don't know what options it has for exporting captured data.

You could try a screenshot but I suspect it will either show the whole transaction and lack detail, or show the detail but not all the transaction.

EDIT: Can you show a screenshot of the whole transaction with the I2C decoder tool enabled?

1 Like

can you take screen shots of the oscilloscope either using a scope function or with a camera?
save as a JPEG and then use the upload button
post a schematic of the setup?
what length are the I2C cables?
what happens if you run the I2Cscanner?

1 Like

The 8 bit AVRs are not well equipped for I2C slave implementation. Choose a better suited controller for such a project.

1 Like

Interesting, what is some recommendation? DUE maybe?

16MHz / 3.3V OpenLogs successfully communicating, internal pullups only:

Here is no external pullups, internal disabled. Note that SCL line gets "stuck" low for some reason

The scoreboard only tries twice, to send the Start and Address to which Salae claims its getting an Ack

When I disconnect the emulator from scoreboard, the scoreboard tries like over 100 times to communicate with the DS1307, it is very persistent

So clearly the scoreboard is seeing the emulator if it "shuts up" and only sends those 2 communications

However the SCL line staying low for a long time is clearly wrong

Another not working screenshot, 0.67K external pullup

Another not working screenshot, 1.5K external pullup

Another not working screenshot, 4.7K external pullups

I think just for heck of it I'll try Teensy 4.0 as slave using this library GitHub - Richard-Gemmell/teensy4_i2c: An I2C library for the Teensy 4. Provides slave and master mode.

Right now, on the Pro Mini and OpenLogs, I should mention that I am using this modified Wire library GitHub - thexeno/HardWire-Arduino-Library: A spinoff of the Arduino Wire library, implements a fully controllable I2C slave.

The scoreboard MCU is some sort of Arm thing, and they have networking and stuff, so its possible its just being extremely unforgiving if the DS1307 emulator is too sluggish compared to the EEPROM-like real DS1307

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.