7 Replies Latest reply on Mar 18, 2019 1:06 AM by MoTa_728816

    S6E1C3 Do we have unique ID?

    MoTa_728816

      Hi,

       

      We have received a question from one of our customer if unique ID of S6E1C3 is unique?

       

      So I wrote a simple program to read out the unique ID from 0x40000200 and 0x40000204.

      To my surprise the value(s) of these two 32bit registers are same with at least two of our FM0-64L-S6E1C3 boards.

      And values were 0.

       

      I also found CE215674 - FM0+ Unique ID

      https://www.cypress.com/documentation/code-examples/ce215674-fm0-unique-id https://www.cypress.com/documentation/code-examples/ce215674-fm0-unique-id

      And tried the program came with the documentation.

      And the uniqueIds were all 0.

       

      From the FM0+ Family Peripheral Manual

      https://www.cypress.com/file/223031/download

      Unique ID register address are 0x4000_0200 for all Type 1, Type 2, Type 3.

       

      Following is my test program (main.c)

      =========================

      #include "project.h"

      #include "printf_scanf/uart_io.h"

      #include <stdio.h>

       

      /*******************************************************************************

      * Global variables for UID values

      *******************************************************************************/

      stc_unique_id_t stcUniqueId;    /* PDL struct read from Uid_ReadUniqueId0() */

      uint32_t u32UniqueId0;          /* UID 0 read from Uid_ReadUniqueId0() */

      uint32_t u32UniqueId1;          /* UID 1 read from Uid_ReadUniqueId1() */

      uint64_t u64UniqueIdComplete;   /* 41-bit UID read from Uid_ReadUniqueId64() */

      uint64_t u64UniqueIdCalculated; /* Calculated 41-bit UID */

       

      void init_hardware(void)

      {

          __enable_irq(); /* Enable global interrupts. */

          Uart_Io_Init() ;   

      }

       

      int main(void)

      {

          uint32_t count = 0 ;

          uint32_t uid0, uid1 ;

          uint32_t available ;

         

          init_hardware() ;

       

          printf("FM0+ Test (%s %s)\n", __DATE__, __TIME__) ;

          if( Ok != Uid_ReadUniqueId( &stcUniqueId ) ) {

              printf("Uid Read UniqueID failed\n") ;

          }

          uid0 = stcUniqueId.u32Uidr0 ;

          uid1 = stcUniqueId.u32Uidr1 ;

      //    uid0 = Uid_ReadUniqueId0() ;

      //    uid1 = Uid_ReadUniqueId1() ;

          printf("Device ID: 0x%08X 0x%08X\n", uid0, uid1) ;

         

          for(;;)

          {

      //        printf("Loop %d\n", count++) ;

          }

      }

      =========================