[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]/LPC1k2013. 10. 4. 12:11

LPC1113 내부클럭 사용하기

LPC1113 내부클럭 사용하기

LPC1K의 클럭은 외부 X-TAL 및 내부 RC OSC로 구동 가능하다. 

정밀 클럭이 필요없는 시스템에서 저렴하게 보드 구성할때 사용하면 좋을것 같다.


내부 클럭으로 설정하고 UART통신 잘되는것을 확인했다.



LPC1K 클럭 시스템 블록도

SYSPLLCLKSEL 레지스터를 이용하여 내부클럭 외부 클럭을 설정할 수 있다. MAINCLKSEL 레지스터에서 PLL 설정 여부를 선택할수 있다.












config.h 파일에서 클럭을 설정할수 있도록 수정했다.

#define SEL_IRC                         0
#define SEL_XTAL                        1
#define SYSPLLCLKSEL_Val                SEL_IRC 



system.c 파일도 수정이 좀 필요하다.

void SystemInit(void)

{

_SystemInit();


SetMainClockFreq(48);

              :



Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2011. 10. 25. 22:30

[LPC1K-SM EVM] VS1033 을이용한 MP3 출력 테스트

[LPC1K-SM EVM] VS1033 을이용한 MP3 출력 테스트


VS1033 MP3 디코드모률을 이용하면 LPC1100과 같은 저가형 MCU에서 쉽게 MP3출력이 가능하다. [EXP-DSP EVM] 보드는 VS1033모듈을 쉽게 연결하여 테스트 할 수 있다.

VS1033 모듈 핀맵
SPI를 위한 3개핀과 아래 제어핀 4개가 필요하다.



LPC1111을 사용할 때는 아래 두 핀은 점퍼로 할당이 필요하다.
DREQ     -> P_A3(P1.11)
MP3_CS -> P_A4(P0.10)







Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2011. 10. 24. 23:51

[LPC1K EVM] LPC1100 TFT LCD테스트 (LCD_IF_P Board)

[LPC1K EVM] LPC1100 TFT LCD테스트 (LCD_IF_P Board)


소형에 저렴한 (현재 쇼핑몰에서 1000원대에 판매하고 있다. 링크) MCU에도 불구 하고 기능이 좋아 여러곳에 사용기 좋은것 같다. SD Card의 이미지 파일을 TFT LCD에 출력하는 테스트를 해 보았다.





[LPC1113 EVM] TFT-LCD 테스트 동영상

보드 특성상 Data가 0~7의 순서로 되어 있지 않아 추가적인 비트 조작이 필요 하고  SPI클럭이 최대 12Mhz이기 때문에 속도는 조금 느려 보이는데 가격대비 성능비로는 아주 만족할만하다.




LPC1100에서 일부 핀들은 디폴트가 JTAG으로 할당되어 있기 때문에 GPIO로 설정할 필요가 있다.

    LPC_IOCON->JTAG_TDO_PIO1_1  &= ~0x07;
    LPC_IOCON->JTAG_TDO_PIO1_1  |= 0x01;

    LPC_IOCON->JTAG_TMS_PIO1_0  &= ~0x07;
    LPC_IOCON->JTAG_TMS_PIO1_0  |= 0x01;

    LPC_IOCON->JTAG_nTRST_PIO1_2  &= ~0x07;
    LPC_IOCON->JTAG_nTRST_PIO1_2  |= 0x01;
   
    LPC_IOCON->ARM_SWDIO_PIO1_3  &= ~0x07;
    LPC_IOCON->ARM_SWDIO_PIO1_3  |= 0x01;
   
    LPC_IOCON->PIO0_7  &= ~0x07;
    LPC_IOCON->PIO0_3  &= ~0x07;
    LPC_IOCON->PIO3_2  &= ~0x07; 




TFT LCD제어 드라이버 코드

//-----------------------------------------------------------------------------
//TFT LCD
#define TFT_DRV_HD66791                 0
#define TFT_DRV_COM44                   1

#define LCD_LAT_BIT      BIT5
#define LCD_LAT_PORT     PORT3
#define LCD_LAT_ON()     Sbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_LAT_OFF()     Cbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_DATA_LATCH()    LCD_LAT_ON();LCD_LAT_OFF();

#define LCD_EN_BIT      BIT3
#define LCD_EN_PORT      PORT0
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      //BIT8
#define LCD_RST_PORT     //PORTB
#define LCD_RST_ON()     //Sbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_OFF()     //Cbi(LCD_RST_PORT, LCD_RST_BIT)

#define LCD_RS_BIT      BIT7
#define LCD_RS_PORT      PORT0
#define LCD_RS_OFF()     Cbi(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_RS_ON()      Sbi(LCD_RS_PORT, LCD_RS_BIT)

#define LCD_WR_BIT      BIT2
#define LCD_WR_PORT      PORT3
#define LCD_WR_OFF()     Cbi(LCD_WR_PORT, LCD_WR_BIT)
#define LCD_WR_ON()      Sbi(LCD_WR_PORT, LCD_WR_BIT)

#define LCD_RD_BIT      //BIT5
#define LCD_RD_PORT      //LATD
#define LCD_RD_OFF()     //Cbi(LCD_RD_PORT, LCD_RD_BIT)
#define LCD_RD_ON()      //Sbi(LCD_RD_PORT, LCD_RD_BIT)

#define LCD_BL_BIT      BIT4
#define LCD_BL_PORT      PORT3
#define LCD_BL_OFF()     Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(LCD_BL_PORT, LCD_BL_BIT)

#define _LCD_DAT_OUT(Data)    DataOut((Data>>8));\
                                     LCD_DATA_LATCH();\
                                     DataOut(Data&0xFF);

//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2011. 10. 19. 10:46

[LPC1111 EVM] W5200 TCP/IP 테스트

[LPC1111 EVM] W5200 TCP/IP 테스트


하드웨어 TCP/IP W5200모듈을 NET-EXP보드에서 테스트 했다.

LPC1100
Cortex-M0코어의 저렴한 LPC1113의 SPI최대 속도가 12Mhz이고 W5200 TCP전송 속도는 1.5Mbps정도 나온다.
[1] iInChip Send: 1.5744 Mbps(3966014 bytes, 19.2184 sec)
iInChip Recv: 1.5546 Mbps(3966014 bytes, 19.4632 sec)
------------------------------------------------------------
[2] iInChip Send: 1.5687 Mbps(3966014 bytes, 19.2887 sec)
iInChip Recv: 1.5694 Mbps(3966014 bytes, 19.2800 sec)
------------------------------------------------------------



LCP1100 핀맵


[NET-EVM] W5100 핀맵 회로도



LPC1113 W5200 테스트 드라이버 코드
#define _SPI0_ENABLE    1

//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     PORT0
#define W5100_CS_BIT     BIT2

#define W5100_RST_PORT     PORT0
#define W5100_RST_BIT     BIT1

#define IINCHIP_RSToff()    Cbi(W5100_RST_PORT, W5100_RST_BIT) 
#define IINCHIP_RSTon()     Sbi(W5100_RST_PORT, W5100_RST_BIT)


#define W5100_IO_INIT()     GPIOSetDir( 0, 1, 1 );GPIOSetDir( 0, 2, 1 );

#define IINCHIP_CSoff()     Cbi(W5100_CS_PORT, W5100_CS_BIT)
#define IINCHIP_CSon()     Sbi(W5100_CS_PORT, W5100_CS_BIT)

#define IINCHIP_SPI_INIT()    SPI0_Init()
//#define IINCHIP_SpiSendData   SPI0_WriteByte
#define IINCHIP_SpiSendData    SPI0_WriteReadByte
#define IINCHIP_SpiRecvData    SPI0_WriteReadByte
//-----------------------------------------------------------------------------




Posted by nexp

댓글을 달아 주세요