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 ...
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 ...
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'...
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 ...
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 ...
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:
...
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 ...
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.
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 ...
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 ...
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 ...
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 ...
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:
...
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 ...
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 ...
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 ...
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...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
i2c × 1961microcontroller × 250
arduino × 227
stm32 × 203
pic × 138
spi × 126
sensor × 98
raspberry-pi × 89
c × 83
pullup × 81
communication × 79
eeprom × 61
avr × 59
atmega × 48
embedded × 45
level-shifting × 45
uart × 44
smbus × 44
serial × 41
adc × 35
lcd × 35
rtc × 34
bus × 33
multiplexer × 31
digital-communications × 31