[技术问答] M480 的96位UID 在什么地址?

[复制链接]
1201|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);
xuanhuanzi 发表于 2020-3-8 17:06 | 显示全部楼层
sys.h里面有这个
uint32_t SYS_ReadPDID(void);
xuanhuanzi 发表于 2020-3-8 17:07 | 显示全部楼层
UID估计需要用到FMC功能读取。
xuanhuanzi 发表于 2020-3-8 18:07 | 显示全部楼层
可以看看手册是在哪儿写着,去读。
xuanhuanzi 发表于 2020-3-8 18:19 | 显示全部楼层
EC_M051_IO_Toggle_With_UID_Protect_V1.00 (1).zip (4.05 MB, 下载次数: 1)
参考这个方法。
xuanhuanzi 发表于 2020-3-8 18:25 | 显示全部楼层
ISP可以读出来
xuanhuanzi 发表于 2020-3-8 18:26 | 显示全部楼层
所以你可以用FMC的ISP指令读。
zhuotuzi 发表于 2020-3-10 21:28 | 显示全部楼层
数据手册有没有写
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

主题

581

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部