[CW32F030系列]

【CW32F030CxTx StartKit测评】3、UID实际获取到的与手册描述不符

[复制链接]
529|8
手机看帖
扫描二维码
随时随地手机跟帖
freeelectron|  楼主 | 2022-7-20 16:23 | 显示全部楼层 |阅读模式
1、关于电子签名
数字签名主要用来存放芯片唯一身份标识(UID)、产品型号、FLASH 容量、SRAM 容量、芯片封装引脚数等信息,
可以通过 SWD 或者 CPU 读取。数字签名相关信息在出厂时编程,用户固件或外部设备可通过读取数字签名来对
芯片的合法性进行验证。

2、UID
x.png
可以看出存储地址为0x0001 2660 - 0x0001 2669,共80bit,10个字节。

3、产品型号寄存器
型号.png
可以看出存储地址为 0x0001 2610 - 0x0001 2625,共 22 字节。

4、FLASH 容量寄存器
flash.png
可以看出存储地址为0x0001 2628 - 0x0001 262B,共 4 字节。

5、SRAM 容量寄存器
sram.png
可以看出存储地址为0x0001 262C - 0x0001 262F,共 4 字节。

6、引脚数量寄存器
pinnum.png
可以看出存储地址为0x0001 2626 - 0x0001 2627,共 2 字节。

7、程序读取
#define   UID             0x00012660  
#define   PRODUCT_TYPE    0x00012610
#define   FLASH_SIZE      0x00012628
#define   RAM_SIZE        0x0001262C
#define   PIN_NUM         0x00012626       



struct McuInfo_t
{
        uint8_t UniqueId[10];
        uint8_t ProductType[22];
        uint8_t FlashSize[4];
        uint8_t RamSize[4];
        uint8_t PinNum[2];
       
}McuInfo;


void GetMcuInfo(void)
{
        printf("\r\nUnique  Id:[");
        for(uint8_t i=0;i<sizeof(McuInfo.UniqueId)/sizeof(McuInfo.UniqueId[0]);i++)
        {
                McuInfo.UniqueId[i]=*(uint8_t*)(UID+i);
                printf(" %02x",McuInfo.UniqueId[i]);
        }
        printf("]\r\n\r\n");
       

        printf("Product Type:[");
        for(uint8_t i=0;i<sizeof(McuInfo.ProductType)/sizeof(McuInfo.ProductType[0]);i++)
        {
                McuInfo.ProductType[i]=*(uint8_t*)(PRODUCT_TYPE+i);
                printf(" %02x",McuInfo.ProductType[i]);
        }
        printf("]\r\n\r\n");
       
       
        printf("Flash Size:[");
        for(uint8_t i=0;i<sizeof(McuInfo.FlashSize)/sizeof(McuInfo.FlashSize[0]);i++)
        {
                McuInfo.FlashSize[i]=*(uint8_t*)(FLASH_SIZE+i);
                printf(" %02x",McuInfo.FlashSize[i]);
        }
        printf("]\r\n\r\n");
       
       
        printf("Ram Size:[");
        for(uint8_t i=0;i<sizeof(McuInfo.RamSize)/sizeof(McuInfo.RamSize[0]);i++)
        {
                McuInfo.RamSize[i]=*(uint8_t*)(RAM_SIZE+i);
                printf(" %02x",McuInfo.RamSize[i]);
        }
        printf("]\r\n\r\n");
       
       
        printf("Pin Num:[");
        for(uint8_t i=0;i<sizeof(McuInfo.PinNum)/sizeof(McuInfo.PinNum[0]);i++)
        {
                McuInfo.PinNum[i]=*(uint8_t*)(PIN_NUM+i);
                printf(" %02x",McuInfo.PinNum[i]);
        }
        printf("]\r\n\r\n");
}

8、串口打印
uid.png
可以看出UID获取到的全是FF,这明显是不对的。

9、JLINK在线读取
在线读取UID:
2.png
可以看出全是FF;

读取其他参数:
1.png
可以看出,是正确的。


所以,到底是手册写错了,还是芯片本身就没有UID???


使用特权

评论回复
hotcool| | 2022-7-21 17:35 | 显示全部楼层
应该是芯片问题吧

使用特权

评论回复
freeelectron|  楼主 | 2022-7-21 19:28 | 显示全部楼层
hotcool 发表于 2022-7-21 17:35
应该是芯片问题吧

等待官方人员回复

使用特权

评论回复
pssyx| | 2022-7-22 10:16 | 显示全部楼层
所有量产的CW32 MCU都有UID的,请放心使用!
因StartKit是随机发送的,部分CW32的工程样片被SMT,因此产生了与手册不符的现象。
UID_CW32F030.jpg

使用特权

评论回复
快乐至上333| | 2022-7-22 14:10 | 显示全部楼层
楼主很用心啊,其他参加评测的用户都没发现

使用特权

评论回复
typeof| | 2022-7-24 22:01 | 显示全部楼层
获取不了设备吗?   

使用特权

评论回复
tifmill| | 2022-7-25 07:54 | 显示全部楼层
这个的电脑驱动怎么写?  

使用特权

评论回复
freeelectron|  楼主 | 2022-7-25 10:42 | 显示全部楼层
typeof 发表于 2022-7-24 22:01
获取不了设备吗?

4楼,官方人员回复,样品个别获取不了。

使用特权

评论回复
freeelectron|  楼主 | 2022-7-25 10:43 | 显示全部楼层
tifmill 发表于 2022-7-25 07:54
这个的电脑驱动怎么写?

jlink在线debug

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:stm32/LoRa物联网:304350312

65

主题

785

帖子

10

粉丝