Skip to main content
coren.1
Associate
December 14, 2021
Question

why my firmware becomes unstable with b-g431-ESC1 MCU revision X

  • December 14, 2021
  • 11 replies
  • 2372 views

Hi,

as explained into the title, i am developing a firmware on this board which is stable. i have bought a new set of board and after flashed, the firmware becames unstable :unamused_face:

Searching a reason why i have seen that the MCU revision is not the same: Y with my first board set on which the firmware is stable, X with the second set giving unstability. Please what is the problem ? what i need to adapt ?

This topic has been closed for replies.

11 replies

cedric H
ST Technical Moderator
December 14, 2021

Hello @coren.1​ ,

The revision X is a bug fix version of the revision Y. It fixes an ADC issue when regular conversion are interrupted by an injected conversion.

We are not aware of any regression introduced by the revision X.

What kind of instability do you see ?

Best Regards

Cedric

coren.1
coren.1Author
Associate
December 14, 2021

My firmware is sensorless.

I set a speedRef to reach at the end of start-up

with revision Y, i observe 0,2A current consumption at speedRef and it is stable, with revision X current consumption increases from 0,2 A without limit it seems

cedric H
ST Technical Moderator
December 14, 2021

Could you try to decrease the KP speed and see how does it behave. (start by a division by 2 for instance)

Cedric

coren.1
coren.1Author
Associate
December 14, 2021

I take the time to re-wire an X card, I do this test and get back to you

coren.1
coren.1Author
Associate
December 14, 2021

Since I changed my startup procedure, I didn't have to re-test an "X".

There, I noticed from the alignment a higher bcp current then at the end of the starting procedure a difference of about 0.6 A (25.2V)), then the current increases

With the Y version, the alignment does not create such a high current and the current rise is very gradual.

coren.1
coren.1Author
Associate
December 14, 2021

it is clear that from the call to HAL_TIM_PWM_start && HAL_TIMex_PWM_start, equivalent to the start of the alignment procedure, the current in case X jumps by 0.5 / 0.6 A

then increases quicker and goes higher than with Y. besides, I noticed smoke by leaving too long time this card. I am impressed

coren.1
coren.1Author
Associate
December 14, 2021

that was the value of the deadtime. I changed it from 1F to 33 and that made it possible to find a stable firmware. But 2 things, I do not understand why and especially now the temperature, so far very low, reached values ​​too high. I have to find the right settings again

coren.1
coren.1Author
Associate
December 15, 2021

Please, could you, if possible, what are the modification(s) between the revision Y and revision X that could explain the different behaviour of a firmware, especially why need to change the deadtime value moreover this is not a true solution because it increases the temperature ?

cedric H
ST Technical Moderator
December 15, 2021

Hello @coren.1​ ,

I checked with people in charge of the production, and there are no other changes done on the board when we switched from revision Y to revision X.

On our side, we did several tests with both version X and Y.

Here is a screen shot of the current measured with version X :

The plots represent 5 sequences of start stop. Each sequence is composed of two parts, one open loop start that consumes more current and a small current as soon as the observer takes the control.

0693W00000HokPBQAZ.pngHere is the same measurement done with version Y:

Both versions produce very similar results.

0693W00000HokSnQAJ.pngCould you tell us a bit more about your software environment. Do you use the motorcontrol SDK, if yes which version ?

You mentioned a call to HAL_TIM_PWM_start && HAL_TIMex_PWM_start, but those functions are not part of the SDK delivery.

Best regards

Cedric

coren.1
coren.1Author
Associate
December 15, 2021

Hi Cedric,

Indeed i observe that the plots are very similar. I do not use SDK, i use cube mx to generate configuration i need and the other part is my own code using some function from HAL library.