[NXP]/LPC1k2016. 8. 29. 15:16

LPC1113 / LPC1114 UART 인터럽트 테스트

LPC1113 / LPC1114 UART 인터럽트 테스트



LPC1114 UART 인터럽트 초기화 함수

void U0_SetInt(void)

{

    NVIC_EnableIRQ(UART_IRQn);


    LPC_UART->IER = IER_RBR | IER_RLS; /* Enable UART interrupt */

}




LPC1114 인터럽트 핸들러 함수


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//-----------------------------------------------------------------------------
#pragma diag_suppress=Pa082
void UART_IRQHandler(void)
{
    uint8_t IIRValue, LSRValue;
    unsigned char temp;
    
    IIRValue = LPC_UART->IIR;
 
    IIRValue >>= 1;            /* skip pending bit in IIR */
    IIRValue &= 0x07;            /* check bit 1~3, interrupt identification */
    
    if (IIRValue == IIR_RLS)        /* Receive Line Status */
    {
 
    }
    else if (IIRValue == IIR_RDA)    /* Receive Data Available */
    {
        temp = LPC_UART->RBR;
        U0_PutByte(temp);
    }
    else if (IIRValue == IIR_CTI)    /* Character timeout indicator */
    {
 
    }
    else if (IIRValue == IIR_THRE)    /* THRE, transmit holding register empty */
    {
 
    }
}
#pragma diag_default=Pa082
//-----------------------------------------------------------------------------
cs





Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2015. 8. 9. 23:00

LPC1313 성능 테스트

LPC1313 성능 테스트



LPC1313은 Cortex-M3코어에 72Mhz로 동작한다. 가격은 1$ 정도로 저렴해서 가격이 민감한 어플리케이션에 좋을것 같다.


LPC1114 의 GPIO 제어 속도와  비교해교 해면 좋을것 같다.

결론적으로는 3Mhz -> 4.5Mhz 로 좋아진것 같다. GPIO On/Off만 했을때 16Mhz로 측정된다.






디폴트로 외부 12Mhz 클럭으로 설정되어 있기 때문에 PLL을 이용하여 72Mhz로 설정해 주었다.

#define CLOCK_SETUP           1

#define SYSCLK_SETUP          1

#define SYSOSC_SETUP          1

#define SYSOSCCTRL_Val        0x00000000

#define WDTOSC_SETUP          0

#define WDTOSCCTRL_Val        0x000000A0


//내부 OSC 사용

#define SYSPLLCLKSEL_Val      0x00000000

#define SYSPLL_SETUP          1

#define SYSPLLCTRL_Val        0x00000025


//메인 클럭으로 PLL 사용

#define MAINCLKSEL_Val        0x00000003


#define USBCLK_SETUP          0

#define USBPLL_SETUP          0

#define USBPLLCLKSEL_Val      0x00000001

#define USBPLLCTRL_Val        0x00000003

#define SYSAHBCLKDIV_Val      0x00000001

#define AHBCLKCTRL_Val        0x0001005F



LPC1313 의 시스템 클럭 블록도






단순 토글 만 했을 경우 4.5Mhz 로 측정된다.

     26              while(1)

     27              {

     28                  LPC_GPIO3->DATA ^= LED1_BIT;

   \   00000024   0x6801             LDR      R1,[R0, #+0]

   \   00000026   0xF081 0x0110      EOR      R1,R1,#0x10

   \   0000002A   0xE7FA             B.N      ??main_1

   \                     ??main_0:

   \   0000002C   0x40048080         DC32     0x40048080

   \   00000030   0x50038000         DC32     0x50038000

   \   00000034   0x50033FFC         DC32     0x50033ffc




아쉬운점은 LPC 1xxxx 시리즈는 Set, Clear, Toggle 레지스터가 없다. 그래서 위애서 처럼 비트 제어하게 되면 두번의 명령어로 처리된다.

대신 MASKED_ACCESS 레지스터를 이용하여 비트제어를 한 명령어에 실행 되도록 할 수 있다.

이렇게 하면 7.2Mhz 정도로 출력된다.



MASKED_ACCESS 레지스터를 이용해 한명령어로 비트 제어 가능하다.

       24              while(1)

     25              {

     26                  LPC_GPIO3->MASKED_ACCESS[BIT4] = BIT4;     

   \                     ??main_0: (+1)

   \   0000003E   0x2110             MOVS     R1,#+16

   \   00000040   0x6001             STR      R1,[R0, #+0]

     27                  LPC_GPIO3->MASKED_ACCESS[BIT4] = 0;

   \   00000042   0x2100             MOVS     R1,#+0

   \   00000044   0x6001             STR      R1,[R0, #+0]

   \   00000046   0xE7FA             B.N      ??main_0




GPIO On/Off 를 했을경우 8Mhz 로 측정된다. 경쟁사 Cortex-M3 코어의 STM32F103 과 속도 비교해 보면 별차이가 없는것 같다. 그리고 가격적으로는 상당히 저렴하다는 장점이 있다.

     24              while(1)

     25              {

     26                  LPC_GPIO3->DATA = BIT4;

   \                     ??main_0: (+1)

   \   0000003C   0x2010             MOVS     R0,#+16

   \   0000003E   0x6020             STR      R0,[R4, #+0]

     27                  LPC_GPIO3->DATA = 0;

   \   00000040   0x2000             MOVS     R0,#+0

   \   00000042   0x6020             STR      R0,[R4, #+0]

   \   00000044   0xE7FA             B.N      ??main_0




GPIO On/Off 후 Main으로 복귀하는 명령어 때문에 실제 속도와는 차이가 있는데 On/Off 를 많이 반복해 보면 평균 속도가 나오는데...

이때 17.8Mhz 로 측정된다. 경쟁사 Cortex-M3 코어의 STM32F103 과 속도 비교해 보면 별차이가 없는것 같다. 그리고 가격적으로는 상당히 저렴하다는 장점이 있다.


     26              while(1)

     27              {

     29                  

     30                  LPC_GPIO3->DATA = 0;

   \   00000024   0x2100             MOVS     R1,#+0

   \   00000026   0x6001             STR      R1,[R0, #+0]

     31                  LPC_GPIO3->DATA = LED1_BIT;

   \   00000028   0x2110             MOVS     R1,#+16

   \   0000002A   0x6001             STR      R1,[R0, #+0]

     32                  

     33                  LPC_GPIO3->DATA = 0;

   \   0000002C   0x2100             MOVS     R1,#+0

   \   0000002E   0x6001             STR      R1,[R0, #+0]

     34                  LPC_GPIO3->DATA = LED1_BIT;

   \   00000030   0x2110             MOVS     R1,#+16

   \   00000032   0x6001             STR      R1,[R0, #+0]

   








Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2015. 8. 9. 22:00

LPC13xx IAR 개발 환경 설정

LPC13xx IAR 개발 환경 설정




기존 LPC1K EVM에서는 IAR5.4 버전을 이용하고 있었는데 LPC1313 IAR 6.x 버전을 이용해야 한다. 무엇보다 기존 IAR 5.4 버전 예제는 IAR 6.x대에서컴파일이 되지 않는 문제를 해결해기 위해 새롭게 테스트 해보았다.


IAR 6.x 버전에서는 LPC1313 을 지원한다.




개발환경 설정은 상당히 간단하다.  NXP사에서 제공하는 startup_LPC13xx.s, system_LPC13xx.c 파일을 추가 하고 필요에 따라 Drivers 폴더에 있는 파일을 Lib 파일을 추가 해 주면 된다.



헤더파일 패스 설정





IAR 6.x 버전을 사용하면 무엇보다 JTAG를 이용하여 디버깅 가능하다.




LPC1313 을 IAR개발 환경으로 셋업 완료후 기존 LPC11xx 에 테스트 하던 코드로 테스트 해보니 대부분 코드 수정없이 사용가능한것 같다.






Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2015. 8. 9. 21:00

[LPC1313 EVM] 테스트 보드 제작

[LPC1313 EVM] 테스트 보드 제작





Cortex--m3 코어 72mhz로 구동되는 NXP사의 LPC13xx 시리즈를 테스트 해 보았다

Cortex-m0 코어의 LPC1K 와 핀맵핑이 동일 하기 때문에 기존 PCB에서 테스트 가능하다.

가격도 저렴하다. 테스트시에는 고성능의 LPC13XX 로 개발하고 양산시에 LPC11XX로 변경해도 좋을것 같다





Cortex-M3코어지만 페리스펙은 상당히 빈약하다. 저렴한 가격에 72Mhz 속도에 만족 해야 할것 같다.


 



SM-Type EVM 형태의 표준 핀맵으로 제작해서 기존 확장보드에 연결하여 쉽게 테스트 가능하다.








LPC1313 EVM 회로도

기존 LPC1K 회로와 동일하며 JTAG(SDW) 커넥터가 추가되어 디버깅 쉽게 가능하도록 했다.


Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2013. 10. 4. 12:15

LPC1112LVFHN24 - 24핀 소형 Cortex-M0

LPC1112LVFHN24 - 24핀 소형 Cortex-M0


LCP1K 시리즈로 소형 패키지들이 많이 출시되고 있다.

가격도 저렴하고 소형이라 여러 용도로 사용하기 편리할것 같다.


기존 LCP1K 동일한 스펙이고 패키지가 작아진것 같다.






Posted by nexp
TAG LPC1112, LPC1K

댓글을 달아 주세요