trucyw 发表于 2023-5-21 16:08

菜鸟学习功能强大CH32V307之芯片FLASH&UID读取

@21小跑堂 #申请原创# 距上一次学习学习点屏已经过去两周了今天我们来点新的(SPI屏幕已经没有啥新奇了),那今天到底是啥新奇玩意呢?
上图上图(我们芯片的Flash大小和唯一身份标识UID)

原来Flash的容量可以通过0x1FFFF7E0反馈回来
而唯一身份标识UID则可以通过0x1FFFF7E8~0x1FFFF7F0反馈回来
接下来就是展示我们目前在用这颗芯片FLASH大小以及唯一身份标识UID的时候了

我们看到的Flash Size是0x100,结合厂家的规格书我们可以知道这个大小是256K(以 Kbyte 为单位的闪存容量。例:0x0080 = 128 K 字节)
而我们的唯一身份标识UID96bit则是263E1C797AF2383BFFFFFFFF,到这里我们读取已经结束了,接下来就是怎么样显示到屏幕上了
我们先看下屏幕的显示内容

这个和我们串口打印的是一样的哦
如下就是我们读取到数据转换操作(我们用到了Sprintf)
        USART_Printf_Init(115200);       
        printf("SystemClk:%d\r\n",SystemCoreClock);
        printf("ChipID:%08x\r\n", DBGMCU_GetCHIPID());
        printf("ChipFLASH:%08x\r\n", DBGMCU_GetFLACAP());
    UID=DBGMCU_GetUIDH();
    UID=DBGMCU_GetUIDM();
    UID=DBGMCU_GetUIDL();
    sprintf(UID,"%08X%08X%08X",UID,UID,UID);
    printf("UID:%s\r\n",UID);
    LCD_Init();
    LCD_SetBrightness(60);
        POINT_COLOR=RED;               
        LCD_Clear(BLACK);
    LCD_ShowString(1,1,200,16,24,"WCH CH32V307");
    if(DBGMCU_GetFLACAP()==0x20)LCD_ShowString(1,25,200,16,16,"Flash Size: 32K");
    if(DBGMCU_GetFLACAP()==0x40)LCD_ShowString(1,25,200,16,16,"Flash Size: 64K");
    if(DBGMCU_GetFLACAP()==0x80)LCD_ShowString(1,25,200,16,16,"Flash Size: 128K");
    if(DBGMCU_GetFLACAP()==0x100)LCD_ShowString(1,25,200,16,16,"Flash Size: 256K");
    else LCD_ShowString(1,25,200,16,16,"MCU ERROR");
    LCD_ShowString(1,41,200,16,16,"UID:");
    LCD_ShowString(31,41,200,16,16,UID);

为什么用到用到sprintf是因为我们要把读出来的数据转换成字符串
芯片FLASH&UID读取到这里就结束了

tpgf 发表于 2023-6-6 11:59

在嵌入式设备开发过程中有时会需要为设备设置唯一的ID用以标识设备唯一,比如要求同一总线上的所有设备ID不能重复,要求设备具体唯一的MAC地址等等

nawu 发表于 2023-6-6 13:14

同一个厂商的不同芯片的uid存放的地址是一样的吗

aoyi 发表于 2023-6-6 14:01

芯片UID存在的意义是什么呢 能防伪吗

zljiu 发表于 2023-6-6 14:14

aoyi 发表于 2023-6-6 14:01
芯片UID存在的意义是什么呢 能防伪吗

估计应该可以但是不知道能不能具备追踪整个芯片的流向的功能

gwsan 发表于 2023-6-6 14:26

目前估计没有这么强大的功能毕竟有一些采购链是比较那啥的

tfqi 发表于 2023-6-6 14:46

芯片的UID可以通过某些手段进行更改吗

chenjun89 发表于 2023-6-10 22:33

这个是RISCV内核的吗?

trucyw 发表于 2023-6-11 09:20

chenjun89 发表于 2023-6-10 22:33
这个是RISCV内核的吗?

是的,RISCV
页: [1]
查看完整版本: 菜鸟学习功能强大CH32V307之芯片FLASH&UID读取