如果想知道片子的unique ID,可以通过下面的途径,下面以PSOC3位例进行说明:
首先追踪这个函数,你可以知道下面的信息:unique ID为一个64bit的数据。
uniqueId[0u] = (uint32) CY_GET_XTND_REG8((void CYFAR *) (CYREG_FLSHID_CUST_TABLES_LOT_LSB ));
uniqueId[0u] |= ((uint32) CY_GET_XTND_REG8((void CYFAR *) (CYREG_FLSHID_CUST_TABLES_LOT_MSB )) << 8u);
uniqueId[0u] |= ((uint32) CY_GET_XTND_REG8((void CYFAR *) (CYREG_MLOGIC_REV_ID )) << 16u);
uniqueId[0u] |= ((uint32) CY_GET_XTND_REG8((void CYFAR *) (CYREG_FLSHID_CUST_TABLES_WAFER_NUM )) << 24u);
uniqueId[1u] = (uint32) CY_GET_XTND_REG8((void CYFAR *) (CYREG_FLSHID_CUST_TABLES_X_LOC ));
uniqueId[1u] |= ((uint32) CY_GET_XTND_REG8((void CYFAR *) (CYREG_FLSHID_CUST_TABLES_Y_LOC )) << 8u);
uniqueId[1u] |= ((uint32) CY_GET_XTND_REG8((void CYFAR *) (CYREG_FLSHID_CUST_TABLES_WRK_WK )) << 16u);
uniqueId[1u] |= ((uint32) CY_GET_XTND_REG8((void CYFAR *) (CYREG_FLSHID_CUST_TABLES_FAB_YR )) << 24u);
然后,就是分析这8个字节的含义:
第一个字节和第二个字节,是lot number/wafer start
第三个字节是MLOGIC_REV_ID
第四个字节是: 晶片的number。
第五和第六个字节,表示这个晶体所在的位置。
第七个字节表示时间:Work week: 1 to 53
第八个字节表示:第0位到第3位表示fab号,第4位到第7位,表示year。
举一个例子:
#1: 0x0E050327, 0x5418140A
你就可以拆分成5 4 18 140A 0E 05 0327 (你可以拆开来看)这个是05年第24周的片子,其它的信息都是关于晶元的位置和晶片的批号。
下次遇到这个unique的问题,你可以自己分析:
第一步:追踪函数,查到寄存器。
第二步:到register trm上面找这些寄存器的意思。
第一个:每个字节每个字节的分析。
希望我这次对unique ID的分析,可以解决你的问题。如果你还是有疑问,建议你查看register trm |