STM32 Unique ID Register on L1 parts

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 0×14. 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 0×30343433 0×00290031
Part B 0x0e473233 0×30343433 0×00320032
Part C 0x0e473233 0×30343433 0×00380030

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 0×47323330343433 0×00290031
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″

  1. 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

  2. @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

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>