[NXP]/LPC17002011. 11. 6. 06:30

[LPC1756 EVM] Cortex-M3 LPC1700 GPIO 속도 테스트 실험

[LPC1756 EVM] Cortex-M3 LPC1700 GPIO 속도 테스트 실험



NXP사의 100Mhz Corte-M3 LPC1756 의 GPIO토글링 속도 테스트를 실험해 보았다. [다른 MCU속도 측정 결과]와 비교 하면 PIC32정도와 비교할 만하다.

비트 토글시 4.5Mhz정도 출력된다. PLL세팅 하여 100Mhz로 구동하니 8Mhz 정도 나온다.
     14              while(1)
     15              {
     16                  Led1Toggle();   /FIO1PIN ^= BIT9
   \                     ??main_1:
   \   00000034   2068               LDR      R0,[R4, #+0]
   \   00000036   4840               EORS     R0,R1,R0
   \   00000038   2060               STR      R0,[R4, #+0]
   \   0000003A   FBE7               B.N      ??main_1
   \                     ??main_0:
   \   0000003C   34C00920           DC32     0x2009c034
   \   00000040                      REQUIRE _A_FIO1PIN




단순 On/Off 만 했을때 25Mhz까지 출력된다.
     14              while(1)
     15              {
     16                  FIO1SET = BIT9;
   \                     ??main_1:
   \   00000034   6060               STR      R0,[R4, #+4]
     17                  FIO1CLR = BIT9;
   \   00000036   A060               STR      R0,[R4, #+8]
   \   00000038   FCE7               B.N      ??main_1
   \   0000003A   00BF               Nop     
   \                     ??main_0:
   \   0000003C   34C00920           DC32     0x2009c034
   \   00000040                      REQUIRE _A_FIO1PIN
   \   00000040                      REQUIRE _A_FIO1SET
   \   00000040                      REQUIRE _A_FIO1CLR






LPC1756 PLL 설정 코드 - 100Mhz 설정
void ConfigurePLL ( void )
{
DWORD MValue, NValue;

  if ( PLL0STAT & (1 << 25) )
  {
    PLL0CON = 1;     /* Enable PLL, disconnected */
    PLL0FEED = 0xaa;
    PLL0FEED = 0x55;
  }

  PLL0CON = 0;       /* Disable PLL, disconnected */
  PLL0FEED = 0xaa;
  PLL0FEED = 0x55;

  SCS |= 0x20;      /* Enable main OSC */
  while( !(SCS & 0x40) ); /* Wait until main OSC is usable */

  CLKSRCSEL = 0x1;    /* select main OSC, 12MHz, as the PLL clock source */

  PLL0CFG = PLL_MValue | (PLL_NValue << 16);
  PLL0FEED = 0xaa;
  PLL0FEED = 0x55;

  PLL0CON = 1;       /* Enable PLL, disconnected */
  PLL0FEED = 0xaa;
  PLL0FEED = 0x55;
 
 CCLKCFG = CCLKDivValue; /* Set clock divider */
  #if USE_USB
    USBCLKCFG = USBCLKDivValue;   /* usbclk = 288 MHz/6 = 48 MHz */
  #endif

  while ( ((PLL0STAT & (1 << 26)) == 0) ); /* Check lock bit status */

  MValue = PLL0STAT & 0x00007FFF;
  NValue = (PLL0STAT & 0x00FF0000) >> 16;
  while ((MValue != PLL_MValue) && ( NValue != PLL_NValue) );

  PLL0CON = 3;       /* enable and connect */
  PLL0FEED = 0xaa;
  PLL0FEED = 0x55;
  while ( ((PLL0STAT & (1 << 25)) == 0) ); /* Check connect bit status */
  return;
}


void SystemInit(void)
{
  // Flash accelerator init
  FLASHCFG = (0x5UL<<12) | 0x3AUL;
  // Init clock
  InitClock();
#if FCCLK_FREQ < 20000000
  FLASHCFG = (0x0UL<<12) | 0x3AUL;
#elif FCCLK_FREQ < 40000000
  FLASHCFG = (0x1UL<<12) | 0x3AUL;
#elif FCCLK_FREQ < 60000000
  FLASHCFG = (0x2UL<<12) | 0x3AUL;
#elif FCCLK_FREQ < 80000000
  FLASHCFG = (0x3UL<<12) | 0x3AUL;
#elif FCCLK_FREQ < 100000000
  FLASHCFG = (0x4UL<<12) | 0x3AUL;
#endif 
   :
}
Posted by nexp

댓글을 달아 주세요

[NXP]/LPC17002011. 11. 5. 17:00

[LPC1756 EVM] NXP Cortex-M3 - LCP1756 보드 제작

[LPC1756 EVM] NXP Cortex-M3 - LCP1756 보드 제작



LPC1756 User manual



NXP사의 100Mhz 클럭의 Cortex-M3 LPC1700 시리즈 보드를 SM-Type EVM Board  형태로 제작 했다. Cortex-M3 코어에 저렴하고, 시중에 많이 판매되고 있으며 무엇보다 100Mhz 클럭이라 테스트 해볼만 했다.




LPC1756은 80핀 LQFP 패키지 인데 의외로 핀이 많지 않아 소형타입으로 제작 했는데 뒷면에 배치하여 LED및 스위치를 위한 공간을 활용하였다.



확장 테스트 보드







[LPC1756 EVM] 회로도


Posted by nexp

댓글을 달아 주세요

[NXP]/LPC17002011. 9. 16. 18:12

NXP LCP17xx

NXP의 100Mhz Cortex-M3 LPC17xx 시리즈


Posted by nexp
TAG LPC17XX

댓글을 달아 주세요