[MSP430F2x EVM] 보드를 추가 제작할 일이 있어 약간 수정하여 제작 하였다. 기존보드(MSP430 EVM ] rev4 보드)에서 추가 사항은 USB2UART모듈을 연결하여 USB전원 공급 및 UART연결이 가능하도록 수정 하였다. 그리고 MSP430 64핀 TQFP, QFN패키지 모두 사용 가능하고 F2X의 기본으로 사용할 수 있도록 했다.
MSP430F2X EVM 회로도
확장 테스트 보드
MSP430의 내부 풀업 저항 설정은 REN레지스터를 셋팅해 주면 된다.
MSP430 소비전류 측정 실험
MSP430F2013 기준으로 소비전류를 측정해 보았다.
우선 MSP430 데이터시트를 보면 아래와 같이 나타나 있다.
Low Supply Voltage Range 1.8 V to 3.6 V
Ultra-Low Power Consumption Programming Voltage Needed, Programmable
- Active Mode: 220uA at 1 MHz, 2.2V
- Standby Mode: 0.5uA
- Off Mode (RAM Retention): 0.1uA
우선 가장 기본 코드로 루프를 돌면서 3초에 한번씩 LED를 순간적으로 On/Off하는 코드를 돌려보았다.
기본코드는 1Mhz에서 동작한다.
측정 결과 340uA정도로 측정된다. 3.3V이므로 데이터시트와 크게 차이는 없는것 같다.
1Mhz에서 아무생각없이 동작시켜도 이정도라면 나쁘지 않은것 같다.
while(1)
{
Led1Off();
Delay(10);
Led1On();
Delay(3000);
}
16Mhz로 구동해 보니 2.7mA가 출력된다. 속도가 16배 빨라져서 그런가?
조금은 이상한데..
MSP430은 5단계의 저전력 모드가 있는데 그중에 LPM3 모드로 테스트 해 보았다.
평소 슬립모드에 있다가 와치독 타이머를 이용해 2~3초에 한번씩 깨어나 수행하는 코드이다.
MSP430 LPM3 모드에서 테스트 결과 0.4uA가 측정된다.
void main(void)
{
BCSCTL1 |= DIVA_1; // ACLK/2
BCSCTL3 |= LFXT1S_2; // ACLK = VLO
WDTCTL = WDT_ADLY_1000; // Interval timer
IE1 |= WDTIE; // Enable WDT interrupt
P1DIR = 0xFF; // All P1.x outputs
P1OUT = 0; // All P1.x reset
P2DIR = 0xFF; // All P2.x outputs
P2OUT = 0; // All P2.x reset
while(1)
{
int i;
Led1Off();
Delay(10);
Led1On();
_BIS_SR(LPM3_bits + GIE); // Enter LPM3
}
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer (void)
{
_BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)
}
MCU회사마다 저전력 측정 기준이 달라서 명확한 기준은 정하기 힘든것 같지만 어플리케이션에 따라 적절히 잘 선택해야 하지 않을까...
댓글을 달아 주세요