Skip to main content
justin11
Senior
July 19, 2024
Solved

MCU Device ID same for STM32 H747XG, H747XI, H757XI MCUs

  • July 19, 2024
  • 3 replies
  • 1628 views

Hi,

I'm currently looking for a way to identify the MCU attahced to a common pcb used. The MCUs are from the H7 series and im geeting unexpected results, as in they all return the same id 0x450

I have tried looking at the DBGMCU->IDCODE, HAL_GetDEVID() and HAL_GetREVID() none provide a unique identifier for the MCU type.

I can confirm that if i look at the FLASHSIZE_BASE it is reporting the correct changes in flash size relevant to the MCU.

I've also looked at this in cubeProgrammer and get the same common device id across all models.

Is this to be expected, ie all reporting the same Device ID ? if so is there any way to identify the model of the MCU?

Best answer by TDK

This can be done if there are hardware differences on each board. For example, if PA0 is tied to ground on one board, set PA0 as an input with pullup--if it's low, then you know it's grounded on that board. You can use hardware differences like that to determine which board it's on.

There's no software-only solution to differentiate between the various models you gave (unless flash size is different).

 

> Is this to be expected, ie all reporting the same Device ID ?

Per the reference manual, this is the expected behavior.

TDK_0-1721404767210.png

 

3 replies

AScha.3
Super User
July 19, 2024

Hi,

if its same chip -- same ID . Just the pins/case and tested memory size might differ, or some peripheral disabled.

see rm:

AScha3_0-1721402827918.png

AScha3_1-1721403021350.png

+

AScha3_2-1721403049315.png

+ maybe ...check a peripheral, that should be here, but not on other chip (enabled).

 

"If you feel a post has answered your question, please click ""Accept as Solution""."
TDK
TDKBest answer
July 19, 2024

This can be done if there are hardware differences on each board. For example, if PA0 is tied to ground on one board, set PA0 as an input with pullup--if it's low, then you know it's grounded on that board. You can use hardware differences like that to determine which board it's on.

There's no software-only solution to differentiate between the various models you gave (unless flash size is different).

 

> Is this to be expected, ie all reporting the same Device ID ?

Per the reference manual, this is the expected behavior.

TDK_0-1721404767210.png

 

"If you feel a post has answered your question, please click ""Accept as Solution""."
justin11
justin11Author
Senior
July 19, 2024

thats a real shame you can't do it from a built in register, thought thats what the point of a register like that would be for.

Tesla DeLorean
Guru
July 19, 2024

It's a common die used on multiple lead frames, the final tester programs the FLASH amount based on the test type / program  (test time budget related price stratification), and they disable things like DSIHOST and CRYP to reduce licensing costs and import/export issues. The common die allowing for the millions of dollars for the maskset to be amortized across multiple parts.

There might be some ways to unpack the UNIQUE ID for package type, you'd need to converse with an FAE

Your distributor could program OTP/OB as a value-add

"2 Kbytes (64 flash words) of user option bytes for user configuration"

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
Tesla DeLorean
Guru
July 19, 2024

You can detect the HASH/CRYP units via whether the clock enable is stuck-at-zero, or via bits in the CR or SR registers, similarly report zeros in MCU where functionality has been disabled.

@Pavel A. posted a test example

If you don't have a means to externally strap different PCB/BoM, perhaps use OTP during manufacturing or testing on the line.

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..