[DSP]/DSP280x2007. 5. 25. 12:30

[DSP280x - S EVM] Module 제작

[DSP280x - S EVM] Module 제작

사용자 삽입 이미지
 
[DSP280x EVM] ( TMS320F2808 ) PCB가 남은것이 없어 새롭게 업그레이드 차원에서 소형으로 만들어 보았다.
예전보다 아트웍실력이 향상되어 아주 소형으로 만들 수 있었다.

[DSP280x EVM]과 크기비교
크기가 기존 [DSP280x EVM]보다 상당히 줄어 들었다.
물론 DAC, CAN Driver, 온도센서, VR등의 APP는 없지만 크기가 줄어들어 상당히 편리할 것 같다.

 
기존 ARM시리즈나 AVR, 8051, PIC보드와 크기와 포트가 거의 동일하여 쉽게 변경 가능하다.


 
확장 포트 모듈
 
 
Posted by nexp

댓글을 달아 주세요

  1. 마이스터

    2808 보드 뒷면에도 부품 배치되었나요? 회로도의 부품들이 다 없는 듯 보이네요.

    2009.08.14 11:16 [ ADDR : EDIT/ DEL : REPLY ]

[DSP]/DSP28122007. 4. 26. 23:10

[DSP2812 EVM] 예제 - TMS320F2812 Timer제어

[[DSP2812 EVM] 예제 -  TMS320F2812 Timer제어
사용자 삽입 이미지

TMS320F2812 Timer제어 예제소스
타이머 제어 예제는 기존 프로젝트의 Led.c파일을 삭제 하고  \ex02_timer\timer1.c 파일을 추가 하면된다.
그리고 타이머 설정을 위한 Lib함수를 사용하기 위해 DSP281x_common\source\DSP281x_CpuTimers.c파일을 추가 해 주어야 한다.
 
 
 
 타이머 설정은 SetTimer0()함수로 uSeconds단위로 설정하고  StartCpuTimer0()를 이용해서 타이머가 시작된다.
 그리고 당연히 글로벌 인터럽터 설정은 기본적으로 설정해 주어야 하고...   enable();   //INTM

 
예제를 돌려보면 100ms (100000us)마다 LED가 깜박이는 것을 확인 할 수 있다.
 
 

//-----------------------------------------------------------------------------

// TIMER0

#define MAIN_CLK_100MHZ                                         100

#define SetTimer0(TimeTickUs)                                               ConfigCpuTimer(&CpuTimer0, MAIN_CLK_100MHZ, TimeTickUs)

void cpu_timer0_isr(void);

void InitTimer0(void)

{

// Interrupts that are used in this example are re-mapped to

// ISR functions found within this file. 

   EALLOW;  // This is needed to write to EALLOW protected registers

   PieVectTable.TINT0 = &cpu_timer0_isr;

   EDIS;    // This is needed to disable write to EALLOW protected registers

// This function is found in DSP281x_InitPeripherals.c

// InitPeripherals(); // Not required for this example

   InitCpuTimers();   // For this example, only initialize the Cpu Timers

// Enable CPU INT1 which is connected to CPU-Timer 0:

   IER |= M_INT1;

// Enable TINT0 in the PIE: Group 1 interrupt 7

   PieCtrlRegs.PIEIER1.bit.INTx7 = 1;

// Enable global Interrupts and higher priority real-time debug events:

   ERTM;   // Enable Global realtime interrupt DBGM

}

interrupt void cpu_timer0_isr(void)

{

        //----------------------------------------------

        //Timer Interrupt Handler   

        CpuTimer0.InterruptCount++;

        //LED Toggle

        Led1Toggle();

        Led2Toggle();

        //----------------------------------------------

               

        // Acknowledge this interrupt to receive more interrupts from group 1

        PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

}

//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------

// Main Routine

//-----------------------------------------------------------------------------

void main(void)

{

        //System Initialize

        SystemInit();

        //LED initiazle

        Init_Led();

        Led2On();

        Led1On();

        //Initialize Timer

        InitTimer0();

        //Configure CPU-Timer 0 to interrupt every second:

        //100MHz CPU Freq, 100ms second Period (in uSeconds)

        SetTimer0(100000);

        StartCpuTimer0();

        //Enable Global interrupt INTM

        enable();  

        while(1)

        {

        }

}      

//-----------------------------------------------------------------------------

 
 
Posted by nexp

댓글을 달아 주세요

[DSP]/DSP28122007. 4. 16. 20:01

[DSP2812 EVM] 예제 - TMS320F2812 LED제어

DSP2812 EVM 예제 - LED제어
사용자 삽입 이미지
 
 



1)Project File 구조
DSP2812 EVM의 Project file 기본 구조는 TI에서 제공하는 예제파일을 기초로 구성하였고 좀 불편한 부분 및 하드웨어 레이어를 구분 지어 새롭게 작성 했습니다.
 
DSP281x_common, DSP281x_headers 폴더는 TI에서 제공하는 기본 Lib파일로 그대로 사용하고 있습니다.
 
DSP281x_evm 폴더에 앞으로 예제들을 추가할 예정입니다.
  -  00_hal, 01_drv 등 숫자로 시작하는 폴더는 시스템 관련 파일로 하드웨어 레이어를 구분하기 위해 사용하고 있습니다.
    (개인적으로 CPU종류에 상관 없이 ARM이든, DSP든 종류에 상관없이 응용프로그램을 작성할 수 있도록 하고 있습니다.)
 
  -ex01~ 부터 예제들을 추가해 작성하고 있습니다.
 
Debug 폴더는 CCS가 생성하는 것으로 컴파일된 파일이 저장되는 폴더 입니다. 최종 Example_281x.out파일이 생성 됩니다.
 
 
 
 
2)Project Open
프로젝트 파일을 다운받아 열어 보면 아래 그림과 같은 구조로 되어 있고 Source폴더에 컴파일 할 파일을 추가하거나 제거 해서 다른 예제들도 테스트 해 볼 수 있습니다.
 
 
 
 
3)컴파일
Rebuilder All 아이콘을 클릭하면 컴파일을 사작하고 몇가지 워닝뒤에 컴파일 완료됨을 알 수 있습니다.


4)Load Program
컴파일 된 파일을 DSP의 램 영역에 다운로드


5)Program Run
프로그램을 실행 시키면 LED가 깜박이는 것을 확인 할 수 있습니다.


 

6)LED 제어
DSP2812 EVM (TMS320F2812)의 에는 기본적으로 LED 2개가 PF13, PF12에 연결되어 있어 GPIOF를 제어 하여 Led를 On/Off  할 수 있습니다.


 

 예제 소스
소스는 너무 간단해서 설명할것은 없지만...  GPIOF포트를 설정하는 레지스터를 출력으로 설정하고 데이터 레지스터를 접근해 포트 On/Off를 하면 됩니다.

//-----------------------------------------------------------------------------

// LED Driver - HAL Part

//-----------------------------------------------------------------------------

#define Led1On()                                          (GpioDataRegs.GPFDAT.bit.GPIOF13 = 0)

#define Led1Off()                                          (GpioDataRegs.GPFDAT.bit.GPIOF13 = 1)

#define Led1Toggle()                                       (GpioDataRegs.GPFDAT.bit.GPIOF13 ^= 1)

#define Led2On()                                          (GpioDataRegs.GPFDAT.bit.GPIOF12 = 0)

#define Led2Off()                                          (GpioDataRegs.GPFDAT.bit.GPIOF12 = 1)

#define Led2Toggle()                                       (GpioDataRegs.GPFDAT.bit.GPIOF12 ^= 1)

void Init_Led(void)

{

    EALLOW;

        //sets GPIO Muxs as I/Os

    GpioMuxRegs.GPFMUX.bit.MDXA_GPIOF12 = 0;

    GpioMuxRegs.GPFMUX.bit.MDRA_GPIOF13 = 0;

                                                                               

        // DIR select GPIOs as output

    GpioMuxRegs.GPFDIR.bit.GPIOF12=1;

    GpioMuxRegs.GPFDIR.bit.GPIOF13=1;

    EDIS;

}

//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------

// Main Routine

//-----------------------------------------------------------------------------

void main(void)

{

        //System Initialize

        SystemInit();

       

        //LED initiazle

        Init_Led();

        while(1)

        {

                //LED Toggle

                Led1Toggle();

                Led2Toggle();

                Delay(300);

        }

}      

//-----------------------------------------------------------------------------


CP1210 디바이스 드라이버

http://www.silabs.com/tgwWebApp/public/web_content/products/Microcontrollers/USB/en/mcu_vcp.htm

 


Posted by nexp

댓글을 달아 주세요

[DSP]/DSP280x2007. 4. 10. 22:45

[DSP280x EVM]DC Servo Motor제어

[DSP280x EVM]DC Servo Motor제어

사용자 삽입 이미지






확장 보드를 이용한 DC Motor EVM 보드 제어



엔코더


엔코더 핀맵
Posted by nexp

댓글을 달아 주세요

[MyProject]/20062006. 11. 27. 23:31

고압전력제어보드

- 디지털부 DSP회로 설계 (2006.10~2006.11)
     - 디지털부 DSP 펌웨어 작성
 

  • CPU : TMS320F2808, ATmega8
  • DSP 제어부 보드 설계 및 펌웨어 작성
  • 디스플레이 보드 설계 및 펌웨어 작성
  • 스위치보드 보드 설계

블럭도




65KV의 고전압을 발생하는 파워에 들어가는 제어보드로 원리는 출력전압을 감시해서 설정한 전압을 유지하기 위해 고해상도 PWM으로 입력을 조절 하고 출력 변환에 따라 제어 해 주면 되는 것이다.  






TMS320F2812를 사용하는것도 고려 했지만 값싸고 기능도 좋은 TMS320F2808을 주장 했는데 이전에 모듈로 만들어둔 보드가 있어 먼저 테스트 해 볼 수 있었기 때문이다.
모듈로 만들어 테스트 해 두면 프로젝트에 적용할때 부담없이 사용할 수 있고 성능 문제나 단가 문제에서 쉽게 변경할 수 있으므로 상당한 유연성을 가질 수 있다.
[고압전력제어보드]용 프로토보드 참고
Posted by nexp

댓글을 달아 주세요