Cortex-M/EFM322013. 4. 30. 23:30

EFM32G210 EVM - PWM테스트 (RGB LED 제어)

EFM32G210 EVM - PWM테스트 (RGB LED 제어)





EFM32는 6개의 PWM출력을 할수 있다. PWM을 이용하여  [Xmega32-EX EVM] 확장 테스트 보드에서 RGB LED 조면제어 테스트를 해 보았다.


EFM32 PWM 기능

- Up-count PWM

- Up/down-count PWM

- Predictable initial PWM output state (configured by SW)

- Buffered compare register to ensure glitch-free update of compare values




EFM32 PWM 출력 핀맵

EFM32는 PWM출력을 위한 2개의 타이머가 있고 각각 3채널, 6개의 PWM을 출력할 수 있다.






EFM32G210F128 Timer 블록도




3채널 PWM 출력 테스트를 위해 Xmega32-EX 확장 테스트 보드의 3색 컬러 LED를 이용하였다.




EFM32 PWM테스트 동영상





EFM32 PWM 초기화 코드

void InitPwm0(void)

{   

    //Enable clock for TIMER0 module

    CMU_ClockEnable(cmuClock_TIMER0, true);

   

    //Set CC0 location 4 pin (PA0) as output

    GPIO_PinModeSet(gpioPortA, 0, gpioModePushPull, 0);    

    // Set CC1 location 4 pin (PA1) as output 

    GPIO_PinModeSet(gpioPortA, 1, gpioModePushPull, 0);

    // Set CC2 location 4 pin (PA2) as output 

    GPIO_PinModeSet(gpioPortA, 2, gpioModePushPull, 1);      

  

    

    // Route CC0 to location 3 (PD1) and enable pin

    TIMER0->ROUTE |= (TIMER_ROUTE_CC0PEN | TIMER_ROUTE_CC1PEN |TIMER_ROUTE_CC2PEN | TIMER_ROUTE_LOCATION_LOC1); 


  

    /* Select CC channel parameters */

    TIMER_InitCC_TypeDef timerCCInit = 

    {

    .eventCtrl  = timerEventEveryEdge,

    .edge       = timerEdgeBoth,

    .prsSel     = timerPRSSELCh0,

    .cufoa      = timerOutputActionNone,

    .cofoa      = timerOutputActionNone,

    .cmoa       = timerOutputActionToggle,

    .mode       = timerCCModePWM,

    .filter     = false,

    .prsInput   = false,

    .coist      = false,

    .outInvert  = false,

    };


    

    /* Configure CC channel 0 */

    TIMER_InitCC(TIMER0, 0, &timerCCInit);

    /* Configure CC channel 1 */

    TIMER_InitCC(TIMER0, 1, &timerCCInit);

    /* Configure CC channel 2 */

    TIMER_InitCC(TIMER0, 2, &timerCCInit);

    

    

    /* Set Top Value */

    TIMER_TopSet(TIMER0, TOP);

    

    TIMER_CompareBufSet(TIMER0, 0, 0x7F);

    TIMER_CompareBufSet(TIMER0, 1, 0x7F);

    TIMER_CompareBufSet(TIMER0, 2, 0x7F);

  

    /* Select timer parameters */  

    

    /* With a clock of 48MHZ, a divider of 512 and a resolution of

     256/8 bit the PWM period frequency is approx  366 hz */

    

    TIMER_Init_TypeDef timerInit =

    {

    .enable     = true,

    .debugRun   = true,

    .prescale   = timerPrescale512,

    .clkSel     = timerClkSelHFPerClk,

    .fallAction = timerInputActionNone,

    .riseAction = timerInputActionNone,

    .mode       = timerModeUp,

    .dmaClrAct  = false,

    .quadModeX4 = false,

    .oneShot    = false,

    .sync       = false,

    };

    

    /* Configure timer */

    TIMER_Init(TIMER0, &timerInit);  

}



EFM32 PWM 테스트 소스코드

int main(void)

{

    char r,g,b;

    unsigned int cnt = 0;


    _SystemInit();


    // Ensure core frequency has been updated 

    SystemCoreClockUpdate();

    // Setup SysTick Timer for 1 msec interrupts  

    if (SysTick_Config(SystemCoreClock / 1000)) while (1) ;



    Led1Init();

    Led1Off();

    

    DebugInit(BAUD_115200);

    DebugPrint("EFM32 PWM Test\r\m");

    

   

    InitPwm0();

    LED_RgbSet(r, g, b);

    

while(1)

{

      if(msTicks>10)

      {

          msTicks = 0;

          g= 255-r;

          b= 128-g;

          

          LED_RgbSet(r, g, b);

          if(r<=1)

          {

              r=255;

              

              

              Delay(200);

          }

          else  r -=1;

      }

  }

}




Posted by nexp

댓글을 달아 주세요

[MODULE]/LED2012. 4. 10. 11:36

[IT1401] 정전류 LED 드라이버 구동 테스트

LED구동용 정전류 IC중 저렴한 IT1401, IT1402를 사용해서 LED조명 제어 테스트를 해 보았다.

 

 

 

IT1401 출력전류 계산

최대 90mA 까지 가능하며  아래와 같이 계산할 수 있다.

 

IOUT  =  (625/Rext)×106  = 66250 / Rext

 

 

 

 

IT1402 On/Off 제어

16채널을 각각 On/Off 가능하고 SPI형식으로 제어할 수 있다. 제어 방식은 아주 간단한데 16개 클럭 상승 에지에 원하는 데이터를 넣으면 된다.

 

 

IT1401 LED Dimming Test 동영상

MCU는 저련한 MSP430을 이용했고 PWM으로 Dimming 제어를 하고 있다.

 

 

Posted by nexp

댓글을 달아 주세요

  1. Jamaica

    관리자의 승인을 기다리고 있는 댓글입니다

    2012.09.28 10:19 [ ADDR : EDIT/ DEL : REPLY ]

[MyProject]2012. 1. 21. 21:25

[LAMP ] 면조명 보드 제작

[LAMP ] 면조명 보드 제작


카메라 광원용으로 면조명 장치 개발 중에 있다. 미션은 저렴하고 성능좋은 조명을 개발하는 것이다.

LED는 5050타입의 저렴한 White LED(0.1$대) 를 사용 했다.  3.2V, 60mA구동용 이다.

드라이버도 저렴해야 하는데... 
최대한 저렴하게 제작해야 하기 때문에 머리좀 굴렸다. (여러 다른 용도 대전류 구동을위해 추가 기능이 들어 있다.) 






밝기 및 On/Off제어를 위해 저렴한 MCU인 (많이 보유하고 있는) MSP430F2013을 이용했다. SPI, ADC, PWM 이 있기 때문에 편리하점이 많다.





LED 구동해 보았다. 일단 50% 미만으로 구동했다.
카메라 조리개를 최소로 하고도 밝은것을 확인 할 수 있다.

Posted by nexp

댓글을 달아 주세요

[MODULE]/LED2012. 1. 11. 18:41

[SFH 4239] 적외선 조명 테스트

[SFH 4239] 적외선 조명 테스트 

SFH 4239
max. DC-current 1 A

 

 

 

 

 

 

 

 

Posted by nexp
TAG IR, LED조명

댓글을 달아 주세요

[MSP430]/MSP430F20132012. 1. 9. 16:10

[MSP430F2013] 카메라 광원용으로 면조명 장치 MCU 선정

[MSP430F2013] 카메라 광원용으로 면조명 장치 MCU 선정

 

카메라 광원용으로 면조명 장치 개발 중에 있다. 미션은 저렴하고 성능좋은 조명을 개발하는 것이다.

드라이버도 저렴해야 하는데...
최대한 저렴하게 제작해야 하기 때문에 머리좀 굴렸다. (여러 다른 용도 대전류 구동을위해 추가 기능이 들어 있다.)

밝기 및 On/Off제어를 위해 저렴한 MCU인 MSP430F2013을 이용했다. SPI, ADC, PWM 이 있기 때문에 편리한 점이 많다.




LED는 5050타입의 저렴한 White LED 를 사용 했다.  3.2V, 60mA구동용 이다.









Posted by nexp

댓글을 달아 주세요