The I2C communication between the nRF52832 and the MAX30102 is not working

Hello, everyone. I am an undergraduate student majoring in Mechanical Engineering in South Korea.

I am currently working on a research project to develop a PPG sensor using the nRF52832 and the MAX30102 via I2C communication. Let me explain my setup in detail.

I am using an nRF52 DK and a custom PCB that I designed. I connect the DK to my PCB (power and GPIO pins), and I flash Zephyr-based firmware through VS Code.

Now, I will describe the PCB configuration.

As mentioned in the title, the MCU is an nRF52832 and the connected sensor is a MAX30102. The GPIO connections between the MCU and the sensor are:

  • INT: P0.19

  • SDA: P0.20

  • SCL: P0.20

I chose these pins in order to minimize the PCB size as much as possible, so I would appreciate your understanding.

The current issue is that I2C communication between the MCU and the sensor does not work at all. I already changed the pin configuration in the overlay file, and the pull-up resistors are properly connected, but I2C still fails.

I checked the RTT logs in VS Code. The MCU clearly attempts I2C transactions, but there is no response from the sensor—communication never happens.

Please help me. I have been stuck on this problem for two months.

If you need any additional information, please leave a comment and I will respond immediately.

Thank you.

Parents Reply Children
  • NRF52 DK has P0.19 and P0.20 on LEDs. I²C bus may not like those much - you would need to deactivate them in DT overlay. 

    The DK board configures I²C busses on P0.26/P0.27 and P0.30/P0.31 by default. Try using those first, then try changing those assignments in your DT overlay.

    The build/zephyr folder has a copy of the finalized Device tree and config - can help if you missed some stuff.

     Side note: No idea wether NCS 2.5.x versions use the same DT pinctrl stuff that newer versions use. Update maybe...?

    Using oscilloscope can be very helpful in these cases btw.

Related