em_system.c
Go to the documentation of this file.00001
00034 #include "em_system.h"
00035 #include "em_assert.h"
00036
00037
00042
00048
00049
00050
00051
00052
00059 void SYSTEM_ChipRevisionGet(SYSTEM_ChipRevision_TypeDef *rev)
00060 {
00061 uint8_t tmp;
00062
00063 EFM_ASSERT(rev);
00064
00065
00066 tmp = (((ROMTABLE->PID1 & _ROMTABLE_PID1_FAMILYMSB_MASK) >> _ROMTABLE_PID1_FAMILYMSB_SHIFT) << 2);
00067
00068 tmp |= ((ROMTABLE->PID0 & _ROMTABLE_PID0_FAMILYLSB_MASK) >> _ROMTABLE_PID0_FAMILYLSB_SHIFT);
00069 rev->family = tmp;
00070
00071
00072 rev->major = (ROMTABLE->PID0 & _ROMTABLE_PID0_REVMAJOR_MASK) >> _ROMTABLE_PID0_REVMAJOR_SHIFT;
00073
00074
00075 tmp = (((ROMTABLE->PID2 & _ROMTABLE_PID2_REVMINORMSB_MASK) >> _ROMTABLE_PID2_REVMINORMSB_SHIFT) << 4);
00076
00077 tmp |= ((ROMTABLE->PID3 & _ROMTABLE_PID3_REVMINORLSB_MASK) >> _ROMTABLE_PID3_REVMINORLSB_SHIFT);
00078 rev->minor = tmp;
00079 }
00080
00081
00091 uint32_t SYSTEM_GetCalibrationValue(volatile uint32_t *regAddress)
00092 {
00093 int regCount;
00094 CALIBRATE_TypeDef *p;
00095
00096 regCount = 1;
00097 p = CALIBRATE;
00098
00099 for (;; )
00100 {
00101 if ((regCount > CALIBRATE_MAX_REGISTERS) ||
00102 (p->VALUE == 0xFFFFFFFF))
00103 {
00104 EFM_ASSERT(false);
00105 return 0;
00106 }
00107
00108 if (p->ADDRESS == (uint32_t)regAddress)
00109 {
00110 return p->VALUE;
00111 }
00112
00113 p++;
00114 regCount++;
00115 }
00116 }
00117