[NXP]/LPC1k2011. 1. 1. 23:00

[LPC1K-SM EVM] LPC1113 ADC테스트

[LPC1K-SM EVM] LPC1113 ADC테스트



LPC1K는 10비트 ADC(Sample time 2.44 μs)가 있다. VR을 이용하여 ADC값을 그래프로 출력하는 테스트 예제를 작성해 보았다.

LPC1113 ADC초기화
void AdcInit(unsigned int AD_Chan)
{
    unsigned long reg;
    unsigned char CLKDIV;

    LPC_SYSCON->SYSAHBCLKCTRL |= (1<<13);
    CLKDIV = (uint8_t)ceil((double)SystemCoreClock/(double)4500000);
    reg = AD_Chan;
   
    InitAdcPort(AD_Chan);
   
    //ADC Clock 
    reg |= (CLKDIV << 8);
   
    LPC_ADC->CR = reg;
    LPC_ADC->INTEN = 0xFF & AD_Chan;
   
 LPC_ADC->CR |= (1 << 24);   
   
//    NVIC_EnableIRQ(ADC_IRQn);
}


ADC Read함수
unsigned int AdcRead(unsigned char port)
{
    return (0x3FF & (LPC_ADC->DR[port] >> 6));
}


LPC1113 ADC테스트 예제 코드
int main()
{
 unsigned int adc_value = 0;
 
    SystemInit();

    U0_Init(BAUD_115200);
    DebugPrint("LPC1K ADC Test\r\n");
   
    Led1Init();
    Led1On();

 //ADC 초기화
 AdcInit(BIT0);    

    while(1)
    {
  //LPC1K ADC Polling
  adc_value = AdcRead(BIT0);
  DebugPrint("%d\r\n", adc_value);
  Delay(10); 
 }
    
    return 0;
}


LPC1K ADC테스트 동영상
Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2011. 1. 1. 17:00

[LPC1K-SM EVM] 시리얼 포트 테스트

[LPC1K-SM EVM] 시리얼 포트 테스트




LPC1K UART의 특징으로 저렴한 MCU임에도 불구하고 16byte의 FIFO가 있어 UART통신에 있어 편리하고 고속으로 처리할 수 있다. 그리고 RS-485/EIA-485 9-bit모드를 지원하고 하드웨어 흐름제어도 지원한다고 한다.



LPC1113 UART초기화 함수
//------------------------------------------------------------------------------
// Serial Prot0 Utility Fuction Routine
void U0_Init(unsigned long baud)
{
    NVIC_DisableIRQ(UART_IRQn);
    
    //UART 클럭 초기화
    LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12);   // UART=1

    // Enable UART peripheral clock
    LPC_SYSCON->UARTCLKDIV = 0x01;      // DIV=1
    
    LPC_IOCON->PIO1_6 &= ~0x07;    /*  UART I/O config */
    LPC_IOCON->PIO1_6 |= 0x01;     /* UART RXD */
    LPC_IOCON->PIO1_7 &= ~0x07; 
    LPC_IOCON->PIO1_7 |= 0x01;     /* UART TXD */
 
 U0_SetBaud(baud);
}


1Byte 전송함수
void U0_PutByte(unsigned char Data)
{
    while ( !(LPC_UART->LSR & LSR_THRE) );
    LPC_UART->THR = Data;   
}

1Byte 수신함수
unsigned char U0_GetByte(void)
{
    while (!(LPC_UART->LSR & LSR_RDR));
    return LPC_UART->RBR;
}


LPC1K UART테스트 예제 코드
int main()
{
    SystemInit();

    U0_Init(BAUD_115200);
    DebugPrint("LPC1K UART Test\r\n");
   
    Led1Init();
    Led1On();
   
   
    Led2Init();
    Led2Off();
   
    while(1)
    {
        switch(U0_GetByte())
        {
        case '0':
            Led1Off();
            DebugPrint("LED OFF\r\n");
            break;
           
        case '1':
            Led1On();
            DebugPrint("LED ON\r\n");
            break;           
        }
    }
    return 0;
}
Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2011. 1. 1. 16:00

[LPC1K-SM EVM] LPC1113 실행속도 측정 테스트

[LPC1K-SM EVM] LPC1113 실행속도 측정 테스트

LPC1113은 저렴한 가격에 50Mhz로 동작가능 하다. 
12Mhz 클럭을 PLL을 이용해 48Mhz로 설정하고 속도 측정을 해 보았다.

LPC1111/12/13/14의 GPIO특징으로 AHB클럭을 페리 클럭으로 사용하기 때문에 GPIO속도가 빠르다고 한다.




간단히 GPIO 토글을 했을때 3Mhz가 출력되는것을 확인할 수 있다.
#define Led1Toggle()                             (LED1_PORT ^= LED1_BIT)

     15              while(1)
     16              {
     17                  Led1Toggle();
   \                     ??main_1:
   \   00000030   2168               LDR      R1,[R4, #+0]
   \   00000032   4140               EORS     R1,R1,R0
   \   00000034   2160               STR      R1,[R4, #+0]
   \   00000036   FBE7               B        ??main_1
   \                     ??main_0:
   \   00000038   FC3F0350           DC32     0x50033ffc
     18              }
     19              return 0;


[다른 MCU속도 측정 결과]와 비교 하면 AVR보다 저렴하면서 속도도 더 빠르게 동작하는것을 확인할 수 있다.



참고로 오버클럭으로 72Mhz로 설정해본 결과 4.5Mhz출력된다.
void SystemInit(void)
{
   _SystemInit();

    //Main Clock Frequenz einstellen - wird aus XTAL generiert*/
    SetMainClockFreq(72);
    
    //Enable AHB clock to the GPIO domain.
    //LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);
}



Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2011. 1. 1. 03:30

[LPC1K-SM EVM] 보드 제작 - 1$대 ARM Cortex-M0 LPC1113

[LPC1K-SM EVM] 보드 제작 - 1$대 ARM Cortex-M0 LPC1113



1$대 저렴한 ARM Cortex-M0코어 NXP사의 LPC1K (LPC1111, LPC1112, LPC1113) 호환 테스트 보드를 제작했다.
아무래도 소형에 저렴함을 자랑으로 하는 LCP1000시리즈는 간단한 프로젝트에는 적용하기 좋을것 같다.



SM-Type으로 USB2UART, Bluetooth, Zigbee 모듈을 연결가능하다. LCP1K의 경우 시리얼 포트를 이용하여 플래시 라이트가 가능하기 때문에 특별한 개발장비 없이 프로그램을 다운로드 할 수 있다.



확장 테스트 보드







LCP1K 보드 회로도






Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2010. 11. 17. 21:30

LPC1113, LPC1100 개발환경 설정 - IAR을 이용한 무료 컴파일 환경 설정

LPC1113, LPC1100 개발환경 설정 - IAR을 이용한 무료 컴파일 환경 설정

IAR 5.4이상 부터 Cortex-M0를 지원한다. LPC1113은 24K Flash를 가지고 있으므로 IAR무료 버전(32k 제한)을 이용하면 무료 컴파일러를 사용할 수 있다.

IAR홈페이지에서 무료버전을 다운 받아 설치하고 실해행하여 새로운 Workspace를 생성한다.



워크스페이스가 생성되면 새로운 프로젝트 만든다.



General Options 에서 Core 옵션을 Cortex-M0로 선택한다.
(아직 초기 버전이라 디바이스 리스트에는 없는것 같다.)



라이브러리를 "FULL" 선택한다. (꼭 필요한것은 아니지만 printf나 C기본 함수를 사용하려면 필요하다.)



C/C++ Compiler 옵션에서 옵티마이즈를 설정한다.



Preprocessor 탭에서 적절히 환경 설정을 한다.


$PROJ_DIR$\
$PROJ_DIR$\..\
$PROJ_DIR$\..\01_drv\
$PROJ_DIR$\..\01_drv\lpc1k\


Output Converter 옵션 설정. NXP에서에서 제공하는 시리얼 다운로드는 Hex파일을 지원하므로 Hex로 생성할 필요가 있다.




Linker 옵션. 링크 스크립트 파일 설정


OJ_DIR$\LPC1114_Flash.icf


옵션 설정이 끝나면 드라이버 파일 추가하고 main프로그램을 작성하여 컴파일 할 수 있다.
Posted by nexp

댓글을 달아 주세요