[MSP430]/MSP4322016. 5. 16. 22:22

MSP432 JLINK JTAG SWD 오류

 잘 동작하던 MSP432 JTAG가 붙었다 안붙었다(안붙는 경우가 더 많음) 하는 현상이 발생 했는데...

여러가지 시도 끝에 JTAG에서 공급되는 전원을 차단하니 잘 동작 한다.


전원레벨차이가 아닐까 싶다.


다음에는 JTAG전원 사용여부를 선택하는 비드를 추가 해두어야 할것 같다.

Posted by nexp
TAG MSP432

댓글을 달아 주세요

[MSP430]/MSP4322016. 5. 16. 15:06

MSP432 - GPIO 스위치 인터럽트 테스트

MSP432  - GPIO 스위치 인터럽트 테스트



MSP432 EVM에는 2개의 LED와 1개 스위치가 있고 GPIO인터럽트를 테스트 하기 위해 P10.3에 연결되어 있는 스위치로 테스트 해 보았다.



MSP432 GPIO 인터럽트 초기화 코드

   MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P10, GPIO_PIN3);

    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P10, GPIO_PIN3);

    MAP_GPIO_enableInterrupt(GPIO_PORT_P10, GPIO_PIN3);



    /* Enabling interrupts and starting the watchdog timer */

    MAP_Interrupt_enableInterrupt(INT_PORT10);

    MAP_Interrupt_enableSleepOnIsrExit();

    MAP_Interrupt_enableMaster();




MSP432 GPIO 인터럽트 핸들러

void PORT10_IRQHandler(void)

{

    uint32_t status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P10);

    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P10, status);


    if (status & GPIO_PIN10)

    {


    }

}


Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP4322016. 5. 16. 14:38

MSP432 EVM - SPI테스트

MSP432 EVM - SPI테스트



[MSP432 EVM] 보드의 SPI 포트는 UCB1 P6.2, P6.3, P6.4, P6.5에 할당되어 있다. SPI로 핀을 할당하기 위해 코드에서 아래와 같이 설정해 주면 된다.




void PinMuxConfig(void)

{

    //

    // Configure P6.3 for EUSCI_B1_SPI_I2C EUSCI_B1_SPI_I2C.CLK

    //

    MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P6, GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);

    //

    // Configure P6.4 for EUSCI_B1_SPI_I2C EUSCI_B1_SPI_I2C.SIMO

    //

    MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P6, GPIO_PIN4, GPIO_PRIMARY_MODULE_FUNCTION);

    //

    // Configure P6.5 for EUSCI_B1_SPI_I2C EUSCI_B1_SPI_I2C.SOMI

    //

    MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P6, GPIO_PIN5, GPIO_PRIMARY_MODULE_FUNCTION);

    //

    // Configure P6.2 for EUSCI_B1_SPI_I2C EUSCI_B1_SPI_I2C.STE

    //

    MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P6, GPIO_PIN2, GPIO_PRIMARY_MODULE_FUNCTION);

}





MSP432 SPI 초기화 함수

/* SPI Master Configuration Parameter */

const eUSCI_SPI_MasterConfig spiMasterConfig =

{

        EUSCI_B_SPI_CLOCKSOURCE_SMCLK,             // SMCLK Clock Source

        3000000,                                   // SMCLK = DCO = 3MHZ

        500000,                                    // SPICLK = 500khz

        EUSCI_B_SPI_MSB_FIRST,                     // MSB First

        EUSCI_B_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT,    // Phase

        EUSCI_B_SPI_CLOCKPOLARITY_INACTIVITY_HIGH, // High polarity

        EUSCI_B_SPI_3PIN                           // 3Wire SPI Mode

};



void SPI0_Init(void)

{

    /* Selecting  SPI mode */

    PinMuxConfig();


    /* Configuring SPI in 3wire master mode */

    SPI_initMaster(EUSCI_B0_BASE, &spiMasterConfig);


    /* Enable SPI module */

    SPI_enableModule(EUSCI_B0_BASE);


    /* Enabling interrupts */

    SPI_enableInterrupt(EUSCI_B0_BASE, EUSCI_B_SPI_RECEIVE_INTERRUPT);

    Interrupt_enableInterrupt(INT_EUSCIB0);

    Interrupt_enableSleepOnIsrExit();

    TXData = 0x01;

}





MSP432 SPI 송수신 함수

unsigned char SPI0_WriteReadByte(unsigned char Data)

{

        while (!(SPI_getInterruptStatus(EUSCI_B0_BASE, EUSCI_B_SPI_TRANSMIT_INTERRUPT)));


        RXData = SPI_receiveData(EUSCI_B0_BASE);


        /* Send the next data packet */

        SPI_transmitData(EUSCI_B0_BASE, Data);

}





Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP4322016. 5. 8. 16:52

MSP432 EVM - ADC 테스트 (ADC14 TFT LCD에 그래프 표시하기)

MSP432 EVM - ADC 테스트 (ADC14)




MSP432 는 MSP430과 달리 14비트 ADC를 가지고 있다. 최대 24채널 까지 입력 가능하다.


MSP432 ADC14 특징

14-bit Accuracy

INL <= +/- 2  LSB; 

DNL <= +/- 1 LSB

ENOB 13-bit

32-input channels

Single-ended & differential Inputs 


2 Window comparators 

High interrupt

Low interrupt

In [Between] interrupt


Separate internal channels for AVcc and TempSensor

Ultra Low current consumption

Single ended 210uA @ 1.8V, 1Msps 

Differential 260uA @ 1.8V, 1Msps


Generates voltage references for analog modules
1.2V, 1.45V, 2.5V



MSP432 ADC 블록도




Window Comparator

MSP432 ADC14의 기능중 Window Comparator 가 있는데 설정 값에 따라서 하드웨어 적으로 인터럽트를 발생 해 주기 때문에 소프트웨어 적인 부담이 많이 줄일 수 있다.




// ADC14 interrupt service routine

void ADC14IsrHandler(void) {

    if (ADC14IFGR1 & ADC14HIIFG)

    {

        ADC14CLRIFGR1 |= ADC14HIIFG;            // Clear interrupt flag


    }

    if (ADC14IFGR1 & ADC14LOIFG)

    {

        ADC14CLRIFGR1 |= ADC14LOIFG;            // Clear interrupt flag

    }

    if (ADC14IFGR1 & ADC14INIFG)

    {

        ADC14CLRIFGR1 |= ADC14INIFG;            // Clear interrupt flag

    }

}






MSP432 14bit ADC(ADC14) 초기화 코드
void ADC_Init(void)
{
    MAP_PCM_setPowerState(PCM_AM_LDO_VCORE1);
  
    /* Enabling the FPU for floating point operation */
    MAP_FPU_enableModule();
    MAP_FPU_enableLazyStacking();

    /* Initializing ADC (MCLK/1/4) */
    MAP_ADC14_enableModule();
    MAP_ADC14_initModule(ADC_CLOCKSOURCE_MCLK, ADC_PREDIVIDER_1, ADC_DIVIDER_4, 0);
            
    /* Configuring GPIOs (5.0 A5) */
    MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5, GPIO_PIN0,
    GPIO_TERTIARY_MODULE_FUNCTION);

    /* Configuring ADC Memory */
    MAP_ADC14_configureSingleSampleMode(ADC_MEM0, true);
    MAP_ADC14_configureConversionMemory(ADC_MEM0, ADC_VREFPOS_AVCC_VREFNEG_VSS,
    ADC_INPUT_A5, false);
    

    /* Configuring Sample Timer */
    MAP_ADC14_enableSampleTimer(ADC_MANUAL_ITERATION);

    /* Enabling/Toggling Conversion */
    MAP_ADC14_enableConversion();
    MAP_ADC14_toggleConversionTrigger();

    /* Enabling interrupts */
    MAP_ADC14_enableInterrupt(ADC_INT0);
    MAP_Interrupt_enableInterrupt(INT_ADC14);
    MAP_Interrupt_enableMaster();
}


MSP432 14bit ADC(ADC14) 결과 처리 인터럽트 코드

void ADC14_IRQHandler(void)

{

    uint64_t status = MAP_ADC14_getEnabledInterruptStatus();

    MAP_ADC14_clearInterruptFlag(status);


    if (ADC_INT0 & status)

    {

        curADCResult = MAP_ADC14_getResult(ADC_MEM0);

        normalizedADCRes = (curADCResult * 3.3) / 16384;


        gAdcValue = curADCResult;

        MAP_ADC14_toggleConversionTrigger();

    }

}




MSP432 ADC 테스트 동영상

가변저항의 전압값을 TFT-LCD 그래프로 출력 하는 예제




MSP432 ADC포트 핀맵

포트와 ADC채널이  동일하지 않기 때문에 정리 해둘 필요가 있다.



Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP4322016. 5. 7. 20:00

MSP432 EVM - UART 테스트

MSP432 EVM - UART 테스트





MSP43는 총 4개의 UART를 가지고 있다.

MSP432 EVM의 UART는 EUSCI_A0_BASE의 P1.2->RXD, P1.3->TXD 에 할당이 되어 있다.



MSP432의 보레이트 설정은 MSP430 보레이트 계산기를 이용하면 동일하게 설정 가능하다.

http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/



MSP432 UART 초기화 설정 코드


const eUSCI_UART_Config uartConfig =

{

        EUSCI_A_UART_CLOCKSOURCE_SMCLK,          // SMCLK Clock Source

        13,                                      // BRDIV = 13

        0,                                       // UCxBRF = 0

        37,                                      // UCxBRS = 37

        EUSCI_A_UART_NO_PARITY,                  // No Parity

        EUSCI_A_UART_MSB_FIRST,                  // MSB First

        EUSCI_A_UART_ONE_STOP_BIT,               // One stop bit

        EUSCI_A_UART_MODE,                       // UART mode

        EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION  // Oversampling

};



    /* Selecting P1.2 and P1.3 in UART mode */

    MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);


    /* Setting DCO to 24MHz (upping Vcore) */

    FlashCtl_setWaitState(FLASH_BANK0, 2);

    FlashCtl_setWaitState(FLASH_BANK1, 2);

    MAP_PCM_setCoreVoltageLevel(PCM_VCORE1);

    CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_24);


    /* Configuring UART Module */

    MAP_UART_initModule(EUSCI_A0_BASE, &uartConfig);


    /* Enable UART module */

    MAP_UART_enableModule(EUSCI_A0_BASE);





MSP432 UART 송수신 함수 코드 

unsigned char U0_GetByte(void)

{

    unsigned char  temp = 0;

    temp = MAP_UART_receiveData(EUSCI_A0_BASE);


    return temp;

}


void U0_PutByte(unsigned char Data)

{

    MAP_UART_transmitData(EUSCI_A0_BASE, Data);

}




Posted by nexp

댓글을 달아 주세요