[MSP430FR2311 EVM] FRAM 테스트

[MSP430]/MSP430_FRAM | 2017.03.30 00:42
Posted by nexp

[MSP430FR2311 EVM] FRAM 테스트





MSP430FR2311 의 최대 장점은 FRAM이다. RAM의 장점인 쉽고 빠르게 Read/Write 하고, FLASH의 장점인 전원 Off시 데이터 유지하는 장점을 가지고 있어서 저전력의 데이터 로깅 시스템에 적용하기에 좋은것 같다.


이러한 MSP430의 FRAM에 읽고 쓰는 테스트 를 해 보았다.



MSP430F2311 FRAM 블록도





FRAM에 Write 하는 코드는 상당히 간단하다.


void FRAMWrite(unsigned long *FRAM_write_ptr, unsigned long Data)

{

    SYSCFG0 = FRWPPW;


    *FRAM_write_ptr = Data;


    SYSCFG0 = FRWPPW | PFWP;

}



void FRAMWriteBuffer(unsigned long *FRAM_write_ptr, unsigned long *pBuf, unsigned int Size)

{

    unsigned int i=0;


    SYSCFG0 = FRWPPW;

    for (i = 0; i < Size; i++)

    {

        *FRAM_write_ptr++ = pBuf[i];

    }

    SYSCFG0 = FRWPPW | PFWP;

}



MSP430FR2311의 FRAM 메모리 주소는 아래와 같이 FFFF-FF80, FFFF-FF100로 코드 메모리와 같이 사용할 수 있다. 예제에서는 FD00에서 테스트 했다.


저작자 표시 비영리 변경 금지
신고

[MSP430FR2311 EVM] ADC테스트 - 내장 온도 센서 테스트



MSP430FR2311 는 10bit, 12bit ADC가 8채널이 있다. 최대 200ksps 까지 변환 가능하기존 MSP430시리즈와 크게 차이는 없지만 FRAM을 사용하면 장점이 될만한 기능이 있는것 같다.



MSP430FR2311 ADC 블록도



MSP430FR2311 ADC 초기화 코드


    // Configure ADC - Pulse sample mode; ADCSC trigger

    ADCCTL0 |= ADCSHT_8 | ADCON;                                  // ADC ON,temperature sample period>30us

    ADCCTL1 |= ADCSHP;                                            // s/w trig, single ch/conv, MODOSC

    ADCCTL2 |= ADCRES;                                            // 10-bit conversion results

    ADCMCTL0 |= ADCSREF_1 | ADCINCH_12;                           // ADC input ch A12 => temp sense

    ADCIE |=ADCIE0;                                               // Enable the Interrupt request for a completed ADC_B conversion


    // Configure reference

    PMMCTL0_H = PMMPW_H;                                          // Unlock the PMM registers

    PMMCTL2 |= INTREFEN | TSENSOREN;                              // Enable internal reference and temperature sensor





MSP430FR2311 온도센서 특성 그래프



MSP430FR2311 ADC 인터럽트 핸들러

// ADC interrupt service routine

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=ADC_VECTOR

__interrupt void ADC_ISR(void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(ADC_VECTOR))) ADC_ISR (void)

#else

#error Compiler not supported!

#endif

{

    switch(__even_in_range(ADCIV,ADCIV_ADCIFG))

    {

        case ADCIV_NONE:

            break;

        case ADCIV_ADCOVIFG:

            break;

        case ADCIV_ADCTOVIFG:

            break;

        case ADCIV_ADCHIIFG:

            break;

        case ADCIV_ADCLOIFG:

            break;

        case ADCIV_ADCINIFG:

            break;

        case ADCIV_ADCIFG:

            temp = ADCMEM0;

            // Temperature in Celsius

            // The temperature (Temp, C)=

            IntDegC = (temp-CALADC_15V_30C)*(85-30)/(CALADC_15V_85C-CALADC_15V_30C)+30;


            // Temperature in Fahrenheit

            // Tf = (9/5)*Tc | 32

            IntDegF = 9*IntDegC/5+32;

            //__bic_SR_register_on_exit(LPM3_bits);               // Exit LPM3


            break;

        default:

            break;

    }

}










저작자 표시 비영리 변경 금지
신고

[MSP430FR2311 EVM] UART 테스트

[MSP430]/MSP430_FRAM | 2017.03.30 00:38
Posted by nexp

[MSP430FR2311 EVM] UART 테스트







MSP430FR2311 UART 초기화 코드

MSP430 UART Baudrate 설정 생성코드 참고


    // Configure UART pins

     P1SEL0 |= BIT6 | BIT7;                    // set 2-UART pin as second function



       // Configure UART

     UCA0CTLW0 |= UCSWRST;                     // Put eUSCI in reset

     UCA0CTLW0 |= UCSSEL__SMCLK;


     // Baud Rate calculation

     UCA0BR0 = 8;                              // 1000000/115200 = 8.68

     UCA0MCTLW = 0xD600;                 // 1000000/115200 - INT(1000000/115200)=0.68

                                                     // UCBRSx value = 0xD6 (See UG)

     UCA0BR1 = 0;

     UCA0CTLW0 &= ~UCSWRST;          // Initialize eUSCI



MSP430 에서 UART 보레이트 설정시 항상 문제가 되던 부분은 오차율인데... MCTLW 레지스터를 설정하면  보상 가능하다.


ex) 115200 @ 1Mhz 

1000000/115200 - INT(1000000/115200)=0.68

0.68 => 0.6667 -> 0xD6 





MSP430FR2311 UART 송수신 코드

unsigned char U0_GetByte(void)

{

while(!(UCA0IFG & UCRXIFG));

return UCA0RXBUF;

}


void U0_PutByte(unsigned char Data)

{

    UCA0TXBUF = Data;

    while(!(UCA0IFG & UCTXIFG));

}




참고로 CCS 에는 시리얼 포트 터미널창이 있어 간단히 UART 테스트를 해 볼수 있다.




저작자 표시 비영리 변경 금지
신고

[MSP430FR2311 EVM] 개발환경 설정 - CCS7 무료컴파일러 사용하기




MSP430FR2x 시리즈를 개발하기 위한 환경으로 IAR 최신 버전이 필요하다. 

MSP430 Kickstart 버전을 다운 받으려고 사이트 들어가니 CCSv7(Code Composer Studio V7) 가 무료(솔깃~)라고 한다.


이참에 CCS로 한번 테스트 해볼까?


우선 CCS를 다운 받자

Code Composer Studio V7Sv7     



프로그램 설치 후 MSP430FR2311 디바이스로 새로운 프로젝트를 생성한다. 특별히 설정할것 없이 그냥 간단하게 프로젝트 생성 가능하다.





간단히 LED제어 하는 예제 작성후 다운로드 해보자





다운로드 후 디버깅 환경으로 들어가고 문제 없이 디버깅 되는것을 확인할 수 있다.

예전 버전에서는 툴자체가 불안하고 느렸으며 설정도 복잡 했었는데..

상당히 깔끔하게 잘 동작 하는것 같다. 



앞으로 MSP430 개발에서는 CCS를 적극 활용하는 방향으로 진행해 봐야 할것 같다.



저작자 표시 비영리 변경 금지
신고

[MSP430FR2311 EVM] 보드 제작

[MSP430]/MSP430_FRAM | 2017.03.23 16:04
Posted by nexp

[MSP430FR2311 EVM] 보드 제작






FRAM 기반의 MSP430FR2311을 테스트 할수 있는 보드를 S-Type EVM 형태로 제작 했다.


주요 특징은 아래와 같다.

- 16-Bit RISC Architecture up to 16 MHz

- Active Mode: 126 µA/MHz


- 8-Channel 10-Bit Analog-to-Digital Converter (ADC)

  - Internal 1.5-V Reference

  - Sample-and-Hold 200 ksps


- 6-Bit Digital-to-Analog Converter (DAC) as Reference Voltage

- Smart Analog Combo (SAC-L1)

 -Supports General-Purpose OA

 -Rail-to-Rail Input and Output

 -Multiple Input Selections

 - Current-to-Voltage Conversion


- ±1% Accuracy With On-Chip Reference at Room Temperature

- On-Chip Very Low-Frequency 10-kHz Oscillator (VLO)

- On-Chip High-Frequency Modulation Oscillator (MODOSC)


아날로그 쪽으로 여러가지 기능들이 많이 보강되어 있는데 아무래도 FRAM을 잘 활용할 수 있는 센서 쪽으로 타겟을 하고 있는듯 하다.

특히나 Smart Analog Combo 모듈이 눈여겨 볼 만한것 같다.



아쉬운점이 있다면 기존 MSP430 시리즈(20핀 기준)와는 핀맵 구조가 완전히 달라져서 새롭게 PCB제작 해야 한다는것이다.

큰 회사들의 단점인가?

ST같은 회사는 같은 핀맵, 같은 개발환경을 유지 할수 있도록 하는데... 그런면에서는 아쉬움이 많다.



기능은 많이 추가 되어서 여러가지 용도로 사용하기에 좋은것 같다.







MSP430FR 확장 테스트 보드

표준 핀맵으로 제작해서 여러 다양한 확장 테스트 보드에 연결해서 테스트 가능하도록 했다.











MSP430FR2311 EVM PINMAP 회로도





저작자 표시 비영리 변경 금지
신고
MSP430FR - FRAM MCU 소형 타입 검토

FRAM 메모리를 가진 소형 저가격의 TSSOP타입의 MSP430FR2x 시리즈가 출시되었다.

기존의 MSP430FR5937 EVM 보드 제작 했을때 패키지 크기가 마음에 안들었는데.. 3x3mm QFN, TSSOP 16핀 타입으로 작고 저렴하게 나왔다.


FRAM MCU의 특징은 아래와 같다.

FRAM은 비휘발성으로 전원이 꺼졌을 때 콘텐츠를 유지된다. 

읽고 쓰는 속도가 상당히 빠르다. (MSP 마이크로컨트롤러에 내장된 FRAM은 최대 8MHz의 속도로 액세스(읽기 또는 쓰기)할 수 있다고 한다. MCU 플래시 쓰기 속도는 약 14KBps)

FRAM에 쓰고 FRAM에서 읽는 방식은 SRAM과 유사해서 쓰기 전 사전 삭제와 같은 설정이나 준비 또는 제어 레지스터의 잠금 해제가 필요 없다.

FRAM은 분할되어 있지 않으며 각 비트는 개별적으로 삭제, 쓰기, 주소 지정이 가능하다.

FRAM 세그먼트는 쓰기 전 삭제가 필요하지 않다. FRAM에 쓸 때는 전하 펌프가 필요하지 않기 때문에 FRAM 쓰기 액세스는 소비 전력이 낮다.


*참고로 FRAM은 SRAM보다 더 많은 전력을 소비하고 약간 더 빠르므로 가장 많이 액세스하는 데이터(예를들어 스텍메모리)는 SRAM를 사용하라고 한다





이런 특징들을 볼때 저전력의 백업시스템이 필요한 어플리캐에션에 적합할것 같다. 특히 데이터 로깅 시스템에 적용하면 좋을것 같다.




저작자 표시 비영리 변경 금지
신고

블로그 이미지

nexp

카테고리

분류 전체보기 (1550)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (128)
[FreeScale] (31)
[MSP430] (139)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (210)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (127)
[SENSOR] (41)
[DATA] (21)
[FPGA] (29)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)

티스토리 툴바