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



 

STM32F10x Rabbit 개발보드 메뉴얼


 
* Update history

- 2011.6.13 : 초기 Release
   2011.6.14 S/W 업데이트
- 2011.6.20 : 카메라 관련 소스 Update( SD메모리에 BMP파일로 저장하는 기능 추가)
   2011.6.20 S/W 업데이트
- 2011.6.28 : STM32F105, STM32F107 카메라 입력 클럭 관련 MCO 수정

   2011.6.28 S/W 업데이트( RF, TFT, 카메라 구동 소스등은 제품 구매시 CD미디어로 제공 됩니다.)
   Keil MDK 컴파일러 설정 방법및 컴파일 추가
- 2011.7.28 : 부팅시 LCD초기화 및 LCD창에 Welcome 메세지 출력

   부팅시 SWD_ENABLE 설정
   2011.7.28 S/W 업데이트 소스 다운로드

- 2011.11.4 : IAR5, RIDE7 프로그래밍 가이드 메뉴얼 추가
- 2012.5.31 : OV7670 카메라 사용시 LCD Preview에 이상이 있을경우 코드를 수정해서 컴파일 하세요.
- 2013.11.5 : Eclipse 환경의 GCC 개발환경 지원 추가

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


 
1. STM32F10x Rabbit 개발보드 소개
2. STM32F10x Rabbit 개발보드 사양
    2.1 CPU보드의 H/W 구성 및 회로도
    2.2 Bottom 보드의 H/W 구성 및 회로도
    2.3 제공 S/W 사양
3. 기본 사용방법 및 다운로드 가이드
    3.1 Rabbit 개발보드 기본사용 방법
    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 LCD Touch
    4.8 KEY 입력 테스트
    4.9 nRF24L01(RF Test)
    4.10 OV7670 CMOS 카메라 테스트
5. 프로그래밍 가이드
    5.1 Keil MDK 4.x
    5.2 IAR Workbench 5.x
    5.3 RIDE7
    5.4 GCC & Eclipse
6. Trouble Shoot
    6.1 OV7670 카메라 Preview issue


 

1. STM32F10x Rabbit 개발보드 소개

STM32 Cortex-M3 에 기반한 32bit ARM 개발보드로 최대 72 MHz 속도로 동작 하고 CPU모듈과 Bottom 보드로 분리되어
있습니다. CPU모듈을 Rabbit Bottom 보드에 장착하면 CMOS Camera, nRF24L01 RF, 터치 LCD 등의 다양한 모듈들을
연결하여 테스트 할 수 있습니다.

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

핀 사양별 분류
제품이름
제품 기본 사양
LQFP64 STM32F103R8T6 개발보드
STM32F103RBT6 개발보드
STM32F105RBT6 개발보드
STM32F107RBT6 개발보드
Internal 64KB Flash, 20KB SRAM
Internal 128KB Flash, 20KB SRAM
Internal 128KB Flash, 32KB SRAM
Internal 128KB Flash, 32KB SRAM
LQFP100 STM32F103VBT6 개발보드
STM32F103VCT6 개발보드
STM32F105VCT6 개발보드
STM32F107VCT6 개발보드
STM32F107VBT6 개발보드
Internal 128KB Flash, 20KB SRAM
Internal 256KB Flash, 48KB SRAM
Internal 256KB Flash, 64KB SRAM
Internal 256KB Flash, 64KB SRAM
Internal 128KB Flash, 32KB SRAM
LQFP144 STM32F103ZET6 개발보드 Internal 512KB Flash, 64KB SRAM


2. STM32F10x Rabbit 개발보드 사양

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

(1) LQFP64/LQFP100 시리즈 H/W 구성

stm32

* LQFP64 시리즈 핀맵
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

* 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 구성

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 구성



* Bottom 보드 핀맵
Camera GND RST RD PWON SCL XCLK D1 D3 D5 D7                  
VCC CS WAIT WE VSYNC SDA D0 D2 D4 D6                  
   
    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
    PE4 PE5 PA13 PA12
    PE6 VBAT PA11 PA10
    PC13 PC14 PA9 PA8
    PC15 GND PC9 PC8
    VCC PC0 PC7 PC6
    PC1 PC2 PD15 PD14
    PC3 VSSA PD13 PD12
    VREF- VREF+ PD11 PD10
    VDDA PA0 PD9 PD8
    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

* STM32F10X 회로도 다운로드

2.3 제공 S/W 사양

ST Micronics(http://www.st.com)사에서 제공하는 기본 STM32F10x_StdPeriph_Driver, STM32_USB-FS-Device_Driver
를 사용해서 작성되어졌습니다. 기본적으로 LED, Timer, RTC, USB, Camera, RF 등 샘플 예제를 제공 합니다.
IAR Workbench, Keil MDK, Ride7 에서 컴파일한 소스와 프로젝트 파일이 있습니다.

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

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

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

- 2011.7.28 S/W 업데이트 다운로드
- code.google.com 을 통한 최신 소스코드 다운로드


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

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

(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

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

* 프로그램 다운로드 가이드는 "STM32F103ZE 제품" 을 기준으로 설명 합니다.

(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) PC와의 연결이 성공적으로 이루어 졌다면 하이퍼터미널 에서 "1" 을 입력하면 아래와 같은 LED 컨트롤 예제가 나옵니다.
다시 "1" 을 입력하면 코어모듈의 노란색 USER LED가 켜집니다. LED가 켜진 상태에서 다시 "2" 을 입력하면 LED가 다시 꺼집니다.

(2) CPU모듈이 Bottom보드에 연결되어 있다면 하이퍼터미널 에서 "3" 을 입력하면 Bottom보드의 노란색 USER LED가 켜집니다.
LED가 켜진 상태에서 다시 "4" 을 입력하면 LED가 다시 꺼집니다.

4.2 Timer

stm32f103rbt6

(1) 하이퍼터미널 에서 "2" 을 입력하면 Timer 컨트롤 예제가 나옵니다.
다시 "1" 을 입력하면 CPU보드의 USER LED가 1초 간격으로 점멸(깜빡)하게 됩니다. 다시 "2"를 입력하면 LED가 점멸이 멈춥니다.

4.3 RTC

(1) 하이퍼터미널 에서 "3" 을 입력하면 RTC 예제가 나옵니다. 다시 "1" 을 입력하면 RTC서비스가 시작이 되고 초가 바뀔때 마다
하이퍼터미널에 시간이 표시 됩니다. 다시 "2"를 입력하면 RTC서비스가 종료 됩니다. 코어모듈에서는 RTC 백업 베터리가 없어서
현재의 시간 설정이 저장되지는 않습니다.

stm32f103rbt6

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

4.4 SD Memory(FAT32)

(1) 하이퍼터미널 에서 "4" 을 입력하면 아래와 같은 SD 메모리 예제가 나옵니다. 테스트 하는 순서는 우선 "1" 을 입력해서
SD포트(SPI)를 초기화 합니다.
stm32f103rbt6

(2) "2" 를 누르면 SD메모리의 현재 사용 가능한 용량을 표시 합니다.

stm32f103rbt6

(3) "3" 을 누르면 SD메모리의 파일들을 터미널에 List로 보여 줍니다.

stm32f103rbt6

4.5 USB( HID Mouse )

USB 디바이스 테스트를 위해서는 Rabbit Bottom 가 필요 합니다. Bottom보드의 USB to Serial 포트가 연결되어 있는
상태에서 USB to Serial 포트 옆에 있는 USB Mini포트를 PC와 연결 합니다. USB장치가 성공적으로 연결되면 장치
관리자에 아래와 같이 "HID 규격 마우스" 로 잡히게 됩니다.

stm32f103rbt6

장치가 제대로 올라온 후에 하이퍼터미널 에서 "5" 을 입력하면 USB Device 예제가 나옵니다.
다시 "1" 을 입력하면 USB 서비스가 시작이 되고 하이퍼터미널에서 "L", "R", "U", "D" 등을 입력하면
PC의 마우스가 움직이게 됩니다.

stm32f103rbt6

4.6 LCD Display

(1) 하이퍼터미널 에서 "6" 을 입력하면 LCD 예제가 나옵니다. 다시 "1" 을 입력하면 LCD서비스가 시작이되고
개발보드의 LCD화면에는 배경색상과 글자의 색상이 반복적으로 바뀌면서 Display가 됩니다.

stm32f103rbt6 stm32f103rbt6

4.7 LCD Touch

(1) 하이퍼터미널 에서 "7" 을 입력하면 LCD 터치 예제가 나옵니다. 다시 "1" 을 입력하면 터치 서비스가 시작이 되고
개발보드의 LCD 화면에는 Calibration이 시작이 됩니다. LCD상의 "+" 표시에 터치펜등을 이용해서 Calibration을
하고 완료가 되면 LCD상에 터치를 이용해서 그리기를 할 수 가 있습니다.

stm32f103rbt6 stm32f103rbt6

터치 동작을 이용해서 LCD화면상에서 그리기를 수행한 화면 입니다.

stm32f103rbt6

4.8 KEY 입력 테스트

(1) 하이퍼터미널 에서 "8" 을 입력하면 KEY 테스트 예제가 나옵니다. KEY는 Rabbit Bottom 보드에 1개가 있습니다.
"1" 을 입력하면 GPIO 폴링 방식의 KEY 입력을 감지할 수 있고 , "3" 을 입력하면 인터럽트 방식으로 KEY입력을
감지 할 수 있습니다.

stm32f103rbt6

4.9 nRF24L01(RF Test)

(1) 하이퍼터미널 에서 "9" 을 입력하면 nRF24L01 테스트 예제가 나옵니다. RF테스트를 위해서는 2세트의 Rabbit개발보드가
필요 합니다. 1세트에서 우선 "1" 을 입력해서 RX 모드로 진입을 한다음, 다른 세트에서 "2" 번 메뉴을 이용해서 TX데이터를
보냅니다. 그러면 RX모드의 Rabbit개발보드와 연결된 터미널 창에 "abcdef" 라는 데이터가 도착되었을을 표시 합니다.

4.10 OV7670 CMOS 카메라 테스트

(1) 하이퍼터미널 에서 "a" 을 입력하면 카메라 테스트 stm32f103rbt6예제가 나옵니다. "1" 을 입력하면 개발보드의 LCD화면상에 Camera
Preview동작이 시작 됩니다. Preview동작중에 Key1(Bottom 보드에 있는 USER KEY) 을 누르면 Preview동작을 멈추고
SD메모리에 BMP 파일로 저장을 합니다.


OV7670 카메라 모듈은 LQFP100 모듈 이상에서만 사용 하실 수 있습니다. 카메라 테스트는 KEIL 컴파일러에서만 이상이 없습니다.
IAR, RIDE7 프로젝트에서는 아직 디버깅 중에 있습니다. 구매하시기 전에 이점 유의해 주세요. .


stm32f103rbt6 stm32f103rbt6


5. 프로그래밍 가이드

컴파일을 하기 위해서는 제품 코어별로 predeifne 설정을 해야 합니다. define 설정에 관해서는 아래 표를 참조하시고
컴파일러별 설정 방법은 아래 컴파일러별 설정가이드를 참조하세요.

Rabbit 개발보드는 LQFP64에서 LCD를 제어하기 위해서 JTAG포트를 일반 GPIO포트로 활용하고 있습니다. 그래서 부팅시에 JTAG
모드 대신에 SWD모드(JTAG_Set(SWD_ENABLE))로 전환해서 사용하고 있습니다. 사용하시는 JTAG장비가 SWD모드를 지원한다면
장비의 디버그 모드를 SWD모드로 설정해서 사용하시기 바랍니다. 사용하시는 JTAG장비가 SWD모드를 지원하지 않는다면 CPU모듈의
점퍼를 ISP모드롤 전환한 후 Reset한 이후에 JTAG 장비를 이용해서 다운로드 하시기 바랍니다.


(1) JTAG장비별 SWD모드 세팅 방법(새창)

핀 사양별 분류
제품이름
predfine 설정
LQFP64 STM32F103R8T6 코어모듈
STM32F103RBT6 코어모듈
STM32F105RBT6 코어모듈
STM32F107RBT6 코어모듈
USE_STDPERIPH_DRIVER, STM32F10X_MD
USE_STDPERIPH_DRIVER, STM32F10X_MD
USE_STDPERIPH_DRIVER, STM32F10X_CL
USE_STDPERIPH_DRIVER, STM32F10X_CL
LQFP100 STM32F103VBT6 코어모듈
STM32F103VCT6 코어모듈
STM32F105VCT6 코어모듈
STM32F107VCT6 코어모듈
STM32F107VBT6 코어모듈
USE_STDPERIPH_DRIVER, STM32F10X_HD
USE_STDPERIPH_DRIVER, STM32F10X_HD
USE_STDPERIPH_DRIVER, STM32F10X_CL
USE_STDPERIPH_DRIVER, STM32F10X_CL
USE_STDPERIPH_DRIVER, STM32F10X_CL
LQFP144 STM32F103ZET6 코어모듈 USE_STDPERIPH_DRIVER, STM32F10X_HD

5.1 Keil MDK 4.02

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

5.2 IAR Workbench 5.4

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

5.3 RIDE7

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

5.4 GCC & 이클립스

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



6. Trouble shoot

6.1 OV7670 카메라 Preview issue

(1) 아래와 같이 ov7670.c 소스파일 수정 후 재 컴파일

- STM32F105, STM32F107 시리즈의 경우

void CLK_init_ON(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

// Clock output txz
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = CAMERA_XCLK_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ;
GPIO_Init(CAMERA_XCLK_PORT, &GPIO_InitStructure);

RCC_MCOConfig(RCC_MCO_HSI );//hsi

}

- STM32F103 시리즈의 경우 수정

void CLK_init_ON(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

// Clock output txz
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = CAMERA_XCLK_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ;
GPIO_Init(CAMERA_XCLK_PORT, &GPIO_InitStructure);

RCC_MCOConfig(RCC_MCO_HSE );//hse

}