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”
Here are the unique id of my STM32L1:
marking:
STM32L162
RDT6
GH228 VG
CHN GH 243
0x1ff80050: 2d92d26d e2b91d46 4ffcb003 ffff0000 00000000 00000000 00000000 00000000
0x1ff80050: c22b3dd4 d3682c97 4ffcb003 ffff0000 00000000 00000000 00000000 00000000
0x1ff80050: 394ec6b1 db2924d6 54fcab03 ffff0000 00000000 00000000 00000000 00000000
0x1ff80050: 2d30d2cf e10a1ef5 4afcb503 ffff0000 00000000 00000000 00000000 00000000
0x1ff80050: 45efba10 ded82127 4efcb103 ffff0000 00000000 00000000 00000000 00000000
Looks like the UID take the first 3 words.
For the 4 first words, high halfword are the complement of low halfword
marking:
STM32L152
RBT6
GH21Y VG
CHN GH 238
0x1ff80050: 19473231 36383833 8e8a8b00 50505091 00000011 002b0016 11000000 11000011
0x1ff80050: 19473231 36383833 f3707100 50505091 00000011 00260033 11000000 11000011
@Nicolas,
meanwhile, did you get any confirmation that UID for your 162L chip is the one mentionned ?
Because if I’ve well read the STM32Lxxx ref manual- page 40 & 41,(http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00240193.pdf) your STM32L162RDxxx is defined as a Cat4 device and its UID base address should be read here :0x1ff5000D (and not 0x1ff80050)
can you confirm this please,
cheers
Rico
@Rico,
Thanks for noting my error, the UID base address for STM32L162RD is 0x1ff800d0. Here is the memory dump of a single STM32L162RD that correspond to the Wafer Number, Lot Number and X/Y coords.
0x1ff80050: 2d30d2cf e10a1ef5 4afcb503 ffff0000 00000000 00000000 00000000 00000000
0x1ff800d0: 04473134 30363239 78777400 060c1811 00000011 0022002c 11001100 11000011
Hey! Great info!
But, I just checked two stm3l151 devices with the following:
10473334 35333935 00240036
04473334 37333132 0030002C
The second one makes me think the x/y data is not in BCD. Based on that I find:
Die Batch x y
16 G345395 36 54
4 G347312 48 44