[技术问答]

请问m051的96-bit唯一ID号 到底在哪?没找到

[复制链接]
3119|18
手机看帖
扫描二维码
随时随地手机跟帖
xintao220|  楼主 | 2014-6-19 20:47 | 显示全部楼层 |阅读模式
最近看了M051的数据手册,上面提到芯片有96-bit唯一ID号,
但我却没找到有关这个UID的具体介绍。
另外我找到一个PDID ,但这个只有32位,并且不是唯一的,显然不是这个;
还有一个CPUID 看这也不像。
然后怎么也找不到96-bit唯一ID号,希望知道的朋友指点一下。
xintao220|  楼主 | 2014-6-19 21:53 | 显示全部楼层
没人理,自己顶一下……

使用特权

评论回复
ningtao66| | 2014-6-20 08:46 | 显示全部楼层
用新唐的 ICP 下载软件,连接到芯片,会显示出UID。
NUC100 UID.JPG

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
xyz549040622 + 2
电子云图| | 2014-6-20 12:35 | 显示全部楼层
地址表
5EK}[F@O{_3P~ZD$K6I$~KN.jpg

使用特权

评论回复
骗子的片子| | 2014-6-22 13:47 | 显示全部楼层
唯一的ID。。。。。用软件

使用特权

评论回复
haolaishi| | 2014-6-23 10:31 | 显示全部楼层
你知道为什么么?俺知道
UID (Unique ID):新唐将以上所述系列芯片植入UID,每一芯片UID是独特唯一的,使用者可利用此唯一码在韧体程序中对欲操作芯片加入判断机制,如此便可避免他人窃取程序代码重现相同商品可能。 
不支持UID 的晶片如下, 
NUC100xxAN 系列,NUC100xxBN 系列,M05xxAN 系列,NUC102xx系列  
支持UID的晶片如下, 
NUC100xxCN 系列,M05XBN 系列,NANO100 系列,MIN51 系列 

 

使用特权

评论回复
haolaishi| | 2014-6-23 10:32 | 显示全部楼层
所以,首先确认你是AN系列还是BN系列,然后这个ID可以直接读取寄存器,也可以用ICP读出

使用特权

评论回复
缥缈九哥| | 2014-6-24 14:17 | 显示全部楼层
BSP包里有例子。

使用特权

评论回复
xintao220|  楼主 | 2014-6-27 10:15 | 显示全部楼层
谢谢大家的帮助,我前几天出差了,今天刚回来。

使用特权

评论回复
mintspring| | 2014-7-1 20:13 | 显示全部楼层
需要从那个寄存器里读取的,你以为都写到片子上了啊

使用特权

评论回复
jackghl| | 2015-7-21 12:01 | 显示全部楼层
ISP命令读取
UID.png

使用特权

评论回复
风的样子| | 2015-7-21 12:50 | 显示全部楼层
每一个芯片的ID都是唯一的吧

使用特权

评论回复
598330983| | 2015-7-21 22:47 | 显示全部楼层
读CPUID

使用特权

评论回复
734774645| | 2015-7-21 23:14 | 显示全部楼层
在头文件搜索CPUID,看看有没有这个寄存器定义就行了。

使用特权

评论回复
断桥残雪_98| | 2015-8-27 17:50 | 显示全部楼层
各位大侠,有谁找到UID码的地址在哪里了啊,分享一下啊,小弟找了好几天了,都没有找到,郁闷中

使用特权

评论回复
断桥残雪_98| | 2015-8-27 22:37 | 显示全部楼层
我找到了 详细请看  https://bbs.21ic.com/icview-1077030-1-1.html

使用特权

评论回复
捉虫天师| | 2015-8-28 07:46 | 显示全部楼层
#include "SmartM_M0.h"


#define PAGE_SIZE               512


#define FLASH_START_ADDRESS          0x00000000
#define FLASH_SIZE              0x00010000

/****************************************
*函数名称:ISPTriger
*输    入:无
*输    出:无
*功    能:ISP执行
******************************************/
VOID ISPTriger(VOID)
{
    ISPTRG |= ISPGO;
    while((ISPTRG&ISPGO) == ISPGO);
}
/****************************************
*函数名称:ISPEnable
*输    入:无
*输    出:无
*功    能:ISP使能
******************************************/
VOID ISPEnable(VOID)
{
    ISPCON |= ISPEN|CFGUEN|LDUEN;
}
/****************************************
*函数名称:ISPDisable
*输    入:无
*输    出:无
*功    能:ISP禁用
******************************************/
VOID ISPDisable(VOID)
{
    ISPCON &= ~(ISPEN|CFGUEN|LDUEN);
}
/****************************************
*函数名称:FMC_Erase
*输    入:unPage 页地址
*输    出:无
*功    能:数据区擦除
******************************************/
VOID FMC_Erase(UINT32 unAddr)
{
    PROTECT_REG(
       
    ISPEnable();
    ISPCMD = PAGE_ERASE;

    ISPADR = unAddr;
    ISPTriger();

    ISPDisable();     

    )       
}
/****************************************
*函数名称:FMC_Write
*输    入:pucBuf 写数据缓冲区
                      unSize 写数据大小
*输    出:无
*功    能:数据区写
******************************************/
VOID FMC_Write(UINT32 unAddr,UINT8 *pucBuf,UINT32 unSize)
{
    UINT32 i;   
    PROTECT_REG(
    ISPEnable();
    ISPCMD = PROGRAM;

                for(i=0; i<unSize; i+=4)
                {
                                ISPADR = (i+unAddr);
                                ISPDAT = *(UINT32 *)(&pucBuf[i]);
                                ISPTriger();
                               
                }

    ISPDisable();   

    )               
}
/****************************************
*函数名称:FMC_Read
*输    入:pucBuf 读数据缓冲区
                  unSize 读数据大小
*输    出:无
*功    能:数据区读
******************************************/
VOID FMC_Read(UINT32 unAddr,UINT8 *pucBuf,UINT32 unSize)
{
    UINT32 i;
    PROTECT_REG(
    ISPEnable();

    ISPCMD = READ;

    for(i=0; i<unSize; i+=4)
    {
            ISPADR = (i+unAddr);
      ISPTriger();
                *(UINT32 *)(&pucBuf[i])=ISPDAT;
    }

    ISPDisable();   

    )
}

UINT32 Read_UID(UINT32 unAddr)
{
    UINT32 UIDX;
    PROTECT_REG(
    ISPEnable();

    ISPCMD = READ_UID;

            ISPADR =unAddr;
      ISPTriger();
                *(UINT32 *)(&UIDX)=ISPDAT;

    ISPDisable();   

    )
        return  UIDX;
}



/****************************************
*函数名称:main
*输    入:无
*输    出:无
*功    能:函数主体
******************************************/
INT32 main(VOID)
{
          /*1.MCU频率初始化,频率为50MHz*/
          McuInit(MCU_FREQUENCY);
          /*2.串口初始化,波特率为115200bps*/
                UartInit(115200);
          Delayms(1000);
          while(1)
                {                       
    printf("\r\nCPU ID = %X\r\n",Read_UID(0X00));//全球唯一ID码64-96位
    printf("\r\nCPU ID = %X\r\n",Read_UID(0X04));//全球唯一ID码32-64位
    printf("\r\nCPU ID = %X\r\n",Read_UID(0X08));//全球唯一ID码0-32位
                                 Delayms(1000);                       
                               
                }
}


使用特权

评论回复
h_x_zhong| | 2017-9-23 11:35 | 显示全部楼层
#define         READ_UID                        0x04

UINT32 Read_UID(UINT32 unAddr)
{
   UINT32 UIDX;

   Un_Lock_Reg();                                                       
   ISPCON |= ISPEN;                                                        

   ISPCMD = READ_UID;       
       
   ISPADR = unAddr;

   ISPTRG |= ISPGO;                                      
   while((ISPTRG&ISPGO) == ISPGO);
                                 
            
   *(UINT32 *)(&UIDX)=ISPDAT;

   Un_Lock_Reg();
   ISPCON &= ~ISPEN;                                                                

   return  UIDX;
}

使用特权

评论回复
598330983| | 2017-9-24 09:19 | 显示全部楼层
官方提供的system参考例子里面有,应该在头文件定义了那个地址

使用特权

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

本版积分规则

12

主题

72

帖子

1

粉丝