C컴파일러를 이용하여 ST7FLITE 제어하기 헥사 파일을 플래시 메모리에 로드하는 방법<3> |
독자들이 쉽게 마이컴을 제어하는 기술을 익히는 것을 목표로 하여 C에 대한 전반적인 이해와 마이컴에서 사용하는 C언어 기술을 토대로 8비트 마이컴 ST7LFLITE에 대한 구조를 통해서 마이컴을 사로잡아 보기로 하자. 제 3부에서는 마지막으로 C컴파일러를 통해 생성된 헥사 파일을 플래시 메모리에 로드하는 방법과 주변장치를 중심으로 설명한다. 글 │남정훈 차장, ST마이크로일렉트로닉스 한국지사 |
Flash 메모리에 프로그램 로드하기 프로그램을 다운로드하기 위해 기본적으로 타깃 보드 또는 MCU의 ICC 핀이 연결되어 있어야 된다. ST7-FLITE29의 경우 기본 적으로 ICCDATA,ICCCLK, ICCRESET, GND만 연결되어 있으면 프로그램이 가능하다. 하지만 Programming Mode에 따라 ICCOSC 핀의 연결도 필요하다. 일반적으로 ST7 플래쉬 마이크로컨 트롤러에서 ICP 기능에서 필요한 신호는 최소한 4~5개이고 ST-LODIN7과 같은 인터페이스 보드에서 ICC 컨넥터로 연결된 신호는 6~7개이다.(그림 1) ▶ ICC 컨넥터에서 필수적인 신호는다음의 4~5개이다. - GND : 접지 - ICCDATA : ICP가 동작 중일 때 어플리케이션 보드에서는 1mA 이상의 전류가 흐르지 않아야 한다. - ICCCLK : ICP가 동작 중일 때 어플리케이션 보드에서는 1mA 이상의 전류가 흐르지 않아야 한다. - ICCRESET : ICP가 동작 중일 때 어플리케이션 보드에서는 5mA 이상의 전류가 흐르지 않아야 한다. - ICCSEL_VPP : 애플리케이션 보드에서 10KW 이상의 풀-다운 저항이 있어야만 한다(ST7FLITE 시리즈에는 존재하지 않는다). ▶ 부가적인 2개의 신호 - VDD_appli : ST-LODIN에서는 부하쪽에서 200mA 정도까지 사용 가능하다. - ICCOSC : 안전한 클럭, 만약 ICP_OPT_Disable Programming Mode에 있다면 필요하다. 그리고 ST7 플래쉬 애플리케이션 클럭이 0V에서 Vdd까지 스윙하는 Square Wave가 아닐 경우 예를 들어 내부 RC 오실레이터를 이용하거나 OSC1/OSC2 핀에 RC나 Resonator가 연결되어 있을 경우에 필요하다. 이 경우 ICCOSC는 OSC1 또는 CLKIN 핀에 반드시 연결되어 있어야만 한다. ICC 인터페이스가 연결되어 있다면 *.hex 또는 *.s19와 같은 헥사 파일을 생성하는 방법에 대해 설명하겠다. 1부에서 이야기했던 STVD3.2 개발환경에서 Project Settings 창의 Linker 탭을 선택하고 Category 창에서 Output을 선택하면 그림 2와 같이 나타난다. 그림 2에서와 같이 Output 메뉴를 Customize로 설정하고‘Generateboth S-Record file and abs file’을 선택하고 컴파일을 진행하면 D:\ST7-FLITE29\Release 폴더 아래 프로젝트명과 같은 이름의 ‘gpio.s19’파일이 생성된다. 이때 생성된 *.19 파일을 플레쉬에 다운로드하기 위해서는 STICK 또 는 ST7MDT20-DVP3와 같은 하드웨어적인 인터페이스 장치가 필요하다. 여기서는 가격이 저렴한 인셈의 ST-LODIN7을 기준으로 설명하겠다.(그림 3) ST7 Toolset을 프로그램 인스톨 시개발환경인 ST7 Visual Develop과 함께 설치된 ST7 Visual Programmer가 설치되어 있다. 프로그램 실행은‘시작 -> 프로그램 -> ST7 Toolset ->Development Tools -> ST7 Visual Programmer’를 실행시킨다. 그림 4와 같이 사용하는 장비에 따라 Hardware를 선택하고 사용 인터페이스에 맞춰 STICK -> ICP OPT Disable -> ST7FLITE29 선택한다.(이때 ICP OPT Disable 모드로 사용하기 위해서는 ST-LODIN7의 9번 ICCOSC핀과 ST7FLITE29의 PB4 (CLKIN)번 핀이 반드시 연결되어 있어야 한다.) ▶ Programming Mode에서의 각 모드에 대해서 좀 더 설명하면 - ICP : Option byte에서 OSCTYPE을 선택하지 않고 프로그래밍 하는 모드이다. ST7FLITE19B와 같이 최근에 추가 되는 디바이스는 ICP 모드를 지원한다. - ICP OPT Disable : 가장 안전한 프로그래밍 모드이다. 이 모드는 ICP OPT Enable 구성 시 동작하지 않을때 이용해야 한다. 즉 이용하고 있는 Application Clock 회로가 이전 프로그램된 Option byte의 OSCTYPE과 매칭이 되지 않을 경우이다. 프로그래밍 모드에서는 0V에서 Vdd까지의 Square Wave 신호가 외부 클럭 소스로 사용되어야만 한다. 이 클럭은 Application Board에서 공급될 수도 있고 ICC 컨넥터의 9번핀(ICCOSC Safe Clock)에서 공급 될수도 있다. - ICP OPT Enable : 이 모드에서는단지 ST7 Flash를 ex-factory(공장에서 설정된 기본값)로 이용하거나 혹은 이미 프로그램된 Option byte의 OSCTYPE이 현재의 Application Board에서의 clock 회로가 같을 경우만 가능하다. 이때 ICC 컨넥터의 9번 핀인 ICCOSC Safe Clock은 필요가 없다.그림 5와 같이 Visual Programmer창이 나타날 것이다. 위 창에서‘File ->Open’버튼을 눌러 MCU에 Writing 할 소스 파일(*.hex 또는 *.s19) 파일을 불러온다.Writing할 소스 파일을 불러 오면‘OPTION BYTE’탭을 눌러 사용할 디바이스에 맞게 옵션을 설정한다.(그림 6) 그림 7과 같이 설정이 모두 끝이 나면‘Program all tabs’버튼을 눌러 MCU에 Writing을 진행한다. 옵션 바이트 및 프로그래밍과 관련된 좀더 자세한 내용 및 설정은 디바이스의 데이터 쉬트 또는‘마이컴 C로잡기’책자를 참조하기 바란다. ST7FLITE29의 I/O 포트 및 타이머 기능 활용하기 우리가 사용하는 모든 시스템에는 입력과 출력이 있다. 그림 8과 같이 시스템은 주어진 입력에 대해 출력을 내보낸다. 가정에서 흔히 접할 수 있는 계산기,TV, 세탁기 등을 비롯하여 건물의 엘리베이터까지 모든 것은 시스템이라 할 수 있고 입력과 출력이 있다.우리가 주로 다루는 디지털 시스템에는 마이크로컨트롤러(이하 MCU)가 내장되어 있고, MCU가 입력을 받아 처리를 한 후 출력으로 내보낸다. 계산기를 예로 들자면 계산기 내부에 MCU를 포함하는 시스템이 있고, Key(계산기의 숫자판)가 입력에 해당하고 LCD가 결과를 표시하는 출력에 해당한다. 시스템의 입력에는 아날로그 입력(Analog Input)과 디지털 입력(Digital Input)이 있고, 출력에도 아날로그 출력(Analog Output)과 디지털 출력(Digital Output)이 있다. 아날로그 입력은 아날로그 디지털 컨버터(ADC)를 통하여 입력되고, 아날로그 출력은 디지털 아날로그 컨버터(DAC)를 통하여 출력된다.(그림 9) 그러면 디지털 입력과 출력은 무엇을 통하여 이루어질까? 바로 I/O 포트를 사용하여 이루어진다. MCU의 중앙처리장치(CPU)가 외부장치로부터 디지털 데이터를 입력 받거나 또는 외부장치에 디지털 데이터를 출력할 때 사용하는 것이 I/O 포트이다. ST7 LITE는 두 그룹의 I/O 포트를 가지고 있다. 포트 A는 PA0부터 PA7까지 8개의 다기능 I/O 핀으로 구성되고, 포트 B는 PB0부터 PB6까지 7개의 다기능 I/O 핀으로 구성된다. 각각의 I/O 포트 구성을 그림 10에 보여주고 있다. 다기능 I/O 핀이란 한 개의 핀으로 여러 가지의 기능을 한다는 것을 의미한다. 그림 10의 1번 핀을 보면 MISO/AIN2/PB2로 되어 있는 것을 볼 수 있다. 이것이 의미하는 것은 SPI의 MISO기능, ADC의 입력기능, 포트 B의 PB2 기능을 한다는 것이다. 각각의 기능은 뒤에서 자세히 다루기로 하겠다. 이렇게 한 개의 핀으로 여러 기능을 함으로써 핀의 개수를 줄일 수 있는 효과가 있다. 그러나 동시에 이 모든 기능을 사용할 수 있는 것은 아니고, 단 한번에 한가지의 기능만을 선택하여 사용할 수 있다. 입출력 모드 구성 ST7 LITE의 I/O 포트를 입력 또는 출력 모드로 구성하기 위해서는 표 1과 같이 레지스터를 설정하여야 한다. *입력 모드 구성 DDR 레지스터의 비트를 0으로 설정하면 I/O 포트는 입력 모드가 된다. 이 입력 모드에서 OR 레지스터의 비트를 0 으로 설정하면 플로팅 입력(Floating Input)으로 구성되고, 1로 설정하면 풀업 입력(Pull-up Input)으로구성된다.먼저 그림 11과 같은 풀업 입력일 때의 구성을 보자. 풀업이란 위쪽으로 끌어당기다라는 것을 의미한다. 그림 11과 같은구성에서 입력 핀에 아무것도 연결하지 않을 경우 저항 Rpu에 의해서 입력 핀의 전압은 Vdd가 된다. 이렇게 입력 핀의 전압을 Vdd전압으로 끌어올리기 때문에 풀업 입력이라 하는 것이다. 다음으로 그림 12와 같은 플로팅 입력일 때의 구성을 보자. 플로팅이란 부동의 상태를 의미한다. 그림 12와 같은 구성에서 입력 핀에 아무것도 연결하지 않을 경우 입력 핀의 상태가 Low도 아니고 High도 아닌 상태를 플로팅 상태라고 한다. 그림 13의 (a)와 (b)에서 I/O 핀을 풀업 입력으로 하였을 경우를 보자. MCU는(a)의 경우 스위치가 ON되면 0, OFF되면 1로 입력 받을 것이다. 왜냐하면 MCU 내 부에서 풀업을 하고 있기 때문이다. (b)의 경우 외부에 풀업 저항이 연결되어 있으므로 (a)의 경우와 같이 입력 받을 것이다. 이번에는 I/O 핀을 플로팅 입력으로 선택 하였을 경우를 보자. (a)의 그림에서 스위치가 ON되면 0을 입력 받는다. 하지만 스위치가 OFF되는 경우 I/O 핀은 플로팅 상태가 되므로 입력값이 0이될지 1이 될지 알 수가 없다. 따라서 (b)와 같이 외부에 풀업 저항을 연결하여 플로팅 상태에서 1이 입력되도록 해야 한다.
<자료제공: 월간 반도체네트워크 06년 04월호> |