[MSP430F5510] 구매처

[MSP430]/MSP430F5x | 2012.04.10 23:00
Posted by nexp

저전력에 저렴하 USB칩셋으로 MSP430F5510이 좋다.

디지키에 저렴하게 판매하고 있다. 100개만 되어도 2천원대 이다.

 

동작전압이 1.8~3.3V 이므로 밧데리 구동 가능하고, 무엇보다도 동작 온도가 -40 ~ 85도 이므로 온습도 로거 제작에 좋을것 같다.

 

 http://www.digikey.kr/product-detail/ko/MSP430F5510IPT/296-28189-5-ND/2522329

 

 

 

[MSP430F5510 EVM] USB Keyboard 테스트


MP430F5510은 저렴하고 저전력인 MSP430코어이다.  USB기능이 있고 소형(48Pin QFN)이기 때문에 밧데리로 구동하는 간단한 HID장치나 USB Keyboard, USB Mouse 장치를 만들기에 좋다.

[MSP430F5510 EVM] 보드를 이용하여 USB Keyboard 테스트해 보았다. 소스코드도 기존 예제에 쉽게 포팅 할 수 있도록 수정해서 정리 해 보았다.





[MSP430F5510 EVM]  USB Keyboard 테스트 동영상
USB Keynoard 테스를 위해 간단히 Up, Down, Left, Right Key를 에뮬레이션 하여 뷰어 할때 편리한 USB 장치를 만들어 보았다.





MSP430F5510 USB Keyboard 테스트 예제 소스코드
void main(void)
{
    //UART 초기화
 DebugInit(BAUD_115200);
 DebugPrint("MSP430F5510 USB Test\r");
   
    //MSP430 USB초기화
    Msp430UsbInit();

    Led1Init();
    Led1On();
   
    //Key 초기화
    INIT_KEY_IO();
   
 // Enable interrupts
    enable();

   //USB가 연결되어 있으면 이벤트 발생하여 재연결
    if (USB_connectionInfo() & kUSB_vbusPresent)USB_handleVbusOnEvent();
    
  
   while(1)
  {
     //USB 처리
     ProcessUSB();
  }
}



USB 처리 함수
void ProcessUSB(void)
{
     switch(USB_connectionState())
      {
         case (ST_USB_DISCONNECTED | ST_NOENUM_SUSPENDED):
               __bis_SR_register(LPM3_bits + GIE);  // Enter LPM3 w/interrupt.  Nothing for us to do while disconnected. 
               break;
             
         case ST_USB_CONNECTED_NO_ENUM:
              break;
             
         case ST_ENUM_ACTIVE:
          
              __bis_SR_register(LPM0_bits + GIE);     // Enter LPM0 w/interrupt, until a keypress occurs
             //Key처리 
             PorcessKeyboad();        
              }
              break; 
             
         case ST_ENUM_SUSPENDED:
              __bis_SR_register(LPM3_bits + GIE);  // Enter LPM3 w/interrupt.  Nothing for us to do while 
              break;                                // suspended.  (Remote wakeup isn't enabled in this example.)
             
         case ST_ENUM_IN_PROGRESS:
              break;
             
         case ST_ERROR:
              break;
             
         default:;
      }
}



Keyboard 인터럽트 처리 핸들러
#pragma vector=PORT1_VECTOR
__interrupt void Port1_ISR(void)
{
    WORD i;
    unsigned char key_val = 0;
 
    if(P1IFG)
    {
        key_val = ~P1IN;
        Delay(30);   // Cheap debounce. 

        report[0] = 0;
        report[1] = 0;       
        switch(key_val)
        {
        case 1:
            report[2] = usbUsageLeftArrow;
            break;
           
        case 2:
            report[2] = usbUsageRightArrow;
            break;
           
        case 4:
            report[2] = usbUsageUpArrow;
            break;
           
        case 8:
            report[2] = usbUsageDownArrow;
            break;   
           
        case 0x10:
            report[2] = usbUsageA;
            break; 

        case 0x20:
            report[2] = usbUsageB;
            break;
           
        case 0x40:
            report[2] = usbUsageN;
            report[3] = usbUsageE;
            report[4] = usbUsageX;           
            report[5] = usbUsageP;           
            report[6] = usbUsageEnter;
            break; 

        case 0x80:
            report[2] = usbUsageEnter;
            break;             
           
        }
       
        buttonPressed = TRUE;
        __bic_SR_register_on_exit(LPM3_bits);  // Wake main from LPMx       
        P1IFG = 0;
    } 
}

[MSP430F5510 EVM] ADC 테스트

[MSP430]/MSP430F5x | 2011.11.27 21:00
Posted by nexp
[MSP430F5510 EVM] ADC 테스트




MSP430F55x 으로 오면서 몇가지 페리들이 변경되었는데.. ADC도 약간의 레지스터 및 기능상 변화가 있었다.


MSP430F55xx ADC구조




MSP430F5510 ADC 초기화 코드
//ADC Initialize
void AdcInit(void)
{
  // Configure ADC10 - Pulse sample mode; ADC10SC trigger
  ADC10CTL0 = ADC10SHT_2 + ADC10ON;         // 16 ADC10CLKs; ADC ON
  ADC10CTL1 = ADC10SHP + ADC10CONSEQ_0;     // s/w trig, single ch/conv
  ADC10CTL2 = ADC10RES;                     // 10-bit conversion results
  ADC10MCTL0 = ADC10SREF_1 + ADC10INCH_0;  // AVcc/2 
 
  // Configure internal reference
  while(REFCTL0 & REFGENBUSY);              // If ref generator busy, WAIT
  REFCTL0 |= REFVSEL_0+REFON;               // Select internal ref = 1.5V
}



MSP430F5510 ADC Read함수
//Read ADC Value
unsigned int AdcRead(unsigned char port)
{
 unsigned int value = 0;
 
    ADC10MCTL0 = ADC10SREF_1 + (ADC10INCH_0 + port);  // AVcc/2 
 
 
    ADC10CTL0 |= ADC10ENC + ADC10SC;        // Sampling and conversion start
    while (ADC10CTL1 & ADC10BUSY);
   
    value = ADC10MEM0;

 return value;
}



MSP430F5510 ADC테스트 예제 소스코드
[EXP_DSP EVM] 확장 보드에 연결되어 있는 VR을 이용하여 MSP430의 10bit ADC출력 값을 시리얼 포트로 출력 하는 예제이다.
void main(void)
{
    unsigned int adc = 0;
    SystemInit();
   
    Led1Init();
    Led1On();

   //Serial Init
   DebugInit(BAUD_115200);
   DebugPrint("Serial Test Program.\r\n");
   
    //Init ADC
    AdcInit();
    
      while(1)
    {
        adc = AdcRead(0);
        DebugPrint("adc=%d\r\n", adc);

        Led1Toggle();
        Delay(300);
    }
}

[MSP430F55XX EVM] TFT LCD출력 테스트



한프레임 출력하는데 70ms정도 나온다
MSP430F5x의 최대 클럭(33Mhz)으로 설정시 48ms로 예전 버전의 MSP430보다 상당히 빨라졌다.



MSP430F5510 TFT LCD 출력 테스트 동영상
드라이버 코드만 수정하면 쉽게 테스트 가능하므로 간단히 SD Card의 BMP파일을 FTF LCD에 출력하는 테스트를 진행해 보았다.





MSP430F5529 EVM보드의 핀맵






MSP430F5529 TFT LCD 출력 드라이버 코드



//-----------------------------------------------------------------------------
//TFT LCD

#define LCD_LAT_BIT      BIT5
#define LCD_LAT_PORT     PORT3
#define LCD_LAT_ON()     Sbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_LAT_OFF()     Cbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_DATA_LATCH()    LCD_LAT_ON();LCD_LAT_OFF();

#define LCD_EN_BIT      BIT5
#define LCD_EN_PORT      PORT7
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      BIT2
#define LCD_RST_PORT     PORT7
#define LCD_RST_ON()     Sbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_OFF()     Cbi(LCD_RST_PORT, LCD_RST_BIT)

#define LCD_RS_BIT      BIT3
#define LCD_RS_PORT      PORT7
#define LCD_RS_OFF()     Cbi(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_RS_ON()      Sbi(LCD_RS_PORT, LCD_RS_BIT)

#define LCD_WR_BIT      BIT1
#define LCD_WR_PORT      PORT8
#define LCD_WR_OFF()     Cbi(LCD_WR_PORT, LCD_WR_BIT)
#define LCD_WR_ON()      Sbi(LCD_WR_PORT, LCD_WR_BIT)

#define LCD_RD_BIT      //BIT5
#define LCD_RD_PORT      //LATD
#define LCD_RD_OFF()     //Cbi(LCD_RD_PORT, LCD_RD_BIT)
#define LCD_RD_ON()      //Sbi(LCD_RD_PORT, LCD_RD_BIT)

#define LCD_BL_BIT      BIT4
#define LCD_BL_PORT      PORT7
#define LCD_BL_OFF()     Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(LCD_BL_PORT, LCD_BL_BIT)

#define _LCD_DAT_OUT(Data)    PORT1=Data;PORT2=(Data>>8)


#define TFTGpioInit()     P1DIR=0xFF;P2DIR=0xFF;\
                                        Sbi(P7DIR, BIT2|BIT3|BIT4|BIT5);\
                                        Sbi(P8DIR, BIT1)   
//-----------------------------------------------------------------------------





MSP430F5529 SD Card 드라이버 코드
SD Card의 CS는 [LCD_EXP EVM] 보드의 MA_29번핀(/CS0)에 연결되어 있다.


#define _SPI1_ENABLE     1

//-----------------------------------------------------------------------------
// SD Card HAL
#define MMC_CS_PORT      PORT8
#define MMC_CS_BIT      BIT2

#define MMC_CS_INIT()     Sbi(P8DIR, MMC_CS_BIT);\
          MMC_CS_HIGH()
          
          
#define MMC_CS_HIGH()     Sbi(MMC_CS_PORT, MMC_CS_BIT)
#define MMC_CS_LOW()     Cbi(MMC_CS_PORT, MMC_CS_BIT)

#define MMC_ASSERT_INIT()    MMC_CS_INIT();MMC_CS_HIGH()
#define MMC_ASSERT()     MMC_CS_LOW()
#define MMC_DEASSERT()     MMC_CS_HIGH()


#define MMC_SpiInit()     SPI1_Init()
#define MMC_SendByte     SPI1_WriteReadByte
#define MMC_Send(Data)      SPI1_WriteByte(Data)
#define MMC_Recv()      SPI1_WriteReadByte(0xFF)
#define MMC_RecvP(Data)     MMC_Send(0xFF); (*(Data)=SPI1_ReadByte())
#define MMC_SPISpeed     SPI1_SetSpeed

#define SPI_Mode3()
//-----------------------------------------------------------------------------



[MSP430F5529 EVM] W5200/W5100 TCP/IP loopback 전송 속도 테스트



[MSP430F5529 EVM] 을 이용하여 TCP/IP loopbak 전송 속도를 테스트 해 보았다.
MSP430F5x 의 경우 클럭이 최대 32Mhz이고 SPI클럭 속도 설정을 자유롭게 설정 가능하기 때문에 SPI클럭 속도에서 유리한 점이 있다.

메인 클럭을 32Mhz로 설정하고 SPI클럭을 16Mhz로 설정하여 테스트한 결과 2.2Mbps 정도의 전송 속도가 나온다.
다른 MCU의 TCP/IP 전송 속도 테스트 결과 와비교 했을때 나쁘지 않다.

-----------------------------------------------------------
[8] iInChip Send: 2.2657 Mbps(3880723 bytes, 13.0676 sec)
iInChip Recv: 2.1496 Mbps(3880723 bytes, 13.7736 sec)
------------------------------------------------------------
[9] iInChip Send: 2.1323 Mbps(3880723 bytes, 13.8855 sec)
iInChip Recv: 2.2160 Mbps(3880723 bytes, 13.3608 sec)
-------------------------------------------------------




[MSP430F55xx EVM] TI 무료 RTOS SYSBIOS 사용하기


MSP430용 TI의 무료 RTOS인 SYSBIOS를 테스트 했다. CCS4.0 이상에서 (예제는 CCS5에서 태스트 했다.) 에서 SYSBIOS 프로젝트 생성시 지원 가능하다. SYSBIOS는 대부분의 TI MCU를 지원하기 때문에 간단히 적용가능하다.


[참고]
http://processors.wiki.ti.com/index.php/SYS/BIOS_for_the_MSP430



MSP430 SYSBIOS 프로젝트 생성
CCS 프로젝트 생성시 SYSBIOS 항목에서 적당한 탬플릿을 선택하면 간단히 적용할 수 있다.



RTOS 버전 설정




SYSBIOS 등록 후 cfg파일에서 SYS/BIOS관련 각종 파라미터들을 설정 할 수 있다.




SYSBIOS 구조





SYSBIOS 기본 골격
#include <xdc/std.h>
#include <xdc/runtime/Log.h>
#include <ti/sysbios/BIOS.h>
#include "system.h"
#include "serial.h"

Void main()
{
 //사용자 초기화 함수
 SystemInit();

 Led1Init();
 Led1On();

 Led2Init();
 Led2Off();

 //Serial Init
 DebugInit(BAUD_115200);
 DebugPrint("SYS/BIOS Test Program.\r\n");


    //Start RTOS BIOS
    BIOS_start();
}


//RTOS TASK1 - BIOS_start() thread.
Void myIdleFxn(Void)
{
 Led1Toggle();
}

//RTOS Task2
Void myIdleFxn2(Void)
{
 Led2Toggle();
}



사용자 함수(Task) 등록하기
일정 시간에 원하는 동작을을 하는 사용자 함수는 cfg파일에서 설정가능한데 아래와같이 addFunc()으로 원하는 함수를 추가하면 된다.
/* Add a background idle function */
var Idle = xdc.useModule('ti.sysbios.knl.Idle');
Idle.addFunc("&myIdleFxn");
Idle.addFunc("&myIdleFxn2");
Idle.addFunc("&myIdleFxn3");
 :



Void myTickFxn(UArg arg)
{
    tickCount++;
    tickCount1++;
}


cfg파일 또는 main 함수에서 설정 가능하다.
/*
 * Create a timer instance to generate periodic interrupts.
 *
 * The timer will be started within the BIOS_start()
 * thread
 */

var Timer = xdc.useModule('ti.sysbios.family.msp430.Timer');
var timerParams = new Timer.Params();
timerParams.startMode = Timer.StartMode_AUTO;
timerParams.runMode = Timer.RunMode_CONTINUOUS;

/* Timer period is 1/2 second (1,000 uSeconds) */
timerParams.period = 1000;
timerParams.periodType = Timer.PeriodType_MICROSECS;
var myTimer = Timer.create(0, '&myTickFxn', timerParams);



테스트 결과
MSP430를 8Mhz로 구동시 Task간 구동 시간은 20us 걸린다.
 TI에서 제공되는 SYS/BIOS는 TI의 대부분 MCU를 지원 하므로 간단한구조의 MCU인 MSP430을 이용하여 RTOS를 쉽게 테스트 보고 구조를 파악하는데 사용할 수 있을것  같다.
[MSP430F5529 EVM] SPI테스트 - 3축 가속도 센서 출력

[MSP430F5510 EVM] 및 [MSP430F5529 EVM] 의 SPI는 PORT4의 USB1에 할당 되어 있다.
핀맵을 보면 아래와 같다.

P4.3/PM_UCB1CLK/PM_UCA1STE
P4.2/PM_UCB1SOMI/PM_UCB1SCL
P4.1/PM_UCB1SIMO/PM_UCB1SDA
P4.0/PM_UCB1STE/PM_UCA1CLK




MSP430F5x의 SPI특징
SPI mode features include:
• 7-bit or 8-bit data length
• LSB-first or MSB-first data transmit and receive
• 3-pin and 4-pin SPI operation
• Master or slave modes
• Independent transmit and receive shift registers
• Separate transmit and receive buffer registers
• Continuous transmit and receive operation
• Selectable clock polarity and phase control
• Programmable clock frequency in master mode
• Independent interrupt capability for receive and transmit
• Slave operation in LPM4



MSP430F5x SPI블록도





MSP430F5x SPI 통신 초기화 함수
void SPI1_Init(void) // SPI 통신 초기화 함수
{
 // Select SPI functionality on DIO pins for MOSI, MISO, & CLK.
 P4SEL |= (BIT1|BIT2|BIT3);  
   
  UCB1CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCB1CTL0 |= UCMST+UCSYNC+UCMSB+UCCKPH;    // 3-pin, 8-bit SPI master
  UCB1CTL1 |= UCSSEL_2;                     // SMCLK
  UCB1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
//  UCB1IE |= UCRXIE;     

   SPI1_SetSpeed(SPI_SPEED_1MHZ);
}



MSP430F5x SPI 전송 함수
#define SPI1_WRITE_BYTE(x)                 UCB1TXBUF = (x);
#define SPI1_READ_BYTE()     UCB1RXBUF
#define SPI1_WAIT_FOR_EN()     while (!(UCTXIFG&UCB1IFG));
#define SPI1_WAIT_FOR_SEND()              while (UCB1STAT & UCBUSY);
#define SPI1_WAIT_FOR_RX()     while (!(UCRXIFG&UCB1IFG))


unsigned char SPI1_WriteReadByte(unsigned char Data)
{
 SPI1_WAIT_FOR_EN();
 SPI1_WRITE_BYTE(Data);
 SPI1_WAIT_FOR_SEND();
 return SPI1_READ_BYTE();
}



MSP430F5510 SPI Accel 드라이버 함수
#define _SPI1_ENABLE    1

//-----------------------------------------------------------------------------
// myAccel3LV02 HAL
#define MY_ACCEL3LV02_SPI_MODE   1
#define MY_ACCEL3LV02_I2C_MODE   0

//AccelCS A8-P3.7
#define ACCEL_CS_BIT     BIT6
#define ACCEL_CS_PORT     PORT4

#define ACCEL_CS_INIT()     Sbi(P4DIR, ACCEL_CS_BIT);

#define ACCEL_CS_ASSERT()    Cbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_CS_DEASSERT()    Sbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_SPI_INIT()    SPI1_Init()
#define ACCEL_Read      SPI1_WriteReadByte
#define ACCEL_Write      SPI1_WriteReadByte
//-----------------------------------------------------------------------------



MSP430F5529 3축 가속도 센서 출력 테스트 예제 소스코드
#include "system.h"
#include "serial.h"
#include "spi.h"
#include "myAccel.h"

void main(void)
{
   short data = 0;
    SystemInit();

    Led1Init();
    Led1On();
   
 DebugInit(BAUD_115200);
 DebugPrint("MSP430F5529 EVM SPI Accel Test\r\n");

 myAccel3lvInit();
    myAccel3lvWrite(CTRL_REG1, 0xC7);  //1000.0111 Power on, enable all axis, self test off
   
    while(1)
    {
        Led1Toggle();
       GetAccelValue(AXIS_X, &data);
       DebugPrint("%d\r\n", data); 
 
        Delay(100);
    }
}


[MSP430F5529 EVM]  GPIO토글 속도 측정



MSP430F55xx 시리즈는 클럭이 최대 32Mhz까지 입력 가능하므로 이전 MSP430보다는 많이 빨라 졌다. USB기능이 추가 되었기 때문에 속도도 중요한 요소가 되었기 때문이지 않을까...
아무튼 저렴하고 저전력의 MSP430코어가 속도도 빨라졌기 때문에 응용해 적용해 볼곳이 많이 있을것 같다.



MSP430F5529/MSP430F5510 GPIO토글 속도 테스트
[참고] MCU속도 측정 결과 

24Mhz 클럭 이용시 -> GPIO 토글 속도 1.7Mhz
33Mhz 클럭 이용시 -> GPIO 토글 속도 2.35Mhz
     39              while(1)
     40              {
     41                  Led1Toggle();
   \                     ??main_1:
   \   00005C   D2E36302     XOR.B   #0x1, &0x263
   \   000060   FD3F         JMP     ??main_1
   \   000062   0343         NOP



단순 On/Off 하는데 걸리는 시간 90 ns 대략 3Mhz
33Mhz 클럭 이용시 -> GPIO On/Off속도 4.1Mhz

     39              while(1)
     40              {
     41                  //Led1Toggle();
     42                  PORT8 = 1;
   \                     ??main_1:
   \   00005C   D2436302     MOV.B   #0x1, &0x263
     43                  PORT8 = 0;
   \   000060   C2436302     MOV.B   #0x0, &0x263
   \   000064   FB3F         JMP     ??main_1
   \   000066   0343         NOP



참고로 외부 클럭을 32Mhz로 사용하기 위해  TI에서 제공하는 코드(HAL_UCS)를 system.c 에 추가 하였다.
#if (__SYS_CLK__ == SYS_CLK_32MHZ_XTAL) 
    // Startup HF XT2 crystal
    P5SEL |= BIT2+BIT3;                       // Port select XT2 
    do{
        status = XT2_Start_Timeout(XT2DRIVE_0, 50000);
    }while(status == UCS_STATUS_ERROR); 

    SELECT_SMCLK(SELS__XT2CLK);               // Select XT2 as SMCLK source
    SELECT_MCLK(SELS__XT2CLK);
#endif

[MSP430F5510 EVM] USB HID 테스트

[MSP430]/MSP430F5x | 2011.08.11 12:03
Posted by nexp
[MSP430F5510 EVM] USB HID 테스트



MSP430F5510 을 이용하여 HID테스트를 했다. HID를 이용하면 USB디바이스 드라이버 제작할 필요없이 고속의 USB통신을 할수 있다. 간단히 HID인식해서 데이터 송수신 하는 예제를 작성해 보았다.
저렴하고 소형의 MCU임에도 불구하고 USB데이터 처리는 빠르고 쉽게 처리되었고 상용 제품에 적용하기에 좋은것 같다.

HID테스트용 PC프로그램 제작



MSP430F5510 HID USB데이터 송수신 테스트 소스코드

VOID main(VOID)
{
    //시스템 초기화
 SystemInit();
   
 //init USB
 USB_init();

 Led1Init();
 Led1Off();
 
 Led2Init();
 Led2Off(); 
   
    // Enable various USB event handling routines
    USB_setEnabledEvents(kUSB_VbusOnEvent+kUSB_VbusOffEvent+kUSB_receiveCompletedEvent
                          +kUSB_dataReceivedEvent+kUSB_UsbSuspendEvent+kUSB_UsbResumeEvent+kUSB_UsbResetEvent);
   
    // See if we're already attached physically to USB, and if so, connect to it
    // Normally applications don't invoke the event handlers, but this is an exception. 
    if (USB_connectionInfo() & kUSB_vbusPresent)
      USB_handleVbusOnEvent();

    while(1)
    {
        BYTE i;
        // Check the USB state and directly main loop accordingly
        switch(USB_connectionState())
        {
           case ST_USB_DISCONNECTED:
    // Enter LPM3 w/ interrupts enabled
                 __bis_SR_register(LPM3_bits + GIE);              
                _NOP();                                             
                break;
               
           case ST_USB_CONNECTED_NO_ENUM:
                break;
               
           case ST_ENUM_ACTIVE:
    // Enter LPM0 (can't do LPM3 when active)
                __bis_SR_register(LPM0_bits + GIE);              
                _NOP();

     //------------------------------------------------------------------------------
    //USB데이터 송수신
                // Exit LPM on USB receive and perform a receive operation
                if(bHIDDataReceived_event)                             
                {
      // Holds the new addition to the string                 
      char pieceOfString[MAX_STR_LENGTH] = "";          
                 
                  // Add bytes in USB buffer to theCommand
      // Get the next piece of the string
                  hidReceiveDataInBuffer((BYTE*)pieceOfString,MAX_STR_LENGTH,0);                
                  strcat(wholeString,pieceOfString);    
                  // Add it to the whole
                  hidSendDataInBackground((BYTE*)pieceOfString,strlen(pieceOfString),0,0);     
                 
      
     if(wholeString[0] == CMD_LED2_ON)
     {
       Led2On();
     }
     else if(wholeString[0] == CMD_LED2_OFF)
     {
       Led2Off();
     }     
       else if(wholeString[0] == CMD_LED1_ON)
                    {
                      Led1On();
                    }
     else if(wholeString[0] == CMD_LED1_OFF)
                    {
      Led1Off();
                    }
                    else if(wholeString[0] == CMD_READ_DATA)
                    {                     
                      //USB데이터 전송
       hidSendDataInBackground((BYTE*)outBuffer,63),0,0);
                    }
                  bHIDDataReceived_event = FALSE;
                }
                break;
   //----------------------------------------------------------------------------------
   
           case ST_ENUM_SUSPENDED:
                __bis_SR_register(LPM3_bits + GIE);          // Enter LPM3 w/ interrupts
                break;
               
           case ST_ENUM_IN_PROGRESS:
                break;
               
           case ST_NOENUM_SUSPENDED:
                __bis_SR_register(LPM3_bits + GIE);               
                break;               
               
           case ST_ERROR:
                _NOP();
                break;
               
           default:;
        }
   
    }  // while(1)
} //main()



MSP430F5510 HID테스트 동영상

[MSP430F5510 EVM] 보드 제작

[MSP430]/MSP430F5x | 2011.08.11 11:25
Posted by nexp
[MSP430F5510 EVM] 보드 제작


MSP430F5510은 TI사의 저전력 MSP430코어와 USB기능을 가지고 있어 저전력의 USB기능이 필요 할때 유용하게 사용할 수 있다. 48핀 LQFP패키지라 소형이고 저렴한 가격으로 적용할 때가 많을것 같아 테스트 보드로 제작해 보았다.




48핀 LQFP 타입의 MSP430F5510



[SM-Type EVM]   타입으로 제작해 핀맵이 호환되며 USB2UART, ZIGBEE2UART등의 모듈을 연결 할 수 있다.



확장 테스트 보드




MSP430F5510 EVM 보드 회로도






블로그 이미지

nexp

카테고리

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