Skip to main content
Graduate II
June 12, 2025
Question

I2C ACK Question

  • June 12, 2025
  • 2 replies
  • 324 views

Hi, I bought the Nucleo-411RE board a few days ago, and try to test i2c protocol.

In this MCU's reference manual(RM0383) page 492,493, about I2C register CR1, Bit 10 ACK, It explains me that acknowledge returned after a byte is received(matched address or data). 

Is it automatic? If my mcu received correct address, the mcu automatically returned ack by hardware?

I saw that HAL_I2C_Receive function but there is only bit setting about ack. No ack output instruction.

How return the mcu ack ? by hardware or software?

Thank you.

If you have any questions, please ask me.

    This topic has been closed for replies.

    2 replies

    Graduate II
    June 12, 2025

    The slave returns the ACK. The HAL driver will return a status. If it returns HAL_ERROR, you'll have to get the error to figure what caused the error as it could be one of several things..

    Technical Moderator
    June 12, 2025

    Hello @giwonKIM 


    @giwonKIM wrote:

    How return the mcu ack ? by hardware or software?


    The ACK is sent by the hardware when a byte is received or an address match occurs.