Skip to main content
Visitor II
November 14, 2024
Solved

SPI and I2C Pin Conflict Issue on NUCLEO-L412KB

  • November 14, 2024
  • 1 reply
  • 3346 views

 

Hardware Setup

  • Board: NUCLEO-L412KB
  • Peripherals:
    • SD Card (SPI1)
    • Temperature Sensor (I2C1)

Original Pin Configuration (SPI Not Working properly)

SD Card (SPI1):
CS: PA5
MISO: PA6
MOSI: PA7
CK: PA1
Temperature Sensor (I2C1):
SDA: PB7
SCL: PB6

Issue Description

When using both SPI1 and I2C1 peripherals simultaneously with the above pin configuration, the SPI communication fails to work properly. Interestingly, when commenting out the I2C initialization, the SPI communication functions correctly.

Working Solution

I resolved the issue by remapping the pins as follows:

 

 
Modified Pins:
SPI1_MOSI: Changed to PB5
I2C1_SDA: Changed to PA10
I2C1_SCL: Changed to PA9

After this remapping, both peripherals work correctly together.

Suggestion

This pin conflict might be worth documenting in the board's errata, as the original configuration leads to unexpected behavior when using these common peripherals together.

Has anyone else encountered similar issues with this board when using SPI1 and I2C1 simultaneously?

    This topic has been closed for replies.
    Best answer by marianoo2001

    Hey, my intention was only red flagging this situation in case it was clear why this was happening. 
    But if it is not it is not worth it to keep digging since for me, with this remapping I mentioned it worked.

    THank you very much for your time. I will set this thread solved.

    1 reply

    Technical Moderator
    November 14, 2024

    Hi @marianoo2001 

    For the SPI1 configuration, why did you choose pin PA5 as CS? According to the datasheet, pins PA4 and PB0 can be used as CS, while pin PA5 is used for SCK.

    Have you tried configuring I2C with pins PB7 & PB6 alone without using SPI1? If so, did it work or not? This would help determine if the issue is related to I2C.

    Thank you.

    ELABI.1

    Visitor II
    November 14, 2024

    Hi @ELABI.1,

    Let me clarify regarding your questions:

    1. Regarding PA5 as CS:
      • I'm using PA5 as a General Purpose Output (GPIO), not as the SPI1_NSS pin
      • The CS control is handled by the SD Card Library through this GPIO
      • PA1 is used for SPI1_SCK (clock), not PA5
    2. Regarding I2C1 testing:
      • Yes, I tested I2C1 (PB7 & PB6) alone first - it worked perfectly
      • The issue only appeared when combining both peripherals

    To better explain the sequence of events:

    1. Initial setup with SPI1 worked fine:
      SD Card (SPI1):- CS (GPIO): PA5- MISO: PA6- MOSI: PA7- SCK: PA1
    2. The problem emerged when:
    • Started fresh project
    • Configured SPI1 + SD Card libraries -> Working correctly
    • Added I2C1 (PB7&PB6) in IOC -> SD card stopped mounting
    • Disabled I2C1 in IOC -> SD card worked again
    1. This suggests a peripheral conflict rather than a pin configuration issue. After finding similar issues documented in other STM32 erratas, I resolved it by remapping:

      • SPI1_MOSI to PB5
      • I2C1_SDA to PA10
      • I2C1_SCL to PA9

      Now both peripherals work correctly together. Hope this helps clarify the situation.

    Thanks in advance.

     

    Super User
    November 15, 2024

    @marianoo2001 wrote:
    1. This suggests a peripheral conflict .


    Or a problem in the software.

    Have you tried debugging why the  SD Card is not mounting?