找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[NUC] 芯片ID读取

[复制链接]
跳转到指定楼层
楼主
newphj 发表于 2016-10-22 11:21:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
nuc442的芯片ID怎么读取的?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 顶 踩
回复

使用道具 举报

沙发
harvardx 发表于 2016-10-28 10:20:52 | 只看该作者
打开M472 442的bsp;
NUC472_NUC442_BSP_CMSIS_V3.02.000\SampleCode\StdDriver\SYS_Control
里面有个例程SYS_Control

.

  1. int32_t main (void)
  2. {
  3.     uint32_t u32data;

  4.     /* Lock protected registers */
  5.     if(SYS->REGLCTL == 1) // In end of main function, program issued CPU reset and write-protection will be disabled.
  6.         SYS_LockReg();

  7.     /* Init System, IP clock and multi-function I/O */
  8.     SYS_Init(); //In the end of SYS_Init() will issue SYS_LockReg() to lock protected register. If user want to write protected register, please issue SYS_UnlockReg() to unlock protected register.

  9.     /* Init UART0 for printf */
  10.     UART0_Init();

  11.     printf("\n\nCPU @ %dHz\n", SystemCoreClock);

  12.     /*
  13.         This sample code will show some function about system manager controller and clock controller:
  14.         1. Read PDID
  15.         2. Get and clear reset source
  16.         3. Setting about BOD
  17.         4. Change system clock depended on different PLL settings
  18.         5. Output system clock from CKO pin, and the output frequency = system clock / 4
  19.     */

  20.     printf("+---------------------------------------+\n");
  21.     printf("|           System Driver Sample Code   |\n");
  22.     printf("+---------------------------------------+\n");

  23.     if (M32(FLAG_ADDR) == SIGNATURE) {
  24.         printf("  CPU Reset success!\n");
  25.         M32(FLAG_ADDR) = 0;
  26.         printf("  Press any key to continue ...\n");
  27.         getchar();
  28.     }

  29.     /*---------------------------------------------------------------------------------------------------------*/
  30.     /* Misc system function test                                                                               */
  31.     /*---------------------------------------------------------------------------------------------------------*/

  32.     /* Read Part Device ID */
  33.     printf("Product ID 0x%x\n", SYS->PDID);

  34.     /* Get reset source from last operation */
  35.     u32data = SYS->RSTSTS;
  36.     printf("Reset Source 0x%x\n", u32data);

  37.     /* Clear reset source */
  38.     SYS->RSTSTS = u32data;

  39.     /* Unlock protected registers for Brown-Out Detector settings */
  40.     SYS_UnlockReg();

  41.     /* Check if the write-protected registers are unlocked before BOD setting and CPU Reset */
  42.     if (SYS->REGLCTL != 0) {
  43.         printf("Protected Address is Unlocked\n");
  44.     }

  45.     /* Enable Brown-Out Detector and Low Voltage Reset function, and set Brown-Out Detector voltage 2.7V */
  46.     SYS->BODCTL =SYS_BODCTL_BODEN_Msk | SYS_BODCTL_BODVL_2_7V | SYS_BODCTL_LVREN_Msk;

  47.     /* Enable Brown-Out Interrupt function */
  48.     SYS->BODCTL &= ~SYS_BODCTL_BODRSTEN_Msk;
  49.     NVIC_EnableIRQ(BOD_IRQn);

  50.     /* Get system clock frequency and PLL clock frequency */
  51.     printf("  Change system clock to %d Hz and PLL clock is %d Hz\n", SystemCoreClock, CLK_GetPLLClockFreq());

  52.     /* Run PLL Test */
  53.     SYS_PLL_Test();

  54.     /* Write a signature work to SRAM to check if it is reset by software */
  55.     M32(FLAG_ADDR) = SIGNATURE;
  56.     printf("\n\n  >>> Reset CPU <<<\n");

  57.     /* Waiting for message send out */
  58.     UART_WAIT_TX_EMPTY(UART0);

  59.     /* Switch HCLK clock source to Internal 22MHz */
  60.     CLK->CLKSEL0 = CLK_CLKSEL0_HCLKSEL_HIRC;

  61.     /* Set PLL to Power down mode and HW will also clear PLLSTB bit in CLKSTATUS register */
  62.     CLK->PLLCTL |= CLK_PLLCTL_PD_Msk;

  63.     /* Reset CPU */
  64.     SYS_ResetCPU();
  65. }
复制代码

回复 支持 反对

使用道具 举报

板凳
harvardx 发表于 2016-10-28 10:21:27 | 只看该作者
看到了吗 很简单的一句话

    /* Read Part Device ID */
    printf("Product ID 0x%x\n", SYS->PDID);
回复 支持 反对

使用道具 举报

地板
 楼主| newphj 发表于 2016-11-16 18:34:29 | 只看该作者
万分感谢。。。
回复

使用道具 举报

5#
 楼主| newphj 发表于 2016-11-16 18:34:49 | 只看该作者
harvardx 发表于 2016-10-28 10:21
看到了吗 很简单的一句话

    /* Read Part Device ID */

万分感谢。。。
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU