打印
[技术问答]

M480 的96位UID 在什么地址?

[复制链接]
957|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
apple|  楼主 | 2020-3-8 08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题, 在新唐资料中没有找到,谢谢

使用特权

评论回复
沙发
xuanhuanzi| | 2020-3-8 16:58 | 只看该作者
BSP的SYS例子里。

使用特权

评论回复
板凳
xuanhuanzi| | 2020-3-8 16:59 | 只看该作者
好像没,我找找

使用特权

评论回复
地板
xuanhuanzi| | 2020-3-8 17:00 | 只看该作者
uint32_t SYS_ReadPDID(void);

使用特权

评论回复
5
xuanhuanzi| | 2020-3-8 17:06 | 只看该作者
sys.h里面有这个
uint32_t SYS_ReadPDID(void);

使用特权

评论回复
6
xuanhuanzi| | 2020-3-8 17:07 | 只看该作者
UID估计需要用到FMC功能读取。

使用特权

评论回复
7
xuanhuanzi| | 2020-3-8 18:07 | 只看该作者
可以看看手册是在哪儿写着,去读。

使用特权

评论回复
8
xuanhuanzi| | 2020-3-8 18:19 | 只看该作者
EC_M051_IO_Toggle_With_UID_Protect_V1.00 (1).zip (4.05 MB)
参考这个方法。

使用特权

评论回复
9
xuanhuanzi| | 2020-3-8 18:25 | 只看该作者
ISP可以读出来

使用特权

评论回复
10
xuanhuanzi| | 2020-3-8 18:26 | 只看该作者
所以你可以用FMC的ISP指令读。

使用特权

评论回复
11
zhuotuzi| | 2020-3-10 21:28 | 只看该作者
数据手册有没有写

使用特权

评论回复
12
jasontu| | 2020-3-11 08:39 | 只看该作者
/M480BSP/master/Library/StdDriver/inc/fmc.h
/**
  * @brief    Read company ID
  * @param    None
  * @return   The company ID (32-bit)
  * @Details  The company ID of Nuvoton is fixed to be 0xDA
  */
__STATIC_INLINE uint32_t FMC_ReadCID(void)
{
    FMC->ISPCMD = FMC_ISPCMD_READ_CID;           /* Set ISP Command Code */
    FMC->ISPADDR = 0x0u;                         /* Must keep 0x0 when read CID */
    FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;          /* Trigger to start ISP procedure */
#if ISBEN
    __ISB();
#endif                                           /* To make sure ISP/CPU be Synchronized */
    while(FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) {} /* Waiting for ISP Done */

    return FMC->ISPDAT;
}

/**
  * @brief    Read product ID
  * @param    None
  * @return   The product ID (32-bit)
  * @details  This function is used to read product ID.
  */
__STATIC_INLINE uint32_t FMC_ReadPID(void)
{
    FMC->ISPCMD = FMC_ISPCMD_READ_DID;          /* Set ISP Command Code */
    FMC->ISPADDR = 0x04u;                       /* Must keep 0x4 when read PID */
    FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;         /* Trigger to start ISP procedure */
#if ISBEN
    __ISB();
#endif                                          /* To make sure ISP/CPU be Synchronized */
    while(FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) {} /* Waiting for ISP Done */

    return FMC->ISPDAT;
}

/**
* @brief       Read Unique ID
* @param[in]   u8Index  UID index. 0 = UID[31:0], 1 = UID[63:32], 2 = UID[95:64]
* @return      The 32-bit unique ID data of specified UID index.
* @details     To read out 96-bit Unique ID.
*/
__STATIC_INLINE uint32_t FMC_ReadUID(uint8_t u8Index)
{
    FMC->ISPCMD = FMC_ISPCMD_READ_UID;
    FMC->ISPADDR = ((uint32_t)u8Index << 2u);
    FMC->ISPDAT = 0u;
    FMC->ISPTRG = 0x1u;
#if ISBEN
    __ISB();
#endif
    while(FMC->ISPTRG) {}

    return FMC->ISPDAT;
}

使用特权

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

本版积分规则

90

主题

573

帖子

8

粉丝