434878450 发表于 2021-3-26 08:11

HK32F031F6 读UID芯片挂了

如题:
        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连接不了芯片{:sweat:}{:sweat:}

434878450 发表于 2021-3-26 19:50

#define UID_BASE            ((uint32_t)0x1FFFF7ACU)

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






HSXP063 发表于 2021-3-31 19:05

434878450 发表于 2021-3-26 19:50
#define UID_BASE            ((uint32_t)0x1FFFF7ACU)

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

CpuID=*(__IO u32*)(0x1FFFF7AC);
CpuID=*(__IO u32*)(0x1FFFF7B0);
CpuID=*(__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=*(__IO u32*)(0x1FFFF7AC);
CpuID=*(__IO u32*)(0x1FFFF7B0);
CpuID=*(__IO u32*)(0x1FFF ...

我读出来这个位置为没有数据,要往上移三个dword,试了不同的芯片确实不一样,应该就是UID了,我的初衷是获取UID作随机种子,往通信里随机插入广播.
页: [1]
查看完整版本: HK32F031F6 读UID芯片挂了