Cortex-M/EFM322013. 4. 30. 20:00

EFM32 성능테스트 - 클럭 설정 및 소비 전류 테스트

EFM32 성능테스트 - 클럭 설정 및 소비 전류 테스트

 

EFM32 는 Cortex-M3코어의 저전력 기능이 강화된 MCU이다. 저전력을 위해 여러가지 기능들이 많이 있다.

저전력 기능중 가장 큰 부분인 클럭 부분을 살펴 보면 칩내부에 있는 HFRCO, LFRCO 와, 칩외부에서 공급할수 있는 HFXO, LFXO로 나누어 진다.
초기에 리셋되면 디폴트로 내부 28Mhz를 2분주한 14Mhz로 구동이 된다.

 

HFRCO : 1-28 Mhz High Frequency RC Oscillator

LFRCO: 32.768 kHz Low Frequency RC Oscillator


HFXO: 4-32 Mhz High Frequency Crystal Oscillator

LFXO: 32.768 kHz Low Frequency Crystal Oscillator

 

 

 EFM32 클럭 구조

 

 

EFM32 클럭 블록도



 

클럭 설정은 CMU_HFRCOBandSet() 함수를 이용하여 설정 가능하고 1Mhz ~ 28Mhz 로 설정할 수 있다.

typedef enum
{
  /** 1MHz RC band. */
  cmuHFRCOBand_1MHz  = _CMU_HFRCOCTRL_BAND_1MHZ,
  /** 7MHz RC band. */
  cmuHFRCOBand_7MHz  = _CMU_HFRCOCTRL_BAND_7MHZ,
  /** 11MHz RC band. */
  cmuHFRCOBand_11MHz = _CMU_HFRCOCTRL_BAND_11MHZ,
  /** 14MHz RC band. */
  cmuHFRCOBand_14MHz = _CMU_HFRCOCTRL_BAND_14MHZ,
  /** 21MHz RC band. */
  cmuHFRCOBand_21MHz = _CMU_HFRCOCTRL_BAND_21MHZ,
  /** 28MHz RC band. */
  cmuHFRCOBand_28MHz = _CMU_HFRCOCTRL_BAND_28MHZ
} CMU_HFRCOBand_TypeDef;

 

 

CMU_ClockDivSet() 함수로 클럭 분주를 아주 세밀하고 자유롭게 설정할 수 있다.

typedef enum
{
  cmuClkDiv_1     = 0,  /**< Divide clock by 1. */
  cmuClkDiv_2     = 1,  /**< Divide clock by 2. */
  cmuClkDiv_4     = 2,  /**< Divide clock by 4. */
  cmuClkDiv_8     = 3,  /**< Divide clock by 8. */
  cmuClkDiv_16    = 4,  /**< Divide clock by 16. */
  cmuClkDiv_32    = 5,  /**< Divide clock by 32. */
  cmuClkDiv_64    = 6,  /**< Divide clock by 64. */
  cmuClkDiv_128   = 7,  /**< Divide clock by 128. */
  cmuClkDiv_256   = 8,  /**< Divide clock by 256. */
  cmuClkDiv_512   = 9,  /**< Divide clock by 512. */
  cmuClkDiv_1024  = 10, /**< Divide clock by 1024. */
  cmuClkDiv_2048  = 11, /**< Divide clock by 2048. */
  cmuClkDiv_4096  = 12, /**< Divide clock by 4096. */
  cmuClkDiv_8192  = 13, /**< Divide clock by 8192. */
  cmuClkDiv_16384 = 14, /**< Divide clock by 16384. */
  cmuClkDiv_32768 = 15  /**< Divide clock by 32768. */
} CMU_ClkDiv_TypeDef;

 

 

 

 

프로젝트 별로 구동 속도를 쉽게 변경할 수 있도록 config.h 에 정의해 두었다.

// Prescale the HFPERCLK -> HF/4 = 28/1 = 28Mhz
#define _SET_MCU_CLK_()                    CMU_HFRCOBandSet(cmuHFRCOBand_28MHz);\
                                                                   CMU_ClockDivSet(cmuClock_HFPER, cmuClkDiv_1)


 

 


우선 아무 설정 없이 기본 동작 시킨후 GPIO 토글 속도를 측정해 보았다.

14Mhz 구동에서  1.17Mhz 로 측정된다.

 

 

최고 속도인 28Mhz로 구동시 테스트

28Mhz -> 2.35Mhz

 

GPIO토글이 아닌 On/Off 만 했을때 3Mhz 정도 나온다.

이때 소비 전류는 7mA 이다.

 

속도 면으로 보면 동급 클럭의 MCU에 비해 그렇게 빠르지는 않은데 소비 전류는 확실히 적은것 같다.

[참고] MCU속도 측정 결과 

 

클럭을 더 낮추어 1Mhz로 구동시 소비 전류 특정 결과

500uA

 


 

 

 


 

Posted by nexp

댓글을 달아 주세요

Cortex-M/EFM322013. 4. 28. 23:00

[EFM32G EVM] 프로그램 다운로드 - 부트모드에서 UART로 다운로드하기

[EFM32G EVM] 프로그램 다운로드 - 부트모드에서 UART로 다운로드하기

 

 

 EFM32는 출하시에 UART를 통해 펌웨어를 업데이트 할수 있는 부터로더가 Wirte 되있어 특별한 장비 없이 UART를 이용하여 프로그램을 다운로드 할수 있다.

 

주의사항으로 부트로더는 0번지에 저장되어 있으므로 JTAG를 이용하여 0번지에 다운로드 했다면 부트로더가 지워진다. 그리고  X-Modem을 사용하지 않으면 부트로더가 지워질 수 있다.

지워지면 컴파일된 부트로더를 0번지에 다시 다운로드 할 수 있다.

 

bootloader-gecko.bin

 

아쉬운점이 있다면 ST사처럼 다운로드 전용 프로그램이 있으면 좋을것 같다는 생각이 든다.

 


 

기본적으로 USER 모드로 부팅되고 PF0핀이 Low 상태에서 reset 하면 부트모드로 진입한다.

[EFM32G EVM] 보드에서는 SW10을 누르상태에서 리셋하면 된다.

 

 

부트모드 진입여부를 확인하려면 UART를 연결하고 하이퍼 터미널에서 'U'를 입력하면 Chip ID를 출력해 주는것을 확인할 수 있다.

 

 

사용자 프로그램은 0x800 번지에서 시작된다. 컴파일 할 때 0x800번지에 생성되도록 icf파일을 수정해 주어야 한다.

 

EFM32G280F128_BOOT.icf

define symbol __ICFEDIT_intvec_start__ = 0x00000800;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__   = 0x00000800;
define symbol __ICFEDIT_region_ROM_end__     = (0x00000800+0x00020000-1);
define symbol __ICFEDIT_region_RAM_start__   = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__     = (0x20000000+0x00004000-1);

 

 

 

프로그램 다운로드

'u' 를 입력하면 프로그램을 X-Modem 프로토콜으로 다운로드 할수 있다.

 

 

 

 

 

프로그램 다운로드 후 reset 스위치를 누르면 실행되는것을 확인할 수 있다.

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

Cortex-M/EFM322013. 4. 28. 22:00

[EFM32G EVM] EFM32G210F128 테스트 보드 제작

 [EFM32G EVM] EFM32G210F128 테스트 보드 제작

 

 

EFM32는 Energy Micro사의 저전력 MCU로 Cortx-M3 코어 기반으로 좀더 고성능의 저전력 솔루션으로 사용할 수 있을것 같아 테스트 보드를 제작해 보았다.

 

EFM 시리즈중 GECKO 시리즈는 저렴하고 국내에서 쉽게 구할 수 있다고 해서 쉬베 테스트 할수 있도록 [S-Type  EVM] 형태로 제작했다.

 

 

 

 

 

표준화된 핀맵으로 제작해 여러 확장 테스트 보드에서 쉽게 테스트 가능하다.

 

 

 

 

[EFM32G EVM ] 회로도

 

Posted by nexp

댓글을 달아 주세요

Cortex-M/EFM322012. 12. 31. 23:30

[EFM32] STK PINOUT

 [EFM32] STK PINOUT




Posted by nexp
TAG EFM32

댓글을 달아 주세요

Cortex-M/EFM322012. 12. 31. 23:30

[EFM32] SWD JTAG - JLINK 핀맵

[EFM32] SWD JTAG - JLINK 핀맵

EFM32G210은 28핀으로 SWD를 지원한다.

 

 

 

 

 

 

Posted by nexp
TAG EFM32, J-LINK, swd

댓글을 달아 주세요