cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with I2C bootloader

Dmitriy Dmitriy
Associate III

Hello. I try to use I2C bootloader of STM32WB and it can't connect. 

I use board NUCLEO-WB55.USBDongle, STLINK-V3SET and STM32CubeProgrammer. 

I2C: 100KHz Speed mode: standard, addres 0x50. NUCLEO-WB55 I2C pins PB6 PB7, SB6=close, SB2 = open, SW2: BOOT0 = 1.

Every time I get: Error: ST-LINK error (BRG_I2C_ERR) . See Log file in attachment.

I cheked I2C line and finde that there is only one addres byte without "ACK signal".

0690X00000DByPUQA1.png

The board doesn't recognise own slave address. Same result is with board NUCLEO-WB55.Nucleo.

Do I use wrong I2C slave addres ?

I tried USB and UART bootloader on NUCLEO-WB55 and it was successful.

I olso tried I2C bootloader on the board STM32L476 Discovery MB1184, it was successful too.

Pleas help me with I2C bootloader STM32WB.  

3 REPLIES 3
FaikN
Associate II

hey Dimitriy, have you found out what was the problem and the solution? I am trying the same as I am jumping into bootloader from user code. but i do not get any reply from i2c slave (the stm chip to be bootloaded)

javqui
Associate II

Same issue here. If I remove the pullup voltage the error change, to BRG_TARGET_CMD_TIMEOUT, with voltage:0V, no output SCL clock signal.

javqui
Associate II

Found the answer. Just use the right address number for the right STM32 family.

The document AN2606 have all I2C address per family (my case was 0x56 for STM32G03xxx.)

For the STM32WB55 (as it's the original question), the address should be 0x4F (not 0x50).

The signals are there, but maybe the error is confusing (it should be BRG_TARGET_CMD_TIMEOUT instead BRG_I2C_ERR).

I'm using a 4.7k pull-ups with 3.3v. The voltage in the STM32CubeProgrammer shows 0.00V, but it connects without any issue.

Search your respective address in the AN2606, don't forget the pullups and happy flashing!.

Hope it will be useful for someone.