cancel
Showing results for 
Search instead for 
Did you mean: 

ST ROM Bootloader FDCAN CANBUS

KoS
Associate

The configuration:

STLINK-V3SET

Connected the two PCBs together via the three connectors (page 11).

Attached jumper JP7 CAN_ON on MB1440 PCB (page 18).

(STLINK-V3SET pages 17 & 23) & (NUCLEO-H723ZG page 37) & (Bootloader AN page 199) & (STM32H723 Manual page 143):

Connected the T_CAN_VCC to 5V of NUCLEO-H723ZG; tried also the 3V3, same outcome.

Connected the T_CAN_TX to the PD0 CAN1_RX pin 29 of CN9 connector of NUCLEO-H723ZG.

Connected the T_CAN_RX to the PD1 CAN1_TX pin 29 of CN9 connector of NUCLEO-H723ZG.

Reversed the PD0 and PD1, same outcome.

NUCLEO-H723ZG

Connected the boot0 pin to 3V3.

Power cycled the Nucleo and verified that the bootloader is running and communicating via USB with the latest Cube Programmer.

Power cycled the Nucleo and attempted to connect via CANBus. The Nucleo does not respond. The Cube Programmer reports a connection error message (similar to this). I have attached a logic analyser to the T_CAN_TX, CAN1_RX, T_CAN_RX and PD1 CAN1_TX and I see pulses on the bus when I click the connect button on the Cube Programmer, hence the STLINK-V3SET is sending CAN messages but the Nucleo does not respond to those.

I verified via the Cube Programmer and the Nucleo on board STLINK that the Nucleo is executing code in the bootloader memory section following these guidelines from ST.

I grounded the Rx pins of the other bootloader buses SPI I2C UART so that the bootloader does not accidentally identify any other bus and lock to it (a suggestion found in one of the ST datasheets).

I cannot establish a connection between ST Bootloader in the STM32H723 and Cube Programmer via STLINK-V3SET over CANBus.

The same setup works fine for the STM32F446.

It seems like the version of the embedded bootloader in the H7 chip is running FD CANBus as opposed to the classic CANBus the examples and tools (Cube Programmer) are using. What should we use in terms of host software to communicate with the bootloader and be able to flash firmware?

I assume the Cube Programmer is using this protocol for the F series of chips:

https://www.st.com/resource/en/application_note/an3154-can-protocol-used-in-the-stm32-bootloader-stmicroelectronics.pdf

And the H7 requires the FDCAN protocol:

https://www.st.com/resource/en/application_note/dm00660346-fdcan-protocol-used-in-the-stm32-bootloader-stmicroelectronics.pdf

Is there an equivalent to Cube Programmer PC software tool that I can use to test the embedded ST bootloader?

19 REPLIES 19

Hi Martin, I'm trying to program a STM32H750 over FD CAN.
If I could get that work with a PCAN dongle it would be great.

Are you willing to share your example program?

Hi Martin,

Thanks for you super useful comments here. We are struggling with the same issue. Trying to use the STM32H523 MCU CAN-FD bootloader but looks that is not going to be compatible with the STLINK etc.

Curious that you recommend the PEAK device rather than Kvaser, any reason why? Also would really appreciate access to your Windows programmer to make this all work.

 

Kind Regards,

Shane

Hi Shane,

Please send me, via private message, your email for the code of the example program (based on PEAK PCAN-USB FD Dongle), I'm using PEAK because there PCAN-USB FD dongle has a good price (€260) an a free "Basic-API", I don't know Kvaser, but the porting to an other API should not be to complicated.

Martin

Hello,

Please I tried several times to communicate with CANFD bootloader of STM32H745 using the PEAK-CAN FD. but it's not working.

I'm using PD0 PD1 for Tx and Rx and i used the CAN configuration of application note but it's not working. knowing that in the datasheet it's mentioned that we need to use the pin PH13 PH14 ! they don't exist in my package 144pins.

Please could you provide me PEAK-CAN configuration and software to communicate with bootloader ? could you also confirm me the used pins also for 144-Pins package and also for 208-pins.

I note that I made my tests was under boot mode (red led is ON) BOOT0 to 3V3.

Best regards,

Hi,

As You can see in AN2606 the STM32H74x_H75x can only use PH13, PH14 for FDCAN in Bootloader mode, so You are out of luck on the LQFP144 and LQFP176 package.

Martin

Hi,

Unfortunately I could not validate it in evaluation board. Please, Is it possible to provide me the PEAK-CAN configuration and related available resources for testing the bootloader ?

Thank you,

Hi,

I received my custom board with the same MCU, but it has a 208-pin package. However, when I tried to communicate with the bootloader, it didn't respond.

- Used pins are : PH13 / PH14.

- USED Baudrate : 

CAN Baudrate config.PNG

 I've tried testing different methods to communicate with the bootloader, but none have worked so far.

tx message.PNG

Could you please help me with using this bootloader?

 

I plan to use the STM32Programmer to flash a new application. I've found that to use CANFD, I need to use the STLINK-V3PWR instead of the standard STLINK-V3SET, and I must also add a CAN transceiver to the STLINK. Could you confirm these two details ?

 

Best Regards,

 

Hi,

In theory the STLINK-V3PWR is capable of using the CAN-FD protocol (this board is based on a STM32H745 MCU), but the STM32Programmer is not!

You have to ask ST to integrate the CAN-FD bootloader in a future version of the STM32Programmer.

Martin

Thank you for your reply.

Do you have any insight into why the Bootloader isn't responding? I've outlined the configuration used above.

Best regards,

The setup seems OK (Baudrates are OK) to get the Bootloader to answer You have to send one of the commands in AN5405.

This is a small log of the communication:

;   Message   Time    Type ID     Rx/Tx
;   Number    Offset  |    [hex]  |  Data Length
;   |         [ms]    |    |      |  |  Data [hex] ...
;   |         |       |    |      |  |  |
;---+-- ------+------ +- --+----- +- +- +- +- -- -- -- -- -- -- --
      1     12532.770 FB     0002 Rx 0  
      2     12533.252 FB     0002 Rx 1  79 
      3     12533.428 FB     0002 Rx 2  04 82 
      4     12533.593 FB     0002 Rx 1  79 
      5     12554.973 FB     0044 Rx 2  00 0B 
      6     12555.465 FB     0044 Rx 1  79 
      7     12555.630 FB     0044 Rx 1  79 
      8     12556.531 FB     0044 Rx 64 00 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
      9     12574.580 FB     0044 Rx 1  79 
     10     12576.344 FB     0031 Rx 5  08 00 00 00 FF 
     11     12576.860 FB     0031 Rx 1  79 
     12     12579.619 FB     0031 Rx 64 00 00 0C 20 99 6A 00 08 9D 4A 00 08 9F 4A 00 08 A1 4A 00 08 A3 4A 00 08 A5 4A 00 08 E9 6A 00 08 00 00 00 00 00 00 00 00 00 00 00 00 E9 6A 00 08 A7 4A 00 08 00 00 00 00 1D 03 00 08 C9 02 00 08 
     13     12579.646 FB     0031 Rx 64 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 
     14     12579.661 FB     0031 Rx 64 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 00 00 00 00 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 
     15     12579.676 FB     0031 Rx 64 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 21 4B 00 08 2D 4B 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 E9 6A 00 08 55 60 00 08 E9 6A 00 08 E9 6A 00 08 
     16     12584.776 FB     0031 Rx 1  79 
     17     12589.374 FB     0011 Rx 5  08 00 00 00 FF 
     18     12589.900 FB     0011 Rx 1  79 

 For example line 1 is the request to get the Chip ID, line 2 to 4 are the answers from the Bootloader.