Learn MoreFAQsTutorials

2 posts / 0 new
Last post
aectaan
Offline
Last seen:1 week 1 day ago
Joined:2019-10-02 07:06
Unique Chip ID

Hi Dialog,

Is there any unique chip serial number, burned at the factory? I mean some number, like in the attachment. For my application is not possible to use BD address.

Regards,

Egor

Device:
PM_Dialog
Offline
Last seen:7 hours 6 min ago
Staff
Joined:2018-02-08 11:03
Hi aectaan,

Hi aectaan,

Thanks for your question online. You can get a unique identifier from the Configuration Script (CS) which is stored into the OTP Header. Please use the SmartSnippets Toolbox and read the contents of the OTP Header. If you hover into the “Value” column of the configuration script, you will be able to read the contents of CS. In the 0x00000004 address of the CS, the Product Chip Info is located, so you will need to read the Value 1, Value 2, Value 3. The Product Chip Info is 3 words. This will give you a unique identifier burned at the factory.

Position/Package:

Byte10: 0x00 - (Reserved) 0x01 – VFBGA86 0x02 – VFBGA100

Byte9: Wafer number

Byte 8: Y coord

Byte 7: X coord

Tester/Timestamp:

Byte 6: Tester ID (MSByte)

Byte 5: Tester ID (LSByte)

Byte 4: Tester Site

Byte 3: TimeStamp Byte 3

Byte 2: TimeStamp Byte 2

Byte 1: TimeStamp Byte 1

Byte 0: TimeStamp Byte 0

下面是一个参考代码片段阅读价值e 1, Value 2, Value 3 which give you an unique chip identifier. In the attached code you will find a short example of extracting the chip package information and the chip family information. The unique chip identifier is stored into my_unique_id[].

include "sys_tcs.h" /* Reading Chip unique ID CS information code snippet */ void read_ID(void) { uint32_t *tcs_ptr; uint8_t read_len; volatile uint8_t chip_package __unused; volatile uint8_t chip_family __unused; uint32_t my_unique_id[3]; sys_tcs_get_custom_values(SYS_TCS_GROUP_PROD_INFO, &tcs_ptr, &read_len); if (read_len != 3) { //FAILED to read the Product info CS section } else { //Example of extracting the chip package information only chip_package = ((uint8_t *) tcs_ptr)[10]; for (int i = 0; i < read_len; i++) { //Example of extracting the Chip unique ID my_unique_id[i] = tcs_ptr[i]; //printf("Unique ID[%d]: %lu\n\r", i, my_unique_id[i]); } } sys_tcs_get_custom_values(SYS_TCS_GROUP_CHIP_ID, &tcs_ptr, &read_len); if (read_len != 1) { //FAILED to read the CHIP info CS section } else { //Example of extracting the chip family information only chip_family = ((uint8_t *) tcs_ptr)[0]; } }

Thanks, PM_Dialog