LPC2106 시리얼 포트 데이터 출력 예제

마이크로 프로세에서 포트 I/O 다음으로 많이 사용하는 것이
시리얼 데이타 입출력 장치입니다. 

이번 실험은 가장 간단한 LPC2106 프로세서 기본 회로를 구성하고
ICC v7 ARM 컴파일러를 이용하여 LPC2106 프로세서에서 
ASCII 코드를 0x00 부터 0x7F 까지 1 씩 증가해가며 4800BPS 의 속도로
 연속해서  출력하는 프로그램을 만듭니다.

Philips 사에서 제공한 프로그래밍 유틸리티를 사용하여 LPC2106 
프로세서의 FLASH 메모리에 HEX 파일을 프로그래밍 합니다.
Philips 사이트에서 최신 ISP 프로그램을 다운 받아 설치합니다. 
http://www.standardics.philips.com/support/techdocs/microcontrollers/zip/flash.isp.utility.lpc2000.zip
그리고 LPC2106 의 시리얼 포트를 PC 의 Com1 포트에 연결하고 
PC로 입력되는 데이터를 하이퍼 터미널(Windows 기본 프로그램)을
이용하여 LPC2106의 동작상태를 확인합니다.

*** PC 의 시리얼 포트 ***
PC 의 통신 포트가 Com1 일 필요는 없습니다. 다만 설명의 편의상 Com1 이라고
표기합니다. 또한 Note PC 와 같이 시리얼 포트가 없을 때는 USB-Serial
변환기를 사용하면 됩니다. 이 실험은 SE-ARM-P , SE-2106SK 를 이용하여
실험하였으나 ISP 다운로드가 가능한 형태로 하드웨어가 만들어져 있다면 
모두 같은 방법으로 실험할 수 있습니다.
하드웨어적으로 연결된 통신 포트 번호가 무었인지는
실험자는 알고 있어야 합니다. LPC2106과 연결된  Com 포트 
번호를 모른 다면 제어판에 가서 PC 의 통신 포트 번호가 어찌 되는지
확인하여야 합니다. 

STEP1 : 제어판 가서 시스템을 클릭하세요

STEP 2: 하드웨어 탭을 클릭하세요

STEP 3: "장치 관리자"버튼을 클릭하세요

STEP 5: 포트(COM 및 LPT)를 클릭하여 하위 종목이 보이도록 하세요

*** LPC2106 의 ISP 모드***
LPC2106 프로세서는 시리얼 포트를 연결하여 FALSH 메모리에
HEX 파일을 다운로드 할 수 있습니다. 
ISP 기능 이라고 하며 Philips사의 공장 출고 시 LPC2106에는 
ISP 기능이 프로그램 되어 있습니다.
LPC2106 프로세서에 RS-232 레벨 컨버터를 부착하고
PC 의 시리얼 포트를 연결하면 됩니다. 특별한 프로그램 장치가
필요치 않습니다. LPC2106 은 RESET 후 사용자 프로그램을
실행할 것인지 ISP 모드로 동작할 것인지를 P0.14 의
상태를 보고 판단합니다. 0 이면 ISP 모드이고 1 상태이면 
사용자 프로그램 동작 모드 입니다. 하드웨어 설계시 P0.14는 입력모드로
사용하지 않아야 합니다. P0.14 는 출력으로만 사용하도록 
시스템 설계 시 고려하여야 합니다.
P0.14 를 0 으로 만든 상태에(노란색 스위치를 누르고)서 RESET(빨간색 스위치를 누른다) 하면
 LPC2106 은 ISP 대기 상태가 됩니다.

*** ISP 모드가 동작하지 않을 때 ***
빨간색 버튼을 떼기 전에  먼저 노란색 버튼을 떼면 ISP 모드가 되지 않습니다.
빨간색 스위치와 노란색 스위치를 동시에 눌렀다가 떼었는데 ISP 가
 안 되면 차분하게 다시 시도해 보기 바랍니다.
RESET 개념을 잘 생각하셔야 합니다. 
LPC2106 이 리셋 된다는 이야기는 RESET 핀이 잠시 0 으로 만드는 것이며 
 RESET 이 되면 그 전의 P0.14 상태가 어찌 되었든 모르는 것입니다. 
RESET 핀이 0 상태에서 1 상태로 변하기 전에 
P0.14를 1 로 만들어 버리면 LPC2106 은 절대로 ISP 모드로 되지 않습니다. 
LPC2106 은 RESET 핀이 0 에서 1 로 된 후(이것을 RESET 이라고 합니다)
 P0.14 의 핀 상태를 체크합니다. 이때 0 이면 ISP 모드로 들어가고 
1 상태 이면 사용자 프로그램 실행 모드로 들어 갑니다.


*** 아직도 무슨 말인지 이해가 안되시면 이렇게 하세요 ***

1: 노란색 스위치(ISP)를 누르고 계세요 (떼지 마세요)
2: 빨간색 스위치(RESET)를 눌렀다가 떼세요.(노란색 스위치는 계속 누르고 계세요)
3: 이제 노란색 스위치(ISP)를 떼세요.

ICC ARM 컴파일러 데모버젼 다운로드/설치

STEP 1: ImageCraft 사의 홈페이지로 갑니다.
http://www.imagecraft.com/software/index.html
왼쪽의 메뉴에서 Demos/Upgrades를 선택합니다.

STEP 2: ICCV7 for ARM DEMO VERSION 을 클릭하고 파일을 저장후 설치 합니다.
ICCV7 for ARM DEMO VERSION

 ICC v7 ARM 컴파일러를 이용하여 시리얼 데이터 출력 프로그램 작성


STEP 1: ICC v7 ARM 컴파일러를 실행합니다. 설치 후 45일까지는  HEX 파일 출력 크기 제한은 없습니다만 45일이 지나면 10K Bytes(바이너리 코드) 까지 HEX 파일이 출력됩니다.

STEP 2: 개발 타겟 시스템의 프로세서 종류를 지정해야 합니다. Project -> Options를 선택합니다.

STEP 3: Target 탭에서 Device configuration 에서 CPU 종류를 LPC2106 으로 선택합니다.
"OK" 버튼을 클릭하고 빠져 나갑니다.

STEP 4: 프로젝트 파일을 만들어야 합니다.  Project -> New 를 클릭합니다.

STEP 5: 프로젝트 파일을 저장할 새로운 폴더를 생성하고 프로젝트 이름을 지정합니다.
 serial-out 으로 입력합니다.

STEP 6: Project 창에서 serial-out 이란 프로젝트가 만들어진 것을 확인합니다.

STEP 7: 초기화 프로그램을 만들어야 하는데 ICC v7 ARM 컴파일러에서 지원하는 Application Builder 기능을 이용합니다. Tools -> Application Builder를 클릭합니다.

STEP 8: 프로세서 제조회사와 프로세서 이름을 선택합니다. "OK" 버튼을 클릭합니다.

STEP 9: Application Builder 창이 나옵니다. Initialization 탭을 클릭합니다.

STEP 10: 크리스탈 주파수를 10MHz 로 지정합니다.
Ports 탭을 클릭합니다.

STEP 11: Ports 에서 0 을 U0TX 로 1 을 U0RX로 선택합니다.
UART 탭을 클릭합니다.

STEP 12: UART0 에서 Use UART0 와 UART0 Enable을 선택합니다.
Desired baud 를 4800 으로 선택합니다. Generate 탭을 선택합니다.

STEP 13: include main() 을 선택합니다.
"Preview" 버튼을 클릭하면 설정한 내용대로 초기 프로그램이 생성됩니다.
"Exit and generate" 버튼을 클릭하여 Application builder 를 종료합니다.

STEP 14: 자동 생성된 초기 프로그램을 저장하여야 합니다. File -> Save As 를 클릭합니다.

STEP 15: 프로그램의 이름을 지정합니다. 프로젝트 이름과 동일한 것으로 입력하는 것이 관리하기 편리합니다. serial-out.c 로 입력합니다.

STEP 16 : 프로젝트 파일에 serial-out.c 프로그램을 등록하여야 합니다.
Project -> Add File(s)를 클릭합니다.

STEP 17: serial-out.c 를 선택하고 "열기" 버튼을 클릭합니다.

STEP 18: Project 창에 serial-out.c 가 들어간 것을 확인합니다.

STEP 19: 1 바이트를 UART0 로 출력하는 프로그램을 입력합니다.

void main()
{
unsigned char c;
// 변수 선언

init_devices();

while(1) {
while(!(UART0_LSR & 0x20));
// 버퍼가 비여 있을 때까지 대기
UART0_THR = c;
// 1 문자 전송
c++;
// 다른 문자
c = c & 0x7F;
// 7 비트 ASCII 코드 마스크

}
}

STEP 20: 프로그램을 컴파일하여 HEX 파일을 만듭니다.
Project -> Rebuild All 을 클릭합니다.

STEP 21: Output 창에서 컴파일 결과가 표시됩니다.
이제 다운로더 프로그램 LPC200 Fash Utility를 이용하여 HEX 파일을 Flash 메모리에 라이팅 할 수 있습니다.

 LPC2106 FLASH 메모리에 HEX 파일 라이팅

Philips 사이트에서 최신 ISP 프로그램(Flash Utility)을 다운 받아 설치합니다. 
http://www.standardics.philips.com/support/techdocs/microcontrollers/zip/flash.isp.utility.lpc2000.zip


STEP 1: PC 의 시리얼 포트(Com1:) 과 LPC2106 프로세서를 연결합니다.
XTAL 주파수를 LPC2106 에 연결된 크리스탈 주파수로 맞추어야 합니다. 주파수 단위가 KHz 인것에 조심하여야 합니다. 예를 들어 크리스탈 주파수가 10MHz 일 때 10000으로 입력하여야 합니다.

STEP 2: "Read Device ID" 버튼을 클릭합니다. LPC2106 프로세서의 P0.14 (ISP 선택)를 Low 로 만들고 LPC2106 을 Reset 합니다.

1: 노란색 스위치(ISP)를 누르고 계세요 (떼지 마세요)
2: 빨간색 스위치(RESET)를 눌렀다가 떼세요.(노란색 스위치는 계속 누르고 계세요)
3: 이제 노란색 스위치(ISP)를 떼세요.


STEP 3: 파일선택 버튼을 클릭합니다.

STEP 4: HEX 파일을 선택합니다.

STEP 5: "Upload Flash" 버튼을 클릭합니다.
LPC2016을 Reset 하면 프로그램이 실행됩니다.

*** 다운로드를 완료하였으면 LPC2106과 연결된 시리얼 포트를 하이퍼 터미널에서 사용하기 위하여 반드시 Flash Utility를 종료 합니다. ***

하이퍼 터미널을 이용하여 결과 확인


*** 먼져 FLASH UTILITY 를 종료 하세요 ***
하이퍼 터이멀 프로그램을 시작합니다. 하이퍼 터미널 프로그램은 Windows 에 기본으로 설치되어 있는 프로그램입니다.
시작-> 모든 프로그램 -> 보조 프로그램 -> 통신 -> 하이퍼 터미널을 클릭합니다.
이름과 아이콘을 선택하고 "확인"을 클릭합니다.

연결 대상에서 연결에 사용할 모뎀을 Com1 으로 지정합니다.

Com1 등록정보에서 통신속도 (비트/초)를 4800 으로 지정하고 흐름제어를 없음으로 선택합니다.

LPC2106 의 시리얼 포트로 부터 나오는 ASCII 코드가 표시됩니다.
여기서 하이퍼 터미널 창에 아무 반응이 없으면 PC 의 키보드의 아무 키나 계속 누르고 LPC2106 보드의 RxD 에 연결된 LED 의 상태를 보세요. 반짝이지 않는다면 통신 포트 번호가 잘못된 것입니다. 반짝인다면 LPC2106 보드의 하드웨어가 문제가 있거나 HEX 파일이 정상적으로 다운로드 된 것이 아닙니다. 또는 아직도 FLASH UTILITY 가 종료하지 않고 살아 있는 경우 입니다.