[技术问答] HK32F031F6 读UID芯片挂了

[复制链接]
 楼主| 434878450 发表于 2021-3-26 08:11 | 显示全部楼层 |阅读模式
如题:
        printf("UID1 = 0x%X\r\n",*(uint32_t*)UID_BASE);
        printf("UID2 = 0x%X\r\n",*(uint32_t*)(UID_BASE+4));
        printf("UID3 = 0x%X\r\n",*(uint32_t*)(UID_BASE+8));
这里读出来的都是0xFFFFFFFF!怎么回事?

        printf("UID1 = 0x%X\r\n",*(__IO uint32_t*)UID_BASE);
        printf("UID2 = 0x%X\r\n",*(__IO uint32_t*)(UID_BASE+4));
        printf("UID3 = 0x%X\r\n",*(__IO uint32_t*)(UID_BASE+8));
以上加了个__IO,芯片直接挂了,JLINK连接不了芯片
 楼主| 434878450 发表于 2021-3-26 19:50 | 显示全部楼层
#define UID_BASE              ((uint32_t)0x1FFFF7ACU)

图中的 0x1FFFF7AC 哪里有数据...  到是0x1FFFF7B8有一个,哎
发现一个秘密,这个芯片官方说容量32K,但是内部有64K,关键还能用啊!






捕获.PNG
HSXP063 发表于 2021-3-31 19:05 | 显示全部楼层
434878450 发表于 2021-3-26 19:50
#define UID_BASE              ((uint32_t)0x1FFFF7ACU)

图中的 0x1FFFF7AC 哪里有数据...  到是0x1FFFF7 ...

CpuID[0]=*(__IO u32*)(0x1FFFF7AC);
CpuID[1]=*(__IO u32*)(0x1FFFF7B0);
CpuID[2]=*(__IO u32*)(0x1FFFF7B4);
单片小菜 发表于 2021-4-1 15:50 | 显示全部楼层
学习到了,不错的方法。
里面有晴雨 发表于 2021-4-1 17:08 | 显示全部楼层
感谢楼主的分享,不错的一次体验操作的。
 楼主| 434878450 发表于 2021-4-3 11:54 | 显示全部楼层
HSXP063 发表于 2021-3-31 19:05
CpuID[0]=*(__IO u32*)(0x1FFFF7AC);
CpuID[1]=*(__IO u32*)(0x1FFFF7B0);
CpuID[2]=*(__IO u32*)(0x1FFF ...

我读出来这个位置为没有数据,要往上移三个dword,试了不同的芯片确实不一样,应该就是UID了,我的初衷是获取UID作随机种子,往通信里随机插入广播.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

20

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部