你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L151C8T6 读出的UID重复!!!

[复制链接]
owen_chen-30573 提问时间:2018-11-12 11:35 /
两片STM32L151C8T6,读出来的96位Unique ID完全相同,说好的全球唯一呢?怎么回事??
ID1.jpg
id2.jpg
收藏 评论16 发布时间:2018-11-12 11:35

举报

16个回答
奏奏奏 回答时间:2018-11-12 15:13:35
本帖最后由 奏奏奏 于 2018-11-12 15:18 编辑

要是用HAL库的调用一个函数就搞定了
HAL_GetUID(uid);
然后去处理 UID[0] 、 UID[1] 、 UID[2] 就可以了

这个函数具体是
void HAL_GetUID(uint32_t *UID)
{
  UID[0] = (uint32_t)(READ_REG(*((uint32_t *)UID_BASE)));
  UID[1] = (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE + 4U))));
  UID[2] = (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE + 8U))));
}
我只要用6个字节,所以我的函数是这样的:

//        获取STM32芯片的低48位的UID
void Get_STM32_CAN_UID(void)
{
    uint32_t uid[3];
    HAL_GetUID(uid);

                STM32_CAN_UID[0]=(uid[1]%65536)/256;

                STM32_CAN_UID[1]=uid[1]%256;

                STM32_CAN_UID[2]=uid[2]/16777216;

                STM32_CAN_UID[3]=(uid[2]%16777216)/65536;

                STM32_CAN_UID[4]=(uid[2]%65536)/256;

                STM32_CAN_UID[5]=uid[2]%256;

}

废鱼 回答时间:2018-11-16 08:35:39
我只用用的是下面的地址,.H文件中有声明。这样不用每个芯片都去专门修改一次代码了:

/*!< Unique device ID registers */
#if defined (STM32L1XX_MD)
#define         UID1          ((uint32_t)0x1FF80050)
#define         UID2          ((uint32_t)0x1FF80054)
#define         UID3          ((uint32_t)0x1FF80064)
#elif defined (STM32L1XX_MDP) || defined (STM32L1XX_HD) || defined (STM32L1XX_XL)
#define         UID1          ((uint32_t)0x1FF800D0)
#define         UID2          ((uint32_t)0x1FF800D4)
#define         UID3          ((uint32_t)0x1FF800E4)
#endif
STM1024 回答时间:2018-11-12 14:18:19
本帖最后由 stm1024 于 2018-11-12 21:04 编辑

你把96位都读出来之后发现都是一样的?那你肯定是买到了小作坊生产的假冒伪劣产品(
怀疑你的地址可能有点问题。我帮你看了一下官方手册RM0038,Rev15,p891:
2018-11-12_142155.png
2018-11-12_142205.png
2018-11-12_142237.png
你代码中是连续的96bit,但是文档中偏移地址并不是连续的0x00,0x04和0x14(搞不清楚ST家的脑回路),你核对修改一下你的地址再看看?

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

废鱼 回答时间:2018-11-12 11:45:24
我几十片都出过,不知道怎么解决。
奏奏奏 回答时间:2018-11-12 13:44:23
本帖最后由 奏奏奏 于 2018-11-12 13:45 编辑

实在没有办法就自己指定FLASH里面固定地址,
自制的一个自己识别的唯一序列号UID,
但是最好PC端有随机序列号生成器这样功能的管理软件,
没有就花钱请人做一个

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

MrJiu 回答时间:2018-11-12 13:47:16
可以用烧写器的自加在指定位置的flash来实现!!!感觉也阔以!!!

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

owen_chen-30573 回答时间:2018-11-12 13:58:09
ID的生成方法很多,最便捷的无疑就是用MCU的UID,我纳闷的是这么大一个厂怎么能出这种错误呢
freeelectron 回答时间:2018-11-12 15:46:34
uid肯定不会重复的,找原厂分析看看,是不是买到假货了

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

jiguosheng 回答时间:2018-11-12 18:51:10
记得以前看到过一篇帖子说F0系列也出现过这样的情况。
sincomaster 回答时间:2018-11-12 23:33:00
这个还有假货一说,晕菜哟
xmshao 回答时间:2018-11-13 11:06:50
stm1024 发表于 2018-11-12 14:18
你把96位都读出来之后发现都是一样的?那你肯定是买到了小作坊生产的假冒伪劣产品()
怀疑你的地址可能 ...

赞!
提醒得对! 注意第3个字的地址。
STM1024 回答时间:2018-11-13 11:27:43
xmshao 发表于 2018-11-13 11:06
赞!
提醒得对! 注意第3个字的地址。

这个UID的位置布局……脑回路清奇
埃斯提爱慕 回答时间:2018-11-13 15:12:51
提示: 作者被禁止或删除 内容自动屏蔽
owen_chen-30573 回答时间:2018-11-15 15:33:56
stm1024 发表于 2018-11-12 14:18
你把96位都读出来之后发现都是一样的?那你肯定是买到了小作坊生产的假冒伪劣产品()
怀疑你的地址可能 ...

感谢感谢!!最后32位的地址偏移确实错了,应该是0x1FF80050+0x14, 改完再读就OK了,文档看的不够细啊,惭愧惭愧
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版