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
  • There was a typo in my previous message. The correct pin assignments are:

    • INT: P0.19

    • SDA: P0.20

    • SCL: P0.21

    Please note this correction.

  • 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.

Reply
  • 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.

Children
No Data
Related