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

[复制链接]
1526|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、程序读取
  1. #define   UID             0x00012660  
  2. #define   PRODUCT_TYPE    0x00012610
  3. #define   FLASH_SIZE      0x00012628
  4. #define   RAM_SIZE        0x0001262C
  5. #define   PIN_NUM         0x00012626       



  6. struct McuInfo_t
  7. {
  8.         uint8_t UniqueId[10];
  9.         uint8_t ProductType[22];
  10.         uint8_t FlashSize[4];
  11.         uint8_t RamSize[4];
  12.         uint8_t PinNum[2];
  13.        
  14. }McuInfo;


  15. void GetMcuInfo(void)
  16. {
  17.         printf("\r\nUnique  Id:[");
  18.         for(uint8_t i=0;i<sizeof(McuInfo.UniqueId)/sizeof(McuInfo.UniqueId[0]);i++)
  19.         {
  20.                 McuInfo.UniqueId[i]=*(uint8_t*)(UID+i);
  21.                 printf(" %02x",McuInfo.UniqueId[i]);
  22.         }
  23.         printf("]\r\n\r\n");
  24.        

  25.         printf("Product Type:[");
  26.         for(uint8_t i=0;i<sizeof(McuInfo.ProductType)/sizeof(McuInfo.ProductType[0]);i++)
  27.         {
  28.                 McuInfo.ProductType[i]=*(uint8_t*)(PRODUCT_TYPE+i);
  29.                 printf(" %02x",McuInfo.ProductType[i]);
  30.         }
  31.         printf("]\r\n\r\n");
  32.        
  33.        
  34.         printf("Flash Size:[");
  35.         for(uint8_t i=0;i<sizeof(McuInfo.FlashSize)/sizeof(McuInfo.FlashSize[0]);i++)
  36.         {
  37.                 McuInfo.FlashSize[i]=*(uint8_t*)(FLASH_SIZE+i);
  38.                 printf(" %02x",McuInfo.FlashSize[i]);
  39.         }
  40.         printf("]\r\n\r\n");
  41.        
  42.        
  43.         printf("Ram Size:[");
  44.         for(uint8_t i=0;i<sizeof(McuInfo.RamSize)/sizeof(McuInfo.RamSize[0]);i++)
  45.         {
  46.                 McuInfo.RamSize[i]=*(uint8_t*)(RAM_SIZE+i);
  47.                 printf(" %02x",McuInfo.RamSize[i]);
  48.         }
  49.         printf("]\r\n\r\n");
  50.        
  51.        
  52.         printf("Pin Num:[");
  53.         for(uint8_t i=0;i<sizeof(McuInfo.PinNum)/sizeof(McuInfo.PinNum[0]);i++)
  54.         {
  55.                 McuInfo.PinNum[i]=*(uint8_t*)(PIN_NUM+i);
  56.                 printf(" %02x",McuInfo.PinNum[i]);
  57.         }
  58.         printf("]\r\n\r\n");
  59. }

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

66

主题

786

帖子

11

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