[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. 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

댓글을 달아 주세요

[MSP430]/MSP4322016. 5. 7. 16:30

MSP432 EVM - TIMER32 테스트

MSP432 EVM - TIMER32 테스트



기존 MSP430을 사용하면서 아쉬웠던 점은 16비트 코어 이므로 타이머나 long 타입 처리 드이 아쉬웠는데 MSP432의 새로운 기능으로 32비트 타이머가 있어 유용할 것 같다.



MSP432 타이머 초기화 함수

  TIMER32-> rCONTROL1.b.bMODE = 0; // 프리 런 

  TIMER32-> rCONTROL1.b.bIE = 1; // 인터럽트 비활성화 

  TIMER32-> rCONTROL1.b.bPRESCALE = 2; // 분주 / 256    

  TIMER32-> rCONTROL1.b.bSIZE = 0; // 16bit 

  TIMER32-> rCONTROL1.b.bONESHOT = 0; // Wrapping mode   

  TIMER32-> rCONTROL1.b.bENABLE = 1; // Timer를 사용     

  NVIC_ISER0 | = 1 << 25;     

  __enable_interrupt ();




MSP432 인터럽트 핸들러

void T32_1_Handler(void ) 

{

  gTimeTick_1++;


  TIMER32_INTCLR1=0x1;

}



Posted by nexp

댓글을 달아 주세요