I ran into a problem in a project, the program works normally without any problems on the lab desk, but when I take the hardware to test it in a more realistic environment, it crashes.( I am debugging, I know from there).
The working environment has a lot of vibration and a higher temperature.
Can it be due to high vibration and does mechanical stress have an effect on the performance of the microcontroller? Do you have a document or experience about this?
What is your vibration level, what the max temperature?
I installed it on my car, I don't know how to measure the amount of vibration, but naturally, in different conditions, the amount may increase, but I just turn on the engine and don't move, and I think the temperature is around 60 degrees Celsius.
These are negligible parameters that any STM32 can withstand without additional precautions. The problem is almost certainly triggered by the environmental circuitry, e.g. loose contacts, ESD events, etc.
Hi, with MCU PIC16F it is very easy to have electromagnetic interference, I don't know if it can happen with the STM32, but the ATmega generally have better immunity than these PIC. Once I was making a 250W ultrasonic generator and the MCU that managed to work was an ATmega32, the PIC restarted straight away. The LM555 is also very bad, it looked like a Christmas tree when the generator was turned on, its transformers were not shielded, it generated a lot of noise.
Even if SWD is used for programming and debug, make sure all JTAG related pins are pulled up or down as appropriate with 10K or so resisters.
An automobile is a high EMC environment, race cars especially so with their high energy ignition. ST's data sheet guidance about internal pulls being adequate isn't adequate.
I think your problem is more mechanical in this case. Loose connections and even dry solder joints. IMHO.
And the automotive environment is also hell in terms of voltage spikes etc. Filter your power supplies etc.
I am pretty sure you would have had this same problem with any other controller.
STM32F3 series are industrial grade MCUs : from -40C to +105C and Junction up to 125C. Regarding vibrations, the stress is mechanical either at PCB side, joint ball , or external oscillators especially at Low speed - it is highly recommended to use LQFP packages which have great immunity , BGAs are worst . Also to use internal oscillators such as HSI . Now, usage of STM32 is not qualified for automotive and additional EMI, ESD or high voltage May disturb the I/Os and create fast transients to Open the ESD protection inside the STM32.
If you can describe more your observations and what are things not working after debug to better help to improve the design such as doing shielding etc.
By the way, please check the clock configuration and flash wait state - Many designs I have seen that customers may overclock the CPU not in purpose , or running out of datasheet specification and work fine at Ambient , but problems starts when Temperature change .
Hope it helps you , Ciao
As for the spikes, I tried to deal with them as much as possible by adding bypass capacitors, ferrite beads, and tvs.
What happens is that when in a more realistic environment with heavier processing, it gets confused and gives irrelevant values and the calculations get messed up, and the working frequency is also 16 MHz.
If you are trying to debug with SWD in a high EMF environment you are playing with fire. Our company uses high voltage igniters near our embedded controllers and we have never been able to debug once those igniters fire(both older PIC's or the new ST's.) The debug wires are giant antenna's leading noise into the micro. If you have spare pins you can try dumping serial debug messages out to a terminal.