Skip to main content
Associate III
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.

2 replies

Karl Yamashita
Principal
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..

If a reply has proven helpful, click on Accept as Solution so that it'll show at top of the post.CAN Jammer an open source CAN bus hacking toolCANableV3 Open Source
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.

"To give better visibility on the answered topics, please click on ""Accept as Solution"" on the reply which solved your issue or answered your question.Saket_Om"