打印
[入门教程]

如何读取 96-bit唯一ID号?

[复制链接]
3069|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
YDMCP|  楼主 | 2012-12-4 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wjsjdeng| | 2012-12-4 18:45 | 只看该作者
Enable_Write_Flash();
FMC_ReadUID(0,&uid);       
Disable_Write_Flash();

int32_t FMC_ReadUID(int index, uint32_t * u32data)
{
        FMC->u32ISPCMD = 0x4;

        FMC->ISPADR        = 0x04 * index;

        FMC->ISPTRG.ISPGO = 1;
        while (FMC->ISPTRG.ISPGO);
        if (FMC->ISPCON.ISPFF == 1)
        {
                FMC->ISPCON.ISPFF = 1;
        }
   
        *u32data = FMC->ISPDAT;

    return 0;
}

nuc130/140 c版,,

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
YDMCP + 3 很给力!
板凳
wjsjdeng| | 2012-12-4 18:47 | 只看该作者
Enable_Write_Flash();
FMC_ReadUID(0,&uid0);   
FMC_ReadUID(0,&uid1);   
FMC_ReadUID(0,&uid2);        
Disable_Write_Flash();

每次读一个字,32位,读三次.

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
YDMCP + 2 赞一个!
地板
wjsjdeng| | 2012-12-4 18:48 | 只看该作者
mini51系列的好像bsp包里直接就有例子。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
YDMCP + 2 赞一个!
5
YDMCP|  楼主 | 2012-12-4 19:33 | 只看该作者
谢谢 这就去看

使用特权

评论回复
6
缥缈九哥| | 2012-12-7 09:40 | 只看该作者
请到新唐 主页下载MINI51的BSP包,里面有详细例子如何读UID,UCID等。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
YDMCP + 3 很给力!
7
YDMCP|  楼主 | 2012-12-7 10:29 | 只看该作者
感谢 缥缈九哥

使用特权

评论回复
8
缥缈九哥| | 2012-12-8 21:32 | 只看该作者
printf("\n\n");
    printf("+--------------------------------------------------------+\n");
    printf("|    Mini51 Flash Memory Controller Driver Sample Code   |\n");
    printf("+--------------------------------------------------------+\n");

    /* Read BS */
    printf("  Boot Mode ...................... ");
   
        if (DrvFMC_GetBootSelect() == E_FMC_APROM)
        printf("[APROM]\n");
    else
    {
        printf("[LDROM]\n");
        printf("  WARNING: The driver sample code must execute in AP mode!\n");
        goto lexit;
    }

        /* Read CID */
        i32Ret = DrvFMC_ReadCID(&cid);
        if (i32Ret == 0)
                printf("  CID ........................ [0x%08x]\n", cid);

        i32Ret = DrvFMC_ReadDID(&did);
        if (i32Ret == 0)
                printf("  CID ........................ [0x%08x]\n", did);

        /* Read Unique ID */
        i32Ret = DrvFMC_ReadUID(0, &uid);
        if (i32Ret == 0)
                printf("  Unique ID [31:0]............ [0x%08x]\n", uid);

        i32Ret = DrvFMC_ReadUID(1, &uid);
        if (i32Ret == 0)
                printf("  Unique ID [63:32]........... [0x%08x]\n", uid);

        i32Ret = DrvFMC_ReadUID(2, &uid);
        if (i32Ret == 0)
                printf("  Unique ID [95:64]........... [0x%08x]\n", uid);

        /* Read Data Flash base address */
        u32Data = DrvFMC_ReadDataFlashBaseAddr();
        printf("  Data Flash Base Address .... [0x%08x]\n", u32Data);

使用特权

评论回复
9
缥缈九哥| | 2012-12-8 21:32 | 只看该作者
在Software Library\MINI51BSP\NuvotonPlatform_Keil\Sample\Driver\Smpl_DrvFMC\Smpl_DrvFMC.c

使用特权

评论回复
10
YDMCP|  楼主 | 2012-12-9 06:41 | 只看该作者
再谢缥缈九哥

附带我的学习笔记
int32_t DrvFMC_Read_UID(uint32_t u32addr, uint32_t * u32data)
{
        FMC->ISPCMD.FCTRL = 4;          //命令字
        FMC->ISPCMD.FCEN = 0;
        FMC->ISPCMD.FOEN = 0;

     FMC->ISPADR        = u32addr;

        FMC->ISPDAT        = 0;
        FMC->ISPTRG.ISPGO = 1;   
        __ISB();
        while (FMC->ISPTRG.ISPGO);

        if (FMC->ISPCON.ISPFF == 1)
        {
                FMC->ISPCON.ISPFF = 1;
                return E_DRVFMC_ERR_ISP_FAIL;
        }
       
        *u32data = FMC->ISPDAT;
        return 0;
}

DrvFMC_Read_UID(0x0, &data);
datax[0]=data;
DrvFMC_Read_UID(0x4, &data);
datax[1]=data;
DrvFMC_Read_UID(0x8, &data);
datax[2]=data;

使用特权

评论回复
11
缥缈九哥| | 2012-12-15 11:01 | 只看该作者
很好。有回报。

使用特权

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

本版积分规则

46

主题

392

帖子

2

粉丝