이 매뉴얼은 JK전자(JK Electronics) 에 의해서 번역, 수정, 작성 되었고 소유권 또한
JK전자(JK Electronics)
의 것입니다. 소유권자의 허가를 받지 않고 무단으로 수정, 삭제하거나 배포 할 수 없습니다.



 

STM32F10x Dragon 개발보드 메뉴얼


 
* Update history

- 2012.9.17 : 초기 Release
  2012.9.17 S/W 업데이트
  2012.11.5 RIDE7 프로젝트가 추가 되었습니다.

- 2013.11.5 : Eclipse 환경의 GCC 개발환경 지원 추가

   이클립스 개발환경
- code.google.com 을 통한 최신 소스코드 다운로드


 
1. STM32F10x Drgaon 개발보드 소개
2. STM32F10x Dragon 개발보드 사양
    2.1 CPU보드의 H/W 구성 및 회로도
    2.2 Bottom 보드의 H/W 구성 및 회로도
    2.3 제공 S/W 사양
3. 기본 사용방법 및 다운로드 가이드
    3.1 Dragon 개발보드 기본사용 방법
    3.2 프로그램 다운로드 가이드
    3.3 Cortex-M3 Architecture 강좌
    3.4 STM32F10x 시리즈 개발 강좌
4. S/W 테스트 방법
    4.1 LED
    4.2 Timer
    4.3 RTC
    4.4 SD Memory(FAT32)
    4.5 USB( HID Mouse )
    4.6 LCD Display
    4.7 EEPROM 테스트
    4.8 KEY 입력 테스트
    4.9 nRF24L01(RF Test)
    4.10 MP3 Play 테스트
    4.11 UART2 테스트
    4.12 RS485 테스트
    4.13 CAN 테스트
    4.14 ADC 테스트
    4.15 DAC 테스트
    4.16 LCD1602 테스트
    4.17 LCD12864 테스트
5. 프로그래밍 가이드
    5.1 Keil MDK 4.2x
    5.2 IAR Workbench 6.x
    5.3 RIDE7
    5.4 GCC & Eclipse


 

1. STM32F10x Dragon 개발보드 소개

STM32 Cortex-M3 에 기반한 32bit ARM 개발보드로 STM32F10x MCU를 사용하여 최대 72 MHz
속도로 동작 하고 CPU모듈과 Bottom보드가 분리되어 있습니다. Dragon Bottom 보드에는
nRF24L01 2.4Hz RF 모듈, MP3모듈, 조도센서, 온도센서 등과 2.8, 3.2, 4.3, 7.0 인치의 TFT 터치 LCD,
1602, 12864 LCD 등의 다양한 주변장치를 연결해서 사용할 수 있습니다.

(1) STM32F10x Dragon 개발보드 제품의 종류

핀 사양별 분류
제품이름
제품 기본 사양
LQFP100 STM32F103VCT6 개발보드 Internal 256KB Flash, 48KB SRAM
LQFP144 STM32F103ZET6 개발보드 Internal 512KB Flash, 64KB SRAM

STM32 Dragon 개발보드는 CPU모듈로 STM32F10x Rabbit CPU 모듈을 사용하였습니다.
고속의 LCD인터페이스를 위해 FSMC 인터페이스를 사용하여 Rabbit CPU 모듈중 High Density CPU 모듈만 지원하고 있습니다.



2. STM32F10x Dragon 개발보드 사양

2.1 CPU보드의 H/W 구성 및 회로도

(1) LQFP100 시리즈 H/W 구성( STM32F10x Rabbit CPU 모듈을 사용하였습니다.)

stm32


* LQFP100 시리즈 핀맵

JTAG GND PE0 PB8 PB6 PB4 PD7 PD5 PD3 PD1 PC12 PC10 PC14
VCC PE1 PB9 PB7 PB5 PB3 PD6 PD4 PD2 PD0 PC11 PA15
PE2 PE3 VCC GND
VCC VCC PE4 PE5 PA13 PA12
JTRST GND PE6 VBAT PA11 PA10
JTDI GND PC13 PC14 PA9 PA8
JTMS GND PC15 GND PC9 PC8
JTCK GND VCC PC0 PC7 PC6
NC GND PC1 PC2 PD15 PD14
JTDO GND PC3 VSSA PD13 PD12
RESET GND VREF- VREF+ PD11 PD10
NC GND VDDA PA0 PD9 PD8
NC GND PA1 PA2 PB15 PB14
VCC GND PB13 PB12
PA4 PA6 PC4 PB0 PB2 PE8 PE10 PE12 PE14 PB10 GND GND
PA3 PA5 PA7 PC5 PB1 PE7 PE9 PE11 PE13 PE15 PB11 VCC

(2) LQFP144 시리즈 H/W 구성( STM32F10x Rabbit CPU 모듈을 사용하였습니다.)

stm32

* LQFP144 시리즈 핀맵
PF1 PF3 PF5 PF7 PF9 PF11 PF13 PF15 VCC VCC GND GND PG14 PG12 PG10 PG8 PG6 PG4 PG2 PG0
PF0 PF2 PF4 PF6 PF8 PF10 PF12 PF14 GND GND VCC VCC PG15 PG13 PG11 PG9 PG7 PG5 PG3 PG1
JTAG GND PE0 PB8 PB6 PB4 PD7 PD5 PD3 PD1 PC12 PC10 PC14
VCC PE1 PB9 PB7 PB5 PB3 PD6 PD4 PD2 PD0 PC11 PA15
PE2 PE3 VCC GND
VCC VCC PE4 PE5 PA13 PA12
JTRST GND PE6 VBAT PA11 PA10
JTDI GND PC13 PC14 PA9 PA8
JTMS GND PC15 GND PC9 PC8
JTCK GND VCC PC0 PC7 PC6
NC GND PC1 PC2 PD15 PD14
JTDO GND PC3 VSSA PD13 PD12
RESET GND VREF- VREF+ PD11 PD10
NC GND VDDA PA0 PD9 PD8
NC GND PA1 PA2 PB15 PB14
VCC GND PB13 PB12
PA4 PA6 PC4 PB0 PB2 PE8 PE10 PE12 PE14 PB10 GND GND
PA3 PA5 PA7 PC5 PB1 PE7 PE9 PE11 PE13 PE15 PB11 VCC

2.2 Bottom 보드의 H/W 구성 및 회로도

(1) Bottom 보드 H/W 구성




* STM32F10X Dragon 개발보드 회로도 다운로드

2.3 제공 S/W 사양

ST Micronics(http://www.st.com)사에서 제공하는 기본 STM32F10x_StdPeriph_Driver, STM32_USB-FS-Device_Driver
를 사용해서 작성되어졌습니다.
LED, Timer, RTC, USB, RF(nRF24L01), MP3(VS1003B), 2.8, 3.2, 4.3, 7.0 터치 LCD, AT24C02 EEPROM, RS485, RS232,
CAN 통신, ADC, DAC, 1602 Char LCD, 12864 그랙픽 LCD, Buzzer, 온도센서, 조도센서 등 샘플 예제를 제공 합니다.
IAR Workbench, Keil MDK, Ride7 에서 컴파일한 소스와 프로젝트 파일이 있습니다.

(1) 소프트웨어 디렉토리

prj EWARMv6
MDK-ARM
RIDE
IAR Embeded Workbench Version 6.x
RealView(Keil) MDK-ARM Version 4.2x
Raisonance's Ride7 Version 7.24.06.0251
lib STM32_USB-FS-Device_Lib_V3.4.0 ST's 표준 라이브러리
src   예제 샘플 코드

(2) STM32 표준 라이브러리 버젼 : STM32_USB-FS-Device_Driver_V3.4.0, STM32F10x_StdPeriph_Driver_V3.4.0
(3) 소프트웨어 소스 다운로드

- 2012.9.17 통합 데모 소스 다운로드
- code.google.com 을 통한 최신 소스코드 다운로드

3. 기본 사용방법 및 다운로드 가이드

3.1 Dragon 개발보드 기본사용 방법

(1) CPU모듈 사용방법

CPU모듈에는 UART통신과 전원 공급을 하기 위해서는 4Pin 커넥터가 나와 있습니다.

- USB2Uart 다운로더 for Rabbit 을 이용해서 PC와 시리얼 통신 연결


stm32f103rbt6

- 일반적인 USB2Serial 변환 케이블을 이용해서 PC와 시리얼 통신 연결

일반적인 USB2Serial 변환 케이블을 이용할 경우에는 아래 그림과 같이 4개의 핀을 CPU모듈에 커넥터로 연결해서
사용하면 됩니다.

stm32f103rbt6

(2) Bottom보드 사용방법
Bottom 보드에는 USB to Serial 포트가 이미 내장되어 있어서 PC에는 Mini USB케이블을 이용해서 연결하시면 됩니다.
USB포트를 통해서 전원공급도 같이 할 수 있습니다.

(3) PC용 USB to Serial 드라이버 다운로드 및 설치( 새창 )

(4) 하이퍼 터미널 설정

PC와 연결이 성공적으면 하이퍼 터미널을 통해서 아래와 같은 메세지를 확인 할 수 있습니다.

stm32f103rbt6

또한 CPU모듈의 USER LED(녹색)가 켜지는 것을 볼 수 있습니다.

3.2 프로그램 다운로드 가이드

* 프로그램 다운로드 가이드는 STM32F10x Rabbit 개발보드를 기준으로 설명 하였습니다.
Dragon 개발보드에서 STM32F10x Rabbit CPU 모듈을 사용하고 있기 때문에 다운로드하는 방법은 동일 합니다.

(1) 시리얼 통신을 이용한 방법(새창)
STM32F 시리즈에는 JTAG 다운로더가 없이 USART0 포트를 이용해서 프로그램을 다운로드 할 수 있는 ISP기능을 제공 합니다.
가장 비용이 적게드는 장점이 있지만 다운로드만 가능하고 코드 디버깅은 할 수 없습니다.

(2) H-JTAG 을 이용한 방법(새창)

Keil MDK, IAR Workbench 에서 H-JTAG을 이용한 다운로드 방법과 디버깅 방법

(3) ARM-JTAG 을 이용한 방법(IAR Workbench), KEIL MDK

Keil MDK, IAR Workbench 에서 ARM-JTAG을 이용한 다운로드 방법과 디버깅 방법

(4) ST-Link 를 이용한 방법(새창)

Keil MDK, IAR Workbench 에서 ST-Link를 이용한 다운로드 방법과 디버깅 방법

(5) RLink 를 이용한 방법 (새창)
RIDE7 에서 RLink를 이용한 다운로드 방법

(6) J-Link EDU 를 이용한 방법
IAR Workbench 에서 J-Link EDU 를 이용한 다운로드 방법(새창)


4. S/W 테스트 방법

4.1 LED

stm32f103rbt6

[1] User LED on : CPU모듈의 노란색 USER LED와 Bottom 보드의 노란색 USER LED 3개가 모두 켜집니다.
[2] User LED off : CPU모듈의 노란색 USER LED와 Bottom 보드의 노란색 USER LED 3개가 모두 꺼집니다.

4.2 Timer

stm32f103rbt6

[1] TIM2 ticktime test : CPU모듈의 노란색 USER LED가 1초간텩으로 깜빡 입니다.
[2] TIM2 blink stop : 1초 타이머가 종료 됩니다.

4.3 RTC

stm32f103rbt6

[1] RTC service start : RTC 인터럽트를 받아서 1초에 한번씩 시간을 표시해 주고 있습니다.

stm32f103rbt6

[2] RTC service stop : RTC 서비스가 종료 됩니다.
코어모듈에서는 RTC 백업 베터리가 없어서 현재의 시간 설정이 저장되지는 않습니다.

4.4 SD Memory(FAT32)

FAT32 파일 시스템을 지원하여 SD메모리에 접근 할 수 있습니다. MP3 Player 구현 에서도 반드시 필요한 기능 입니다.
모든 종류의 SD Memory 카드를 지원하지는 않습니다. SD 메모리 카드의 종류에 따라서 동작이 되지 않을 수도 있으며,
이부분은 테스트가 완료된 SD메모리 카드를 계속해서 업데이트해 드리도록 하겠습니다.
SD메모리 카드는 PC에서 FAT32 형식으로 포맷이 되어 있어야 합니다.
테스트가 완료된 SD메모리 카드는 다음과 같습니다.

- 도시바 2GB, 8GB Memory
- SanDisk 2GB, 8GB 메모리


SD 메모리 테스트를 위해서 SD 메모리를 개발보드의 소켓에 삽입 합니다.


stm32f103rbt6

[1] SD File List : SD메모리의 파일을 리스트로 보여 줍니다.

stm32f103rbt6

[x] Exit SD test : 테스트를 종료하고 메인 메뉴로 이동 합니다.

4.5 USB( HID Mouse )

USB 디바이스 테스트를 위해서는 Dragon Bottom 가 필요 합니다. Bottom보드의 USB to Serial 포트가 연결되어 있는
상태에서 USB to Serial 포트 옆에 있는 USB Mini포트를 PC와 연결 합니다.

* USB 테스트시 주의사항
CAN 인터럽트는 USB 인터럽트와 같이 사용이 불가능 합니다.
USB 테스트를 위해서는 제공하는 소스의 hw_config.c 파일의 void bsp_init_rcc(void) 함수에서 아래 부분의 주석처리 해야 합니다.

RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);


[1] USB service start : USB 서비스가 시작이 되면 아래 그림과 같이 장치관리자에 "HID 규격 마우스" 로 잡히게 됩니다.

stm32f103rbt6

하이퍼터미널에서 "L", "R", "U", "D" 등을 입력하면 PC의 마우스 커서가 움직이게 됩니다.

stm32f103rbt6

[2] USB service stop : USB 서비스를 종료 합니다.

4.6 LCD Display

(1) 하이퍼터미널 에서 "6" 을 입력하면 LCD 예제가 나옵니다.

stm32f103rbt6

Dragon 개발보드는 2.8, 3.2, 4.3, 7.0 인치 터치 LCD를 FSMC 고속 인터페이스로 지원하고 있습니다.
4.3인치(480*272), 7.0인치( 800*480) 해상도 에서 화면 갱신속도가 3.2인치( 320*240 ) 갱신속도와 비슷 합니다.
테스트 방법은 구매하신 LCD에 맞는 메뉴를 하이퍼 터미널에서 선택만 하면 됩니다. 동작 화면은 아래 동영상 참조 하시기 바랍니다.

* 4.3인치 터치 LCD 테스트 영상



* 7.0인치 터치 LCD 테스트 영상



4.7 EEPROM 입력 테스트

stm32f103rbt6

[1] EEPROM(AT24C02) Write : AT24C02 EEPROM에 Data를 Write 합니다.

stm32f103rbt6

[2] EEPROM(AT24C02) Read : AT24C02 EEPROM에서 Data를 Read 합니다.

stm32f103rbt6

 

[x] Exit EEPROM test



4.8 KEY 입력 테스트

Dragon 개발보드에는 총 7개의 User KEY가 있습니다. 이 중에서 BTN1 ~ BTN5까지의 KEY 입력 테스트를 해보도록 하겠습니다.
참고로 BTN1 ~ BTN4는 Polling 방식으로 KEY입력을 검사 하였고 BTN5는 EXTI(외부 인터럽트) 방식으로 검사 하였습니다.

stm32f103rbt6

[1] KEY service start(polling & exti)

stm32f103rbt6

[2] KEY service stop(polling & exti) : KEY 입력 서비스를 종료 합니다.

4.9 nRF24L01(RF Test)

(1) nRF24L01 테스트를 위해서는 2개의 Dragon 개발보드와 2개의 nRF24L01 별도의 모듈이 필요 합니다.
각각의 Dragon 개발보드와 PC를 연결 합니다.

nRF24L01 모듈 구매하기

stm32f103rbt6

[1] nRF24L01 Rx Service Start : 첫번째 개발보드에서 먼저 RX 모드로 진입 합니다.

- RX모드에서 데이터가 전송되기를 기다림
- 아래 화면은 nRF24L01모듈과 통신이 되지 않을 경우에 발생하는 에러 화면 입니다.

stm32f103rbt6


[2] nRF24L01 Tx Service Start : 두번째 개발보드에서 TX데이터를 전송 하면 RX모드에 있는 개발보드에 전송된 데이터를 보여 줍니다.

stm32f103rbt6

수신을 대기하고 있는 RX용 터미널에 RF 데이터가 수신된 화면 입니다.

stm32f103rbt6

4.10 MP3 Play 테스트

MP3 Play예제를 실행 시키기 위해서는 SD메모리에 MP3파일들을 PC에서 저장을 하고 개발보드의SD 메모리 소켓에 삽입 합니다. SD메모리 카드는 PC에서 FAT32 형식으로 포맷이 되어 있어야 합니다.
그리고 별도의 VS1003B MP3 모듈이 있어야 합니다

VS1003B MP3 모듈 구매하기


.
모든 SD 메모리 카드를 지원 하지는 않으며 SD 메모리 카드의 종류에 따라서 동작이 되지 않을 수도 있으며, 이부분은 테스트가 완료된 SD메모리 카드를 계속해서 업데이트해 드리도록 하겠습니다.

테스트가 완료된 SD메모리 카드는 다음과 같습니다.

- 도시바 2GB, 8GB Memory
- SanDisk 2GB, 8GB 메모리

개발보드에 MP3 모듈과 MP3 파일이 저장되어 있는 SD 메모리를 연결 합니다.

stm32f103rbt6

[1] MP3 Play Start : SD메모리의 루트의 모든 MP3 파일들을 순차적으로 재생 합니다.

stm32f103rbt6

[2] Mp3 Play Stop : MP3 재생을 중단 합니다.

4.11 UART2 테스트

개발보드의 UART1, UART2 간의 통신 테스트를 할 수 있습니다. 테스트를 진행하기 전에 먼저 개발보드의 UART2(DB9 커넥터)와
PC를 연결 시키고 하이퍼터미널 혹은 다른 통신 프로그램으로 115200bps 속도로 연결을 합니다. 포트 설정은 COM1(UART1) 연결
설정과 동일 합니다.

stm32f103rbt6

개발보드의 UART1(USB to Serial 포트)와 DB9(UART2) 를 모두 PC에 연결합니다.

stm32f103rbt6

[1] UART2 test : UART2 포트와 연결된 통신 터미널에 "uart2 echo serive is started." 문구가 Display 되고
UART2와 연결된 터미널에서 특정 문자를 입력하면 바로 Echo 가 되어 화면에 나타나게 됩니다.

stm32f103rbt6

4.12 RS485 테스트

4.12.1 Dragon 개발보드 사이에 통신 테스트
RS485통신 테스트를 위해서는 Dragon 개발보드가 2세트가 필요 합니다.

(1) 아래 그림과 같이 Dragon 개발보드 2대를 RS485 터미널 블럭의 "A" <-> "A", "B" <-> "B" 를 연결 합니다.

2대의 개발보드에 노란선을 485_B, 빨간선을 485_A 라고 실크 되어 있는 포트에 연결 합니다.

stm32f103rbt6

(2) 각각 개발보드의 COM1 포트에 미니 USB케이블을 연결 합니다.
(3) 장치 관리자에서 각각의 시리얼 포트를 확인하고 터미널 프로그램과 연결 합니다.
(4) 개발보드중 1세트는 "RS485 Slave test" 를 선택해서 Slave Mode에서 대기 합니다.

stm32f103rbt6

(5) 개발보드중 1세트는 "RS485 Master test" 를 선택해서 Master Mode에서 485데이터를 Slave Mode쪽으로 전송 합니다.

"0x61 ~ 0x73" 까지 데이터를 RS485 Slave로 전송을 하면 RS485 Slave 모드에서 대기 하고 있던 개발보드에서 다시 Master 쪽으로 같은 데이터를 전송합니다.

stm32f103rbt6

4.12.2 Dragon 개발보드와 RS485 통신 모듈 사이에 테스트

(1) Dragon 개발보드와 "USB to 485" 제품을 연결 합니다. 연결 방법은 Dragon 개발보드 연결 방법과 동일 합니다.
RS485 터미널 블럭의 "A" <-> "A", "B" <-> "B" 를 연결 합니다. 노란선을 485_B, 빨간선을 485_A 라고 실크 되어 있는 포트에 연결 합니다.

USB to RS485 모듈 구매하기
stm32f103rbt6stm32f103rbt6

(2) "USB to 485" 제품의 터미널 연결시 Baudrate는 반드시 9600bps로 연결 해야 합니다.
(3) Dragon 개발보드에서 "RS485 Master test" 를 선택해서 Master Mode에서 485데이터를 Slave Mode( "USB to 485") 쪽으로 전송 합니다.

stm32f103rbt6



4.13 CAN 테스트

* CAN 테스트시 주의사항
CAN 인터럽트는 USB 인터럽트와 같이 사용이 불가능 합니다.
CAN테스트를 위해서는 제공하는 소스의 hw_config.c 파일의 void bsp_init_rcc(void) 함수에서 아래 부분의 주석을 해제 해야 합니다.
반대로 USB를 사용하기 위해서는 아래 부분을 주석처리 해야 합니다.

RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);


[1] CAN Loopback : 아래와 같은 메세지가 나오면 우선 자체 테스트는 성공 입니다.

stm32f103rbt6


[2] CAN Normal : CAN 통신 테스트를 하기 위해서는 Dragon 개발보드 2세트가 필요 합니다.
2대의 개발보드에 노란선을 CAN_H, 빨간선을 CAN_L 라고 실크 되어 있는 포트에 연결 합니다.

stm32f103rbt6

(2) 각각 개발보드의 COM1 포트에 미니 USB케이블을 연결 합니다.
(3) 장치 관리자에서 각각의 시리얼 포트를 확인하고 터미널 프로그램과 연결 합니다.
(4) 개발보드중 1세트는 "[2] CAN Normal " 를 선택해서 CAN 데이터를 송신 합니다.

stm32f103rbt6

(5) 반대로 연결된 개발보드에서도 마찬가지로 "[2] CAN Normal " 를 선택해서 CAN 데이터를 송신과 동시에 수신을 합니다.

stm32f103rbt6

4.14 ADC 테스트

[1] ADC12 IN15 VR Input : 개발보드에 있는 가변 저항(ADC_VR)을 가지고 ADC 입력을 테스트 해볼수 있습니다.

stm32f103rbt6

위의 그림에서 네모 박스에 있는 가변저항(ADC_VR) 을 좌우로 조정하면 터미널에 변화된 전압값을 표시 합니다.

stm32f103rbt6

[2] ADC12 IN9 Input
[3] ADC12 IN8 Input : 외부에 연결된 전압등의 값을 ADC 포트를 통해서 읽어 보여 줍니다.

stm32f103rbt6

Power supply에서 DC 2.2V를 인가하였고, 아래 개발보드에서는 1.6V를 표시하고 있습니다.
0.2 ~ 0.3 V정도가 차이가 나는것은 코드 작성시 STM32의 AVCC에 인가되는 실제 전압을 측정해서 반영을 하면 오차를 줄일 수 있습니다.

stm32f103rbt6

4.15 DAC 테스트

[1] DAC1 Noise output : 아직 기능이 완벽하게 구현되지 않았습니다.

4.16 Buzzer 테스트

[1] Buzzer Start : Buzzer에서 Beep 음이 울립니다.
[2] Buzzer Stop : Beep 송출을 중단 합니다.

stm32f103rbt6

4.16 LCD1602 테스트

[1] LCD1602 test : LCD1602 모듈을 초기화 하고 LCD화면에 Text를 Display 합니다.

stm32f103rbt6

1602LCD의 밝기가 어둡거나 너무 밝을 경우에는 LCD_VR의 가변저항으로 조정 할 수 있습니다. 아래 그림에서 네모 박스 부분입니다.

stm32f103rbt6

 

4.17 LCD12864 테스트

[1] LCD12864 test : LCD12864 모듈을 초기화 하고 LCD화면에 Text를 Display 합니다.

stm32f103rbt6

stm32f103rbt6

12864LCD의 텍스트 밝기가 너무 어두울 경우에는 아래 그림의 밝기 조절 VR을 드라이버등을 이용해서 조절 합니다.

stm32f103rbt6

 




5. 프로그래밍 가이드

5.1 Keil MDK 4.2x

프로그램 개발을 위한 Keil MDK 컴파일러 설정 방법과 컴파일(새창)

5.2 IAR Workbench 6.x

프로그램 개발을 위한 IAR 컴파일러 설정 방법과 컴파일(새창)

5.3 RIDE7

프로그램 개발을 위한 RIDE7 컴파일러 설정 방법과 컴파일(새창)

5.4 GCC & 이클립스

프로그램 개발을 위한 이클립스 & GCC 설정 방법과 컴파일(새창)