11/15/2010 이더넷, CAN, 엔코더카운터를내장한제어용 ARM Cortex-M3 보드 32 비트 ARM Cortex-M3 코어를내장한 Luminary Micro 사의 LM3S8962 프로세서는 PWM 생성과엔코더카운터두채널을내장함과동시에이더넷, CAN 통신인터페이스를가지고있어다양한모터를제어하는데손쉽게사용할수있습니다. 이제 DSP 에서만가능한것으로생각했던모터제어를 Cortex-M3 코어로구현해보시기바랍니다.
mycortex-lm8962 제품소개 제품특징임베디드프로세서코어설계업체로유명한 ARM 사에서 ARM7/ARM9/ARM11 으로이어지는개발라인에서새로운신형아키텍쳐를추가하였습니다. 코어는 ARMv7 이며제품군은 Cortex( 코어텍스 ) 라고명명하였습니다. 코어텍스단어를사전에서찾아보면인간뇌의대뇌피질로설명되어있습니다. 인간의모든지능적행위가대뇌피질에서이뤄지듯이 ARM 사에서는자사의마이크로프로세서가시스템에서대뇌에해당하는지능적인장치가되길바라는마음에서이렇게이름을붙인것같습니다. 그림 1 위드로봇의 mycortex M3 계열로고 미국텍사스주에위치한 Luminary Micro 사에서는 ARM 의 Cortex-M3 코어를이용한다양한프로세서를출시하였고제품명을 Stellaris 라고부르고있습니다. 최근 Texas Instrument 사에서 Luminary Micro 를인수합병하면서보다더체계적인라인업관리가이루어질것으로기대되고있습니다. Stellaris 8000 계열은 Stellaris 제품군들중에서가장상위모델군에해당합니다. 50MHz 로동작하며, 256KB single cycle 플래시메모리와 64KB 의 single cycle SRAM 을내장하고있습니다. 무엇보다 UART, SPI, i2c 등의시리얼통신인터페이스와함께추가로 CAN 과이더넷인터페이스까지내장하고있어임베디드시스템에관련된통신인터페이스는대부분가지고있는셈입니다. www.withrobot.com Page 1
mycortex-lm8962 는 Stellaris 8000 계열제품군중에서가장다양한부가기능을가지고있는 LM3S8962 모델을사용하여제작한프로세서모듈보드입니다. 위에서설명한통신인터페이스이외가장두드러진특징은모터위치, 속도측정에사용하는엔코더신호를카운팅할수있는 QEI(Quadrature Encoder Interface) 두채널을가지고있어모터제어시스템을손쉽게구성할수있습니다. Stellaris 8000 계열의내부기능블록다이어그램은다음과같습니다. 그림 2 Stellaris 8000 계열블록다이어그램 응용분야 마이크로프로세서응용전분야 8 비트마이컴이상의성능이필요한프로젝트 CAN 통신, 이더넷통신이필요한프로젝트 ARM Cortex 학습 모터제어 (DC, BLDC, 스텝퍼 ) 소형임베디드웹서버 www.withrobot.com Page 2
기타정보및관련제품 http://www.withrobot.com/category/microcontroller 에접속하면 mycortex-lm8962 이외에다양한마이크로프로세서응용제품에관한정보를보실수있습니다. 그림 3. 다양한마이크로프로세서응용보드에관한정보가있는 withrobot 홈페이지 (http://www.withrobot.com/category/microcontroller) www.withrobot.com Page 3
외형치수및보드설명 외형치수 그림 4. mycortex-lm8962 외형치수 보드양측에 100mil(2.54mm) 간격으로홀이배치되어있어헤더핀을이용하면일반공 PCB 에손쉽게연결하여사용하실수있습니다. 필요에따라서헤더핀또는헤더핀소켓을연결해서다른 PCB 와연결하거나케이블로다른마이크로프로세서와연결하여사용하기바랍니다. 사용자기호에맞게사용할수있도록인터페이스헤더핀은연결되지않은상태로제공됩니다. 인터페이스커넥터설명 J5 CPU 신호 J5 CPU 신호 1 96 PD5 2 95 PD4/CCP0 3 100 PD7/IDX0 4 99 PD6/FAULT 5 1 ADC0 6 - GND 7 5 ADC2 8 2 ADC1 9 - GND 10 6 ADC3 11 11 PD1/CAN0TX 12 10 PD0/CAN0RX 13 13 PD3/U1TX 14 12 PD2/U1RX www.withrobot.com Page 4
15 18 PG1/PWM1 16 19 PG0 17 23 PC6/PHB0 18 22 PC7 19 25 PC4/PHA0 20 24 PC5 21 27 PA1/U0Tx 22 26 PA0/U0Rx 23 29 PA3/SSI0FSS 24 28 PA2/SSI0CLK 25 31 PA5/SSI0TX 26 30 PA4/SSI0RX 표 1. mycortex-lm8962 보드의 J5 신호선 J6 CPU 신호 J6 CPU 신호 1 90 PB6/C0+ 2 89 PB7/TRST 3 92 PB4/C0-4 91 PB5/C0o 5 70 PB2/I2C0SCL 6 71 PB3/I2C0SDA 7 66 PB0/PWM2 8 67 PB1/PWM3 9 74 PE2/PHB1 10 75 PE3/PHA1 11 72 PE0/PWM4 12 73 PE1/PWM5 13 47 PF0/PWM0 14 61 PF1/IDX1 15 - EXT5V 16 - VDD3V3 17 51 /HIB 18 55 VBAT 19 53 XOSC1 20 - GND 21 52 XOSC0 22 - GND 23 35 PA7 24 34 PA6/CCP1 표 2 mycortex-lm8962 보드의 J6 신호선 EXT5V 는보드를동작시키기위해외부에서 5V 전압을인가하는핀입니다. mycortex- LM8962 보드는외부에서보드전압을인가해서동작시킬수도있으며, USB 파워로도동작시킬수있습니다. J6 의 EXT5V 에전압을인가하여보드를동작시키는경우에는점퍼 J2 을위쪽으로연결하신후사용하시면됩니다. myusb2uart 를이용하여 J1 의 1 번핀을통해 USB 버스파워로동작시킬경우에는점퍼 J2 를아래로연결합니다. www.withrobot.com Page 5
그림 5 J2 점퍼연결좌 : J6 의 15 번핀 (EXT5V) 로전원을인가할경우 J2 점퍼설정우 : J1 의 1 번핀 (VDD5V) 으로전원을인가할경우 J2 점퍼설정 UART 커넥터연결방법 mycortex-lm8962 보드에는 J1 의 4 핀커넥터를통해 UART 통신과함께전원을입력받을수있도록되어있습니다. 핀배열은 myusb2uart( 별매 ) 와호환되므로, 동봉되어있는 4 핀시리얼케이블을이용해 mycortex-lm8962 보드와 myusb2uart 를연결하시면됩니다. 이경우전원을 USB 버스파워를이용하므로별도의전원공급없이보드를동작시킬수있습니다. 관련제품소개 mycortex-lm808: LM3S808 프로세서를사용한개발보드 mycortex-lm608: LM3S608 프로세서를사용한개발보드 mycortex-lm308: LM3S308 프로세서를사용한개발보드 mycortex-lm2965: LM3S2965 프로세서를사용한개발보드 myusb2uart: USB 포트와연결하여전원을임베디드보드에공급함과동시에 USB2UART 역할을수행 Stellaris-JTAG: mycortex 보드개발에사용할수있는 JTAG 장치. 플래시퓨징과소스레벨디버깅기능지원 www.withrobot.com Page 6
STEEELRISWARE StellarisWare 는 Luminary Micro 에서제공하는라이브러리및예제모음으로, 모든 Stellaris 시리즈프로세서에사용할수있습니다. StellarisWare 에포함된 DriverLib 의 API 함수를이용하면 Stellaris 시리즈프로세서의내부 H/W 와 peripheral 구성에대해잘모르는개발자도쉽게 Stellaris 시리즈를다룰수있는강력한라이브러리입니다. mycortex-lm8962 프로세서보드에서도 StellarisWare 의 peripheral 라이브러리들을사용할수있습니다. StellarisWare 는 Luminary Micro 의홈페이지나위드로봇홈페이지에서다운로드받으실수있습니다. http://www.ti.com/stellarisware http://www.withrobot.com/entry/mycortex-lm8962 Luminary Micro 의홈페이지에서는항상최신버전을다운로드받을수있으며, 위드로봇홈페이지에서는 mycortex 시리즈에서의동작이검증되어본사용자설명서에서사용한버전을다운로드받을수있습니다. StellarisWare 를다운로드받으신다음더블클릭하여실행시키면설치가진행됩니다. 개발예제소스위드로봇에서는 mycortex-lm8962 보드를이용한개발에참고할수있도록개발예제소스코드를함께제공합니다. 예제소스코드는위드로봇홈페이지 (http://www.withrobot.com/entry/mycortex-lm8962) 에서다운로드받으실수있습니다. 다운로드받은예제는압축을풀어그대로사용하게됩니다. 압축을푸는폴더는 StellarisWare 가설치된폴더아래에다음과같이만드는것을추천합니다. www.withrobot.com Page 7
그림 6 예제소스추천설치위치 만일다른폴더에설치하신경우에는예제폴더의 Makefile.conf 파일의내용중 ROOT 변수의값을 StellarisWare 가설치된폴더까지의상대경로명으로설정하면됩니다. 단이경우에는위드로봇제작예제만정상동작하고, Luminary Micro 제작예제는동작하지않을수있습니다. mycortex-lm8962 예제는위드로봇에서제작한예제와 Luminary Micro 에서제작한예제로 구성됩니다. Luminary Micro 에서제작한예제는 StellarisWare 에포함된예제소스를 mycortex- LM8962 보드에서동작가능하도록수정한것입니다. 모든예제는 Makefile 을가지고있습니다. 각예제폴더내에서 make 를수행하면컴파일을수행하고, 그결과물은 gcc 폴더아래에 *.axf, *.bin 형태로만들어집니다. *.axf 파일은바이너리이미지와디버그정보를포함한파일로써 JTAG 장비를이용하여디버깅을할때사용하게됩니다. *.bin 파일은펌웨어바이너리파일이며, 시리얼부트로더나 JTAG 장비를이용하여보드의플래시메모리에다운로드할때사용합니다. 위드로봇에서는 mycortex 시리즈프로세서보드를위해 Stellaris-JTAG 을개발, 판매하고있습니다. http://www.withrobot.com/category/interface/stellaris-jtag 에서관련내용을보실수있으며, mycortex-lm8962 시리즈용예제를다운로드하고소스디버깅하는방법에대해서는 Stellaris-JTAG 의문서를참고하시기바랍니다. JTAG 장비가없는경우를위해서 mycortex 시리즈보드는시리얼부트로더를탑재하고 www.withrobot.com Page 8
출시됩니다. 시리얼부트로더를이용한펌웨어다운로드방법은다음절을참고하시기바랍니다. 개발환경과예제소스코드들은 3~6 개월간격으로계속해서업데이트됩니다. 정기적으로웹페이지를확인해서업데이트받으시는것을추천합니다. 시리얼부트로더 시리얼부트로더와테스트프로그램위드로봇에서는보드의전수검사를수행하면서내부플래시메모리에시리얼부트로더와기본예제코드 (timer 예제 ) 를기록해두었습니다. 따라서전원을인가하면플래시에프로그래밍된프로그램이동작합니다. JTAG 장비가없는경우에는내장한부트로더를이용해서시리얼포트만으로펌웨어이미지를플래시에손쉽게기록할수있습니다. 시리얼부트로더의사용법시리얼부트로더를사용하여펌웨어를다운로드하려면 PC 에 LM Flash Programmer 를설치해야합니다. LM Flash Programmer 는아래주소에서다운로드받을수있습니다. http://www.ti.com/lmflashprogrammer http://www.withrobot.com/entry/mycortex-lm808 그림 7 http://www.withrobot.com/entry/mycortex-lm8962 에서시리얼플래시프로그래머를내려받을수있습니다. www.withrobot.com Page 9
다운로드받은파일을실행하면다음과같은과정을거쳐 PC 에설치하게됩니다. 그림 8 LM Flash Programmer 설치과정 설치가완료되면바탕화면에 LM Flash Programmer 아이콘이새로만들어집니다. www.withrobot.com Page 10
설치한 LM Flash Programmer 를실행하면아래의그림 9 과같은화면을볼수있습니다. Configuration 탭에서 Quick Set 항목은 Manual Configuration see below 를선택해야합니다. Interface 를 Serial(UART) Interface 로선택하고, Baud Rate 는 115,200 을선택합니다. 또한 Disable Auto Baud Support 체크박스에도체크하도록합니다. COM Port 는 myusb2uart 혹은 Stellaris-JTAG 의 UART 포트번호를선택하면됩니다. 포트번호를확인하고자할때에는 Device Manager 버튼을클릭해서장치관리자를실행하면확인할수있습니다. 그림 9 LM Flash Programmer 설정및프로그래밍 Configuration 탭의설정을마친후 Program 탭으로전환하면그림 9 의우측과같은화면을볼수있습니다. 이화면에서다운로드하고자하는바이너리를선택하고부트로더를경유하여플래시메모리에다운로드할수있습니다. Select.bin file 항목에다운로드하고자하는바이너리파일의경로와이름을입력합니다. Program Address Offset 은 800 혹은 0800 을입력합니다. Program Address Offset 은다운로드할이미지가플래시메모리의어느주소에저장될것인지를알려주기위한입력항목입니다. mycortex 프로세서보드에탑재되어있는시리얼부트로더는자체크기가 2KB 보다작으며, 플래시메모리의 0 번지부터기록되어있습니다. 따라서사용자프로그램은 4KB, 즉 0x0800 주소부터플래시에기록되어야합니다. 예제소스코드는모두컴파일이완료된상태로제공됩니다. 각예제폴더아래의 gcc 폴더에컴파일된바이너리파일들이있습니다. 이바이너리파일들은 JTAG 을사용하는 www.withrobot.com Page 11
경우를가정하고컴파일된것이므로 LM Flash Programmer 에는제공된바이너리를바로사용할수없습니다. 시리얼부트로더용으로다시컴파일하기위해서는 cmd 창에서 make clean 을한후에다시부트로더옵션과함께컴파일해야합니다. make clean make USES_BOOTLOADER=yes 이제 mycortex-lm8962 프로세서보드를시리얼장치와연결하고 J5 커넥터의 18 번핀인 PC7 을 GND 와연결한상태에서 RST 버튼을짧게눌렀다때도록합니다. 이처럼 PC7 에 low 가인가된상태에서리셋이되면탑재되어있는시리얼부트로더가기동되면서프로그램다운로드대기상태로진입합니다. mycortex-lm8962 보드에는 PC7 핀에스위치가연결되어있지않습니다. 부트로더를자주사용해야하는상황이라면별도의스위치를 PC7 핀에연결해서사용하는것을추천드립니다. 다운로드대기상태에서 LM Flash Programmer 의 Program 버튼을클릭하면프로그램이다운로드되면서플래시메모리에저장되며, 진행상태는 LM Flash Programmer 의하단상태표시줄에진행막대로표시됩니다. 프로그램다운로드가완료되면 mycortex-lm8962 프로세서보드의 RST 버튼을짧게눌러서리셋시켜방금다운로드한펌웨어가실행되도록하면됩니다. LM Flash Programmer 의 Program 탭에서 Reset MCU After Program 체크박스에체크한상태로프로그램했다면프로래밍이끝난후에자동으로리셋됩니다. www.withrobot.com Page 12
개발장치 (STELLARIS-JTAG) 그림 10 Stellaris-JTAG 위드로봇에서제작한 mycortex-lm 시리즈의개발을지원하기위해플래시프로그래밍이가능하고소스레벨디버깅이가능한 USB JTAG 을 Stellaris-JTAG 이라는이름으로판매합니다. 기존의수백만원넘는고가의 JTAG 에비하면여러가지제한점이많지만 Stellaris 제품군을개발하는데에는큰불편함이없어보다빠르게디버깅을수행하실수있습니다. Stellaris-JTAG 을이용하면오픈소스들의조합으로추가비용지출없이편리한개발환경을구축할수있습니다. 위드로봇에서제안하는개발환경구성은다음과같습니다. 통합에디터 : 이클립스 (Eclipse) 컴파일러 : CodeSourcery G++ Lite 디버거 : GBD + OpenOCD JTAG: Stellaris-JTAG 제안한방식으로시스템을구성하는경우 JTAG 하드웨어를제외한나머지소프트웨어부분은모두무상으로사용하실수있습니다. www.withrobot.com Page 13
그림 11 Stellaris-JTAG 으로이클립스에서소스레벨디버깅모습 전기적특성 동작전원 : 5V I/O 전압 : 3.3V (5V input tolerant) JTAG 신호전압 : 3.3V www.withrobot.com Page 14
회로도 www.withrobot.com Page 15
사용시주의사항 mycortex-lm8962 보드에전원을인가할때전원의극성을확인하시기바랍니다. 전원을바꾸어연결하거나, 정격전압이아닌전원을인가하면 mycortex-lm8962 보드가파손될수있으며판매사는이에대한책임을지지않습니다. 상품출하시전수검사를통해보드의동작을확인하고있으며, 사용중파손에의한수리는불가합니다. 다른디바이스와연결할때마이크로프로세서의 IO 전압 (3.3V) 과동일한지확인하시기바랍니다. mycortex-lm8962 보드의 IO 들은 5V 입력에도파손되지않도록설계되어있지만가능하면동작범위를일치시키는것을추천합니다. 마이크로프로세서의 IO 전압과다른전압을 GPIO 핀에인가하면오동작의원인이되며, mycortex-lm8962 보드가파손될수있습니다. www.withrobot.com Page 16
부록 - COMPORTMASTER 특징 기능상특징 o PC 의 COM 포트를이용한통신프로그램 o ASCII/HEX 선택적으로데이터송수신가능 o SLIP 및위드로봇에서제안하는확장 SLIP 인코딩, 디코딩기능선택적사용가능 o 명령어 2 바이트데이터길이 1 바이트로구성된 WRPu 패킷자동생성기능지원 o 송수신데이터에 CR/LF 자동추가기능 o 패킷반복전송가능및데이터패킷간지연시간설정가능 o 흐름제어신호들의모니터링및값설정가능 o 비상업적인용도로무료로이용가능 응용분야 o 임베디드보드와 PC 의시리얼통신테스트및각종패킷통신실험 지원 OS o Windows 2000/XP/Vista 제품소개페이지 http://www.withrobot.com/category/interface/comportmaster www.withrobot.com Page 17
부록 MYUSB2UART 특징 초소형 USB2UART MAX232 칩필요없이임베디드시스템의 UART 를바로 PC 의 USB 에연결 USB 버스전원공급기능 (5V, 500mA) 및전원보호회로내장 가상용 COM 포트 (VCP) 드라이버제공 2mm 간격의 4 핀커넥터및흐름제어신호를포함한 100mil 간격의커넥터조합으로다양한형태의결합가능 mycortex 보드들과편리하게연결하여사용가능제품소개홈페이지 http://www.withrobot.com/category/interface/myusb2uart www.withrobot.com Page 18
Designed by withrobot Lab. Homepage: http://www.withrobot.com Release Information The following changes have been made in this document. Change history Date Issue 변동사항 2008.6 A The first draft 2008.11 B StellarisWare 변경사항적용 2009.10 C Update with latest tools 2010.11 D Update with latest tools Copyright(c) 2003-2010 withrobot Lab. All right reserved. www.withrobot.com www.withrobot.com Page 19