Last week I mentioned I was seeing duplicate “Unique” ID registers on some STM32L151 parts [1], and included some memory dumps of the three unique ID registers as proof.
However, I had foolishly assumed that on the L1 the Unique ID register was three contiguous 32 bit registers, as it is on the F0, F1, F2, F3 and F4. (The base address changes, but that’s normal and expected)
On the L1, the registers are actually at offset 0, offset 4, and offset 0x14. Thanks for nothing ST! :(
(Oh, and L1 Medium+ and High Density devices use a different base address too, good job)
Here’s some more complete memory dumps for the same three parts I was looking at last week.
UID31:0 | UID63:32 | UID95:64 | |
---|---|---|---|
Part A | 0x0e473233 | 0x30343433 | 0x00290031 |
Part B | 0x0e473233 | 0x30343433 | 0x00320032 |
Part C | 0x0e473233 | 0x30343433 | 0x00380030 |
Reading other reference manuals, and seeing that the UID registers often have 8 bits of unsigned “Wafer number”, 7 bytes of ASCII Lot number, and 4 bytes of X/Y wafer coordinates in BCD, I would interpret my part “A” above as
Wafer Number | Lot Number | X/Y coords | |
---|---|---|---|
Hex | 0x0e | 0x47323330343433 | 0x00290031 |
Natural | 0x0e | G230443 | X=0029, Y=0031 |
For reference, here are some full dumps of that section of memory. “0x7b747800” is what I had been looking at as UID bits 95:64, note that there are other bits in this section with fixed values, no idea what they mean :)
Part A
(gdb) x /20x 0x1FF80050 0x1ff80050: 0x0e473233 0x30343433 0x7b747800 0x50505091 0x1ff80060: 0x00000011 0x00290031 0x11000000 0x11000011 0x1ff80070: 0x00000000 0x00000000 0x029f067e 0x035a0000 0x1ff80080: 0x035a0000 0x035a0000 0x035a0000 0x035a0000 0x1ff80090: 0x035a0000 0x035a0000 0x035a0000 0x035a0000 (gdb)
Part B
(gdb) x /20x 0x1FF80050 0x1ff80050: 0x0e473233 0x30343433 0x7b747800 0x50505091 0x1ff80060: 0x00000011 0x00320032 0x11000000 0x11000011 0x1ff80070: 0x00000000 0x00000000 0x02a50685 0x035e0000 0x1ff80080: 0x035e0000 0x035e0000 0x035e0000 0x035e0000 0x1ff80090: 0x035e0000 0x035e0000 0x035e0000 0x035e0000 (gdb)
Part C
(gdb) x /20x 0x1FF80050 0x1ff80050: 0x0e473233 0x30343433 0x7b747800 0x50505091 0x1ff80060: 0x00000011 0x00380030 0x11000000 0x11000011 0x1ff80070: 0x00000000 0x00000000 0x02a50689 0x035e0000 0x1ff80080: 0x035e0000 0x035e0000 0x035e0000 0x035e0000 0x1ff80090: 0x035e0000 0x035e0000 0x035e0000 0x035e0000 (gdb)
[1] Again, these are STM32L151C6T6 parts, revision V, package markings “GH254 VG” and “CHN309”