로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 응용소스
작성자 avrtools™        
작성일 2018/02/14
ㆍ추천: 0  ㆍ조회: 167   
  STM32F103C ARM32 기판의 독립 IDE 소개
ARM 32 비트 Coretex M3 계열의 기판을 Arduino IDE 1.8.5 에서 사용할 수 있다.
그리고 STM32 전용의 독립된 IDE로 COIDE와 MapleIDE가 있다. 상용버전으로는 KEIL IDE도 있다.
 
MapleIDE는 Maple-mini 기판의 전용 IDE다. ArduioIDE에서 STM32-duino로 사용할 수 있다.
STM32 DFU bootloader를 교체하면 기판의 USB로 아두이노 IDE에서 uploader tool로 작동된다.
Maple-mini의 STM32-duino의 DFU bootloader는 공개버전으로 아두이노 IDE에서 직렬포트로 작동된다.
STM32-duino의 DFU bootloader는 공개버전으로 Github 사이트에서 소스와 binary를 받을 수 있다.
 
 사용한 개발기판
STM32F103C8T6 ARMcore Mini 개발기판 (5,600~6,520원)
RAM 20K Flash  60K로 가장 저렴하고 흔한 기판이다 (중국산)


아두이노에서 STM32  F103C Maple로 개발이 가능하다.
STM-MINI Blue Pill 이라고 명칭이 나온다. 부품은 Red Pill 이 가장 좋다.

밑면의 R10으로 인쇄된 103 (10Kohm)을 152 (1.5Kohm)로 교환해야 USB 포트가 작동한다.
(그래도 아직은 드라이버가 없으므로 연결해도 USB장치 드라이버 실패로 나온다)

J-Link도 USB2serial도 필요없다. STM32F103C8 개발기판 자체만으로 사용자 펌웨어 굽기가 된다.
STM32F103C로 만든 DFU-bootloader를 탑재한 Maple-mini에 대해서 알아 볼 수 있다.
Maple-mini wiki 상세정보 : http://wiki.stm32duino.com/index.php?title=Maple_Mini

STM32F103C8T6 신형기판
Maple Mini 개발기판 (9,000원) <- 128K Flash로 연결포트가 많다.(중국산)

 
아두이노 IDE에서 펌웨어를 개조하거나 uploader가 필요없는 기판이다.
plug-and-play를 지원하므로 별도의 드라이버가 필요없다.
아두이노 IDE에서 STM32duino core를 설치하면,
Windows10 에서 bootloader의 드라이버가 자동으로 설치된다.

 STM32F103C8T6의 성능
STM32F100C8은 CPU의 핀 수에 비해서 기능이 많이 있는데, 중요한 기능만 살펴보자.

CPU Core는 ARM 32비트 Cortex TM-M3 CPU라고 계속 나온다. M7 성능을 계승한 M3 라고 한다,
CPU의 속도는 72 MHz로 90 DMIPS로 1.25 DMIPS/MHz 이다.
가로채기(interrupt)는 43개가 있고 금지(maskable)할 수 있다. 가로채기는 6 cpu cycle을 소비한다.

 
메모리는 RAM이 20 K 바이트, Flash는 32~128K 바이트, 작은 표준기판은 60K 바이트이다.
전원은 2.0 ~3.6 V 까지 작동된다. POR, PDR과 PVD (리셋 전압을 변경가능) 기능이 있다
공진기(resonator)는 4 ~16 MHz 수정발진기를 연결하고, 내부는 8MHz RC발진기가 있다.
 
POR은 전원인가리셋 (power on reset) 이며, 전원전압이 안정된 전압이 될 때 까지 기다리는 기능이다.
반대로 말하면 전원이 죽을 때 (power off stop) CPU 작동이 멈춘다. 아니면 무언가 엉망이 된다. 
CPU는 작동중 실행위치를 저장하면 그만큼 느려진다. 그러므로 CPU는 정지될 때 위치를 저장하기 어렵다.
하드웨어 감시기능으로 구현된다면, 전원차단으로 CPU가 정지하기 직전의 작동을 계속할 수 있다고 본다.


또한 RTC(실시간 시계)용으로 32 KHz RC 발진기를 내장하고 있다. (Backup 전지를 연결하면 RTC 작동)
STM32F103C 개발기판은 RTC용 외부 진동자(resonator)와 8MHz 수정진동자(quarts crystal)를 장착하고 있다.
외부 8MHz 수정진동자 혹은 내부 8 MHz RC발진기의 주파수로  PLL에서 72MHz의 CPU clock을 만든다.

그밖에 2 개의 12 비트 ADC는 16 채널의 multiplexer로 GPIO핀에 ADC 입력을 연결한다.
변환은 0 ~3.6 V이며, 2개의 채널을 동시에 사용할 수 있다. 내부 온도 센서가 있다.

DMA(하드웨어 직접 메모리 전송)는 7 개가 있다,  DMA는 주변장치의 입출력 속도를 빠르게 한다
SPI나 USART가 상당히 많이 있다. 그리고 SWD(serial wire debug = J-Link debug)와 JTAG 핀이 있다.
IO 핀 Level은 5V 신호를  허용한다. 이게 안되면 Level converter를 써야 한다.
IO 핀의 외부 가로채기는 16 개까지 가능하다. 내부 하드웨어 타이머는 7 개가 있다.

모든 타이머는 16 비트이며, 4개의 IC/OC/PWM 그리고 주파수 계수(pulse couner) 기능이 있다.
IC는 IO핀으로 들어오는 빠른 신호를 비교한다. 혹은 내부 타이머의 값을 비교할 수 있다.
물론 비교값이 일치하면 IC 가로채기를 발생한다. OC는 내부 타이머와 비교하여 IO핀으로 직접출력한다.

6개의 16 비트 타이머로 PWM을 출력할 수 있다. dead time도 설정할 수 있어 motor 제어에 편리하다
dead time 이란 +와 -를 출력하는 FET half bridge 출력회로에서 신호의 극성을 바꿀때,
출력의 극성을 바꾸는 교차시간에 타이머로 양쪽의 출력을 짧게 죽이는 기능이다. (cross short 방지)


그리고 CAN interface와 3개의 USART 가 있다. USART는 비동기 통신포트로 LIN이나 IrDA 기능이 있다.
2개의 SPI는 18 M비트/sec 까지 구동할 수 있다. 참고로 CAN은 2Mbit/s 이다.
마지막으로 펌웨어 upload로도 못쓰는 허수아비 USB는 2.0 full speed 규격이다.

 STM32F103C로 BLDC 모터제어를 한다면? 
 J-Link Isolator를 사용해야 한다. PC와 J-link는 USB로 연결하고,
이 ST-Link/V2 절연장치(isolator)에서 motor 회로와 절연해 준다. 
 

아두이노 IDE 1.8.5 
빠르고 편리하다, 아두이노 IDE의 ARM 32비트 컴파일러나 library도 편리하다.
  
보드설정은 " Generic STM32F103C series" 에 설정하는 것이 Flash 용량도 정확하다. 
또한 maple-mini와 Generic STM32F103C series는 GPIO 포트의 번호가 다르기 때문이다. 

github 사이트에서 받은 Arduino_STM32_master의 libaray를 점검해 보면,
가장 저렴한 STM32-Pill의 CPU와 기판에 인쇄된 포트번호가  Generic STM32F103C series와 일치한다.
어쨋든 보드가 달라도 upload 포트가 Maple-min COMx는 일치하며, upload도 완벽하게 된다.

Arduino IDE에서 도구(toool) → 기판(Board) → Maple Mini → COM port 를 선택해야 한다.
예제는 파일 → 예제 → A_STM32_Examples → Digital →  Blink를 선택하면 샘플 스케치가 나온다.

//  Blink : Turns on an LED on for one second, then off for one second, repeatedly.
//  STM32F103C8T6 STM32-duino Maple-mini DFU-bootloader

// setup function runs once when you press reset or power the board
void setup()
{
  // initialize digital pin PB1 as an output.
  pinMode(PC13, OUTPUT); // D13 on borad LED
}

 
// the loop function runs over and over again forever
void loop()
{
  digitalWrite(PC13, LOW);   // turn the LED on (LOW is the voltage level)
  delay(100);              // wait for a second
  digitalWrite(PC13, HIGH);    // turn the LED off by making the voltage HIGH
  delay(900);              // wait for a second
}


STM32F103C로 만든 복제 ST 개발기판은 내장 LED의 연결이 다르다, LED 포트를 알아야 한다.
STM32F103C 보드는 PA, PB, PC로 GPIO를 설정한다. STM32F103C8은 LED 핀이 PC13 이다.
아날로그 입력은 PA0~PA7, PB0~PB1 이다. 기판의 종류에 따라 핀 배치는 다르다.
 
그러나 STM32 driver의 hardware.h는 거의 이 규격에 일치한다.
이 기준은 C:\ Documents\hardware\에 설치한 Arduino_STM32_master를 IDE가 사용하기 때문이다.

STM32 Blue-Pill 기판의 핀 배치도를 참조하라. 
  

upload 모드로 들어가면 기판의 LED가 잠간 꺼진 다음, upload 전송이 시작되면 빠르게 깜빡인다.
1초 안에 upload가 없으면 깜빡이 속도가 느려진다. 그 다음에도  upload가 없으면 LED는 꺼진다.
이 기능은 UNO에서 리셋하면 bootloader가 작동하는 원리와 같다.
잘 안될 때는 reset 단추를 누르면 LED가 빠르게 깜빡이며 bootloader 모드로 들어간다.
 
기판에 장착된 PC13의 녹색 LED가 1초 간격으로 깜빡이면, 펌웨어 굽기에 성공한 것이다. 
STM32F103C 개발기판 펌웨어가 Maple-Mini로 변경되었고, 개발기판에 응용 펌웨어도 uploade가 잘 된다.
이제 부터는 점퍼도 옮길 필요가 없고, J-Link나 ST-Link 도 필요 없고, USB2serial도 필요 없다.
개발환경의 컴파일과 개발기판의 펌웨어 굽기가 잘 되므로, 지금부터 본격적으로 응용코드를 만들수 있다.

 Arduino IDE를 대체하는 STM32용 CoIDE의 소개
STM32의 전용 IDE는 CooCox  공개 ARm Coretex 개발도구(Develpment Toolschain)가 있다.
 
 
J-Link의 소프트웨어 디버거는 break point가 3개만 가능하며, 더 이상은 지원하지 않는다.
  
 
 STM32-duino Maple-mini IDE
유튜브나 인터넷을 찾아봐도, 기판 자체의 USB 포트를 쓰는 예을 찾아 볼 수가 없었다.

어렵게 STM32duino wiki 사이트에서 STM-duino의 부트로더 개조방법을 찾았다.
STM32F103C8 개발기판의 허수아비 USB 포트가 결국 펌웨어 굽기(Uploading Programmer) Tool로 작동한다.

STM32-duino Maple-mini wiki :  http://wiki.stm32duino.com/index.php?title=Installation
STM32-duino Maple-mini 회로도:  Maple_mini_clone_schematic.jpg(126.7KB)
STM32-duino Maple-mini 개발 사이트: http://www.leaflabs.com/
STM32-duino Maple-mini 공개 소스: https://github.com/leaflabs/maple
STM32-duino Maple-mini Arduino IDE Forums: http://www.stm32duino.com/

Maple IDE는 Arduino IDE와 거의 유사하며, STM32 소스개발에 적응된 고급 IDE 이다.
WindowsXP-x86 포터블 버전을 배포하고 있다. 받아서 압축을 풀고, maple-ide.exe만 실행하면 된다.
이것도 Arduino 포터블 버전과 완전히 일치한다. 별도로 컴파일 환경을 설정할 필요가 전혀 없다.

Maple IDE의 설정
Maple-mini IDE : http://docs.leaflabs.com/docs.leaflabs.com/index.html

Tools → Board → LeafLabs Maple rev3 to FLASH를 선택하고, Serial Port → COMx를 선택한다.
Maple-ide 에는 GCC compiler와 library 들이 모두 들어있어 그대로 사용하면 된다.
 

Maple IDE의 시험
maple IDe에서 Arduino 스케치 방법으로 12비트ADC를 A0와 A2 에서 연속으로 읽어서 전송한다
Arduino IDE와 동일한 Serial Minotor로 작동한다. 창크기도 작게 줄일 수 있다.
 

Maple IDE의 장점
Arduino에서 안되는 고속 12비트 ADC 처리, 16 비트 PWM, interrupt를 처리하려면 Maple IDE가 필요하다.   
STM32 개발용으로 특화된 12비트 ADC와 16개의 16비트 TIMER로 정밀한 16비트 PWM 신호를 만들 수 있다.
hardware timer로 만드는 PWM 출력은 매우 정밀하며, setup()에서 설정만 해주면 timer가 스스로 출력한다, 

 ST Atollic TrueStudio Tool-Chain과 STM32-cubeMX 코드생성기
최근 STM32F103C CPU 제조사인 ST에서 Atollic-True-Studio를 소개하는 용량제한 없는 공짜버전이 있다.
이전에는 사용으로 사용하면 유료이거나 용량제한이 있었지만, 얼마 전에 무제한으로 풀어졌다.

메뉴도 일부분은 한글이고, ST-cube에서 Tool-chain으로 아톨릭스튜디오를 설정하고,
STM32-CubeMx의 그래픽화면에서 사용할 CPU핀을 누르면 자동으로 코드를 만든다.
이후에 코드생성 단추를 누르면, Tools-cahin으로 연결된 아톨릭스튜디오로 소스코드가 연결된다.
 
코드 프로젝트 시작에서 그래픽(GUI) 화면으로 CPU의 핀을 누르면서, 만들 코드를 설정한다. 
STM32CubeMX→기판 (선택)→Clock, RCC, GPIO 등 필요한 주변장치를 설정할 수 있다.
 
STM32cubeMX에서 그래픽으로 설정한 I/O 핀들을 그림으로 보여준다.

 
Menu→Project(P)→Settings→Project Setting→Toolchain(개발도구 IDE) 에서
TrueStudio는 TrueStudio용 코드를 생성할 수 있고, STM32는 Eclipse+GCC 코드를 생성할 수 있다.
 
STM32-cubeMX 메뉴판에 표시된(코드생성) 아이콘을 누르면, 설정한 Tool-Chain으로 소스를 보낸다.
 
 
만일 STM32-cubeMX에 32F103C8의 firmware 파일이 없다면, 자동으로 받아서 풀어서 소스를 보내준다.
아직은 파일받는 속도도 느리고, 생성도 조금 느리지만, 이만하면 훌륭한 기능라고 평가한다.
 
Tools-chain으로 설정한 C:\STM32\Work\Src\에 STM32-cubeMX가 만든 소스가 들어간다. 
 

 아톨릭-스튜디오
설치파일 받기:  Atollic_TrueSTUDIO_for_STM32_windows_x86_v9.0.0_20180117-1023.exe
일단 블록으로 표시된 부분을 누르면 신청서가 나오는데, 이름, 이메일 등을 간단히 쓰고 신청을 누른다.
  

파일받기를 누르고, 받은 파일을 작동시키면 설치를 시작한다. ST-Link나 J-Link를 설치하라면 OK한다.
 
 
설치가 끝나고, 바탕화면에 바로가기가 안보이면, 다음 위치에서 바로가기를 바탕화면으로 복사한다.
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Atollic\TrueSTUDIO for STM32 9.0.0\
  
 
이제 아톨릭 스튜디오를 작동해 보자, 실행직후에 작업 장소를 묻는다. 나는 C:\STM32\Work\로 했다.
 
 
설치가 시작되면 태평양의 바닷가 화면이 나오고, 설치를 시작한다.
 
 
C:\STM32\Work\로 들어가니 벌써 Work 폴더와 .metadata 폴더가 만들어 졌다.
다음 사진은 .metadata 폴더의 내용이다.
 
 
이제 아톨릭 스튜디오를 시작해 보자, 바로가기를 누르니 아톨릭 스튜디오의 창이 떳다.
 
 
먼저 파일(F)→새로 만들기→TrueStore에서 새로운 예제 프로젝트 다운로드 →
STMicroelectronics→STM103-STM32-SK(IAR)→STM32F102-STM32-SK_embOS를 선택한다.
  
C:STM32Work에 가면 STM32F103_STM32_SK_embOS 폴더 안에 소스가 들어왔다.
 
 
embOSView.exe를 누르면 embOSView 창이 뜬다. 아직 시험하지 않았지만,
STM32F103 기판에 프로젝트 소스를 컴파일해서 구우면 이 소프트웨어로 연결할 것 같다.
이제 아톨릭스튜디오의 컴파일러를 GNU ARM32로 설정해 주어야 한다.
  
PDF 파일이 2개 보이는데, embOS의 설명서다. Real-Time Operating System이 제목, 
CPU & Compiler specifics for Cortex M using Atollic TrueStudio 라고 설명이 나온다.
아톨릭 스튜디오로 ARM-Coretex M3 계열의 CPU와 컴파일러의 성능을 보는 소스다.
Segger사의 J-Link나 ST-Link로 LED를 깜빡이는 예제를 Debug 모드를 시험하는 용도다.
 
아직 아톨릭 스튜디오를 실제로 규모있는 프로젝트를 만들고 시험하지 못했지만,
아톨릭 스튜디오의 장점은 STM32 CPU 기판을 쓸 때, 하드웨어 세팅을 편하게 할 수 있다.

 이 펌웨어 소스를 응용한 장치의 개발이나, 주문형 펌웨어가 들어간 모듈 주문 받습니다.
 이자료의 무단 복제 및 무단 배포를 금지합니다.
이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
 AVRTOOLS™
   
윗글 STM32F103C 기판의 SSD1306 OLED 구동
아래글 STM32F103C ARM32 기판의 Bootloader 개조
    N         제목    글쓴이 작성일 조회 추천
아듀이노 응용소스 게시판 avrtools™ 2016/02/05 (금) 423 0
41 STM32F103C 12비트 정현파 DDS V2 avrtools™ 2018/03/08 (목) 109 0
40 STM32F103C ILI9341 TFTLCD Scope V2 avrtools™ 2018/03/05 (월) 132 0
39 STM32F103C 32비트 ARM-CPU 2채널 Scope avrtools™ 2018/02/25 (일) 138 0
38 STM32F103C의 ILI9341 ILI9163 TFT-LCD 연결방법 avrtools™ 2018/02/19 (월) 137 0
37 STM32F103C+MCP4725 DDS 1KHz 정현파 발생기 avrtools™ 2018/02/18 (일) 135 0
36 STM32F103C 기판의 1~8CH ADC DMA 전송 avrtools™ 2018/02/17 (토) 136 0
35 STM32F103C 기판의 SSD1306 OLED 구동 avrtools™ 2018/02/16 (금) 132 0
34 STM32F103C ARM32 기판의 독립 IDE 소개 avrtools™ 2018/02/14 (수) 167 0
33 STM32F103C ARM32 기판의 Bootloader 개조 avrtools™ 2018/02/14 (수) 174 0
32 ESP32+OLED 기판과 PWM generator avrtools™ 2018/02/11 (일) 135 0
31 Wemos-Lolin32 Audio FFT Analyzer 제작 avrtools™ 2018/02/07 (수) 141 0
30 DUE SAM3X8E Audio FFT Analyzer 제작 avrtools™ 2018/01/30 (화) 155 0
29 AD5933 LCR-Impedance Analyzer 제작 avrtools™ 2012/03/17 (토) 661 0
28 ESP-01 펌웨어 업그레이드와 WiFi 2 Relay Control avrtools™ 2017/12/24 (일) 133 0
27 ESP12E-devKit로 만드는 WiFi 4 Relay 제어장치 avrtools™ 2017/12/23 (토) 155 0
26 M328-mini로 만드는 Touch 용량검출센서 avrtools™ 2017/12/19 (화) 142 0
25 ESP8266 MQTT Relay Control avrtools™ 2016/03/03 (목) 626 0
24 2 채널 ESP8266 WiFi Switch의 제작 avrtools™ 2016/02/25 (목) 784 0
23 ESP-12E SDK 0.9.5 사용방법 avrtools™ 2016/02/18 (목) 672 0
22 ESP8266 ESP-12E WiFi 센서 서버의 제작 avrtools™ 2016/02/17 (수) 635 0
21 Arduino DS3231 RTC to 5110 LCD avrtools™ 2016/02/16 (화) 643 0
20 ESP8266 Weather Server의 제작 avrtools™ 2016/02/15 (월) 678 0
19 Arduino 온습도 센서 DHT-22 avrtools™ 2016/02/12 (금) 558 0
18 ESP8266 WiFi 펌웨어 업그레이드 avrtools™ 2016/02/11 (목) 878 0
17 Arduion ESP8266 WiFi 설정 방법 avrtools™ 2016/02/10 (수) 859 0
16 Arduino 정전용량식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 477 0
15 Arduino 전극식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 623 0
14 Arduino 정밀 전력계의 ADC avrtools™ 2016/02/02 (화) 903 0
13 Arduino 정밀 전력계의 LPF avrtools™ 2016/02/02 (화) 616 0
12 Ardunio 16비트 ADC Data Logger avrtools™ 2016/01/31 (일) 512 0
11 Arduino AC/DC Power Meter의 제작 avrtools™ 2016/01/29 (금) 1019 0
10 Arduino 교류 역율계(power factor)의 제작 avrtools™ 2016/01/29 (금) 651 0
9 Arduino DUE Pezo-SPeaker LCQ Meter 소스 avrtools™ 2016/01/24 (일) 425 0
8 QTouch ADC 근접검출 스위치 avrtools™ 2016/01/21 (목) 652 0
7 Arduino 음성인식 Speech/Voice Recognition avrtools™ 2013/09/14 (토) 1872 0
6 Arduino Uno로 만드는 3축 CNC avrtools™ 2013/09/10 (화) 2812 0
5 Arduino로 만드는 mySpectral 분광기 avrtools™ 2013/09/04 (수) 2335 0
4 8채널 12비트 ADC MCP3208 오실로스코프 avrtools™ 2012/03/29 (목) 708 0
3 교류저항 (impedance) 측정 AD5933 avrtools™ 2012/03/17 (토) 648 0
2 Arduino DMX512 수신기 제작 avrtools™ 2012/03/15 (목) 3922 0
1 TSL2561 조도 측정기의 제작 avrtools™ 2011/09/11 (일) 2874 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0