@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[2]=DBGMCU_GetUIDH();
UID[1]=DBGMCU_GetUIDM();
UID[0]=DBGMCU_GetUIDL();
sprintf(UID,"%08X%08X%08X",UID[2],UID[1],UID[0]);
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读取到这里就结束了
|
共1人点赞
|