Skip to main content
Explorer
March 23, 2022
Solved

What I2C device address to use for STM32 slave bootloader?

  • March 23, 2022
  • 1 reply
  • 2135 views

AN2606, page 268, for STM32H7B3I I2C bootloader, says "Slave 7-bit address: 0b10101111x

(where x = 0 for write and x = 1 for read)".

Unfortunately, "10101111" is eight not seven bits.

I have two STM32H7B3I EVAL systems successfully communicating via I2C, 7-bit addressing, where each device is identified by a 7-bit value which is left shifted one bit before calling HAL_I2C_Master_***_IT functions.

AN4221, which details the I2C slave bootloader protocol, says "The I2C slave address for each product bootloader is specified in the AN2606".

What is the correct 7-bit address to use?

    This topic has been closed for replies.
    Best answer by MM..1

    Primary you need use concrete pins , cant alternate, for example I2C1 only on PB6 PB9

    1 reply

    Graduate II
    March 23, 2022

    You can probably try quicker than you'll get an official answer..

    Could also disassemble the loader.

    Likely (0xAE, 0x57 << 1)

    0b1010111x

    What version? 53 is what's up today, pg 274

    https://www.st.com/resource/en/application_note/cd00167594-stm32-microcontroller-system-memory-boot-mode-stmicroelectronics.pdf

    Explorer
    March 23, 2022

    Well, prior to your suggestion, I had tried both 0xAF and 0xAE, and regrettably both timed out, i.e., HAL_I2C_Master_Transmit_IT was "successful" but never resulted in a transmit complete callback.

    Thus I infer that the I2C slave, powered up with SW1=ON, did not choose to accept data at 0xAF or 0xAE.

    Am presently connecting a logic analyzer to the I2C signals to document what is happening.

    MM..1Answer
    Graduate II
    March 23, 2022

    Primary you need use concrete pins , cant alternate, for example I2C1 only on PB6 PB9