久芯网

批量中有少数几片STM8L101F3的uid多次读出不一致

avatar qm2022 提问时间: 2023-07-17 07:11:55 / 未解决
不知道大家有没有遇到这样的情况:批量生产1K,其中有五六片 STM8L101F3 的 uid 在同一次上电的多次读出,它的值的前3个字节是变化的,变化有特定值,不是随机的。比如有这么一些数值:

14 80 00 2D 06 47 38 33 33 38 37 38
00 80 00 2D 06 47 38 33 33 38 37 38
14 80 40 2D 06 47 38 33 33 38 37 38

不同时候读出来的uid 不一致,对于程序来说基本上无法基于uid做一些算法。

下面是我读取 uid 的函数代码:
#define ID_BaseAddr                0x4925
static unsigned char STM8L_ID[12] = {0};

unsigned char * Get_STM8L_UniqueID(void)
{
        unsigned char i = 0;
        for (i=0; i<12; i++)
        {
                STM8L_ID[i] = *(unsigned char *)(ID_BaseAddr+i);
        }

        return STM8L_ID;
}



如需获得 STM8L101F3 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

4个回答
  • avatar xmshao
    回答时间: 2023-07-17 07:30:35

    反馈属实的话,这个问题有点意思,锁定在特定芯片。 你也可以通过工具直接看看,比方STVP看看,是不是 也会出现类似现象。 这些数据按理不会因为读访问而发生变化的。

  • avatar qm2022
    回答时间: 2023-07-17 07:57:19
    xmshao 发表于 2022-9-23 11:11
    反馈属实的话,这个问题有点意思,锁定在特定芯片。

    谢谢回复。 我也是这么认为,不应该因为读访问而改变的。稍后我用 STVP 直接读一下,看看结果如何。

  • avatar qm2022
    回答时间: 2023-07-17 08:17:05
    qm2022 发表于 2022-9-23 16:15
    谢谢回复。 我也是这么认为,不应该因为读访问而改变的。稍后我用 STVP 直接读一下,看看结果如何。

    刚才测试了,用stvp不能读出非 Flash 地址空间的信息,改用IAR调试的方式来读写,如果读出来数据变化了,则跳到一个异常输出分支,并且在此设置断点,触发 IAR 来读取 uid 地址的数据,uid存放在 0x4925,下面的gif动图,能看到我执行了2次单步step-over操作的内存变化:

  • avatar qm2022
    回答时间: 2023-07-17 08:49:19
    qm2022 发表于 2022-9-23 20:11
    刚才测试了,用stvp不能读出非 Flash 地址空间的信息,改用IAR调试的方式来读写,如果读出来数据变化了, ...

    这论坛会有ST官方的工程师/技术支持关注吗?

会员中心 微信客服
客服
回到顶部