Hot answers tagged

6 votes
Accepted

Is pull up resistor mandatory for I2C?

The I2C spec requires a pullup, and the bus seems to be malfunctioning in your scope trace. It's driven low, but is having trouble rising to a high level. If you don't want an external pullup, you'll ...
nanofarad's user avatar
  • 18.8k
4 votes
Accepted

SDA has to wait around one second to go high when reading hex is 0xF8

When you have transferred the last byte you want to read, you ACK the byte. That is incorrect, you must NAK the last byte. If you ACK the byte, the slave IC thinks you want to receive a next byte too ...
Justme's user avatar
  • 137k
4 votes

Is pull up resistor mandatory for I2C?

You are doing I2C wrong. Yes pull-up is mandatory. And the IO must not be push-pull output but open-drain output. The pins are not supposed to be push-pull outputs what you seem to be doing, and that'...
Justme's user avatar
  • 137k
4 votes
Accepted

Is I2C ack bit supposed to be one when it's reading data? Why is my ack bit different from TI doc (Understanding the I2C Bus)

Yes, the ACK bit is fine. The FPGA is still holding SDA low while slave pulls SDA low on falling SCK. The FPGA then releases SDA while slave is pulling low, which is why there is a small step higher ...
Justme's user avatar
  • 137k
4 votes

Is I2C ack bit supposed to be one when it's reading data? Why is my ack bit different from TI doc (Understanding the I2C Bus)

Looks fine to me. SDA is low during the 9th CLK pulse, that means ACK. It is then released by the slave at the falling edge of 9th CLK and goes high, that is normal. Why does it look lie to you that ...
DELTA12's user avatar
  • 665
3 votes

Detecting SCL/SDA ports

It's not always a good idea to carry I²C signals with interconnections and wires/connections but if you can, use a 7-pin connector instead: ...
Rohat Kılıç's user avatar
2 votes
Accepted

Understanding ADC digital isolation to avoid ground loops

You have to use a separate power supply for each side of the ADuM1250 because the ADuM1250 does not pass the power connections through. It isolates the two sides entirely - that's its job. If it ...
JRE's user avatar
  • 69.1k
2 votes

Low level voltage is changing on I2C bus when starting communication

The black ground wire is loose and makes no contact. That will explain the waveforms and the pin looks loose on the socket.
Justme's user avatar
  • 137k
2 votes
Accepted

Low level voltage is changing on I2C bus when starting communication

Looks like either you've got some precharged capacitive load on your SCL, or your SCL carries the involuntary job of exchanging current until ground potentials between two parts of your system have ...
Marcus Müller's user avatar
2 votes

FPGA - SCL of I2C is always high when it's in reading mode

The buses are still push-pull on FPGA. It can be seen from the spikes on the rising edges. The slave chip tries to send an ACK and pull bus low, but the FPGA prevents it by pushing bus high. That is ...
Justme's user avatar
  • 137k
2 votes
Accepted

On the Raspberry Pi Pico 2040 Pinout Diagram, why are i2c bus pairs overrepresented across pins?

This is alternative connection options, you can turn on one of that options by setting appropriate "Function select" field in GPIOx_CTRL registers for corresponding pins. From Arduino ...
Theoristos's user avatar
1 vote

Microcontroller I2C and SPI protocol

The typical characteristics for the Atmega328p for detection of the high level on a pin is given in the datasheet in chapter 32.7 with a voltage above 2.6 V. For a low level it's below 2.1 V. Both ...
Arsenal's user avatar
  • 17.5k
1 vote

How do I set a 4-channel PWM with I2C in Verilog?

When I compile your Verilog code with the Synopsys VCS simulator, I get a warning message: ...
toolic's user avatar
  • 6,965
1 vote

Building light-following robot with one Arduino and one I2C; Motor.begin command just stops the code from working

I assume you are using the same powersource for the motor and the arduino. It sounds like the motor is causing a brownout when it turns on. You should verify that the power supply for the motor is ...
DELTA12's user avatar
  • 665
1 vote

I2C BME688 Read Request Sent, but no data received

Your understanding of how I2C is incorrect. If the master wants to read data out from a slave, the master must transfer the data out from slave with a read operation. A slave is not allowed or can't ...
Justme's user avatar
  • 137k
1 vote

I2C with MPU6050 and STM32F407stuck at send address status check

It happened twice and now it doesn't work anymore, and I am unable to figure out why. The other answer notes there are no external pull-up resistors shown on the bus lines nor on the schematics for ...
Chester Gillon's user avatar
1 vote

I2C with MPU6050 and STM32F407stuck at send address status check

I²C needs pullup resistors on the bus lines, I see none in the schematic. Otherwise you may need an oscilloscope or logic analyser...
Turbo J's user avatar
  • 10.1k

Only top scored, non community-wiki answers of a minimum length are eligible