2024-04-23 10:00 AM
Hello
I got two boards dead within one day. I used the first board for a while and it worked until I started to communicate via USART/RS232. After I faced with such a problem, I replaced the board with a second one and immediately got same result.
Description:
The eval board was powered via STLINK-V3E USB (CN23). JP10 in corresponding position, no other jumpers are reconfigured. No connection to RS232 at the beginning. LCD display showed a nice picture, IDE successfully uploaded and debugged both M4 and M7 etc.
Power off and on at least with the first board did not change the situation as well.
Then I connected it to a PC com port (USART1 via CN2). To do that I used a USB to COM convertor from StarTech.
At the beginning of debugging I got in a PC terminal:
"STM32H747I-EVAL: STFirmware (Fractal) V1.0.0 (Build Feb 8 2019 at 19:22:02)
CPU running at 237MHz, Peripherals at 118MHz/118MHz"
and then my own prints and readings.
Then the story with two boards a bit differs. For example, with the second board I very quickly (in couple of minutes) faced with USART malfunction. It became unable to transmit. Or transmitted just couple of chars I wanted and got stuck.
Anyway, once I turned the board off and then turned on again - no LCD picture and no ability to upload and debug the executables. With the second board and with the first. Both today.
"Target no device found
Error in initializing ST-LINK device.
Reason: No device found on target."
"Error in final launch sequence:
Failed to start GDB server
Failed to start GDB server
Error in initializing ST-LINK device.
Reason: (4) No device found on target."
That happened with two boards in turn.
Besides, I tried to use STM32CubeProgrammer utility. It says that on-board ST-Link programmer is not able to detect the target MCU.
Your comments?
2024-04-25 06:34 AM
Note that I had no such problem in main() earlier. Before I had to erase flash.
2024-04-30 08:57 AM
Let me add some details to what I found.
Once I erase the flash and switch SW1 back to default state (state 0), the code of M4 is loaded to flash somewhere in high addresses. The first non-FF byte address is 0x080FE407.
M4 main () actually has nothing, but HAL_Init().
If I use "step into/over" menu, I succeed to go into HAL_Init() and see, that SYSCLK source is read wrongly. The programs sees HSI, whereas it should be configured as HSE.
If I don't use she step debugging, the behavior can differ, but the main point is that at some time the binary image is copied from 0x080FE407 to 0x08000000. And after that I get back to the initial state when there is no current on JP9 after power reset. I.e. I should erase the flash again.
But even without power reset the debugger eventually loses ability to work with the board (especially if I want to reload), enforcing me to erase the flash and so on.
What's wrong?
2024-04-30 09:13 AM
Did you set the correct power mode , according to the settings on your board ?
(smps mode, i suppose)
see circuit:
2024-05-06 08:36 AM
Could be that I recovered somehow.
Key steps:
1.Yes, I need to use the external power supply (5 VDC)
2. In project properties, run/debug settings .... GDB connection settings, frequency of ST-LINK debug probe to be set to, say, 1000 kHz instead of "auto".
3. I found a project from examples folder to be uploaded right after flash erasure. Perhaps I might have done an empty project myself. Perhaps. But a project that is generated by IDE as a default one is definitely not good to be used for board (re)initialization. So, there need a project to be used for first uploading.
4. In SW1 = 0 mode both cores (M4 and M7) have to be uploaded at least once, so that flash comprises both images. Only after that the main func of M7 starts properly, as it waits for some actions of M4 at the beginning.
Not sure, I can say: "all right", but at least I moved on.
2024-05-17 05:42 AM
A small question.
I see in my project (in ioc-file): RCC.SupplySource=PWR_LDO_SUPPLY, whereas it should be PWR_DIRECT_SMPS_SUPPLY. If I create a new project for the same board, the value PWR_DIRECT_SMPS_SUPPLY is by default. But in the working project I have no chance to select it, as it's absent in the menu. How to fix?
2024-05-17 06:55 AM
>PWR_DIRECT_SMPS_SUPPLY is by default. But in the working project I have no chance to select it, as it's absent in the menu.
The DIRECT_SMPS should be there, maybe try : set chip revision V , set voltage scale 1 . (Just try...never seen this problem.)
+
Is this "working project" so big ? If not, start new project (from correct board definition) and then just copy your user code parts from "working project" to the new main.c .