[DSP]/DSP28122008. 7. 24. 22:24

TMS320F DSP 2812 EVM 새로운 버젼으로 제작

DSP 2812 EVM 새로운 버젼으로 제작

사용자 삽입 이미지

다른 용도로 사용할 일이 있어 TMS320FDSP2812 보드를 새롭게 제작 했다.
크기는 좀 크지만 모든 포트가 빠져 있고, 모든 부품이 윗면으로 배치되어 양산용으로도 잇점이 있도록 제작 했다.

Posted by nexp

댓글을 달아 주세요

  1. 권구철

    안녕하세요.
    저는 기본적으로 SW 엔지니어라 해 놓으신 것들을 보니 놀라울 따름 입니다.
    저희도 2812를 사용해서 보드를 만들었습니다. 그런데 조금 이상한 것이 파워공급칩과 CPU가 동작시 발열이 심합니다. CPU는 40도이상 파워공급칩은 그 이상 올라 가는데.. 이것이 정상인 것인지 혹은 전류가 부족해서 생기는 것인지 궁금 합니다만 혹시 조언 주실수 있으신지요?

    2008.08.16 20:36 [ ADDR : EDIT/ DEL : REPLY ]
  2. 어느정도 열은 있습니다. 스펙이 85도 까지 이므로 큰 문제는 아닐듯 하네요
    저도 특히 복잡한 연산일 수록 열이 많이 나는것 같더라구요..

    2008.08.19 12:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 파워공급칩, LDO를 많이 쓰는데 열이 난다면 뭔가 문제가 있을 것 같습니다. 전 150Mhz로 20kHz isr을 약 80퍼센트 시간을 다 쓰면서 구동해도 열이 안납니다. 가능하면 쓰지 않는 IO모듈의 클럭공급을 끊는게 좋을 듯 하고, 전원의 세심한 설계주의가 필요합니다. TI에서 권장하는 TPS767등의 칩을 사용할 경우에 GND패드에 의한 발열을 충분히 신경써주시거나 아니면 별도의 3.3V, 1.8/adj LDO를 이용해서 구동시켜주는 것이 더욱 안정된 전원 공급을 해줄 수 있습니다.

    이전에 프로젝트를 진행하면서 TPS767로 인한 문제를 한두번 겪은게 아니라서 별로 권장해드리고 싶지 않습니다.

    2008.10.02 13:35 [ ADDR : EDIT/ DEL : REPLY ]
  4. 이혁진

    nexp님은 TPS767을 사용할 적에 칩 하면의 GND는 어떻게 처리하셨는지 궁금하군요.

    2009.08.14 11:29 [ ADDR : EDIT/ DEL : REPLY ]
  5. 비밀댓글입니다

    2009.08.19 14:03 [ ADDR : EDIT/ DEL : REPLY ]

[DSP]/DSP28122007. 11. 17. 23:43

[DSP2812 EVM] rev03 관련자료 - TMS320F2812 신버젼

[DSP2812 EVM] rev03 관련자료 - TMS320F2812 신버젼



TMS320F2812 EVM 공구후 PCB가 없어 새롭게 제작했다.

테스트 예제 소스




회로도:




Posted by nexp

댓글을 달아 주세요

[DSP]/DSP28122007. 10. 17. 23:43

[DSP2812 EVM] rev03 보드 제작

[DSP2812 EVM] rev03 보드 제작

사용자 삽입 이미지


[DSP2812 EVM rev03] 보드가 나왔습니다.


이번 rev03버젼은 포트 배치를 표준화 방안에 의해 L-EVM Type( http://cafe.naver.com/elab/764 ) EVM-완전히 바꾸었습니다. 덕분에 아트웍하는데 상당히 애를 먹었지만 표준에 맞추어져 네트웍 확장보드에서 바로 테스트 할 수 있어 뿌듯 하군요.


L-EVM(Large Type EVM)
Address/Data방식의 CPU로 메모리를 지원하고 50개 이상의 IO를 가진 대형 CPU보드로 27x4의 헤더핀을 적용한 보드 입니다.
보드 사이즈는 2700mil x 1800mil이상으로 가로축은 포트에 따라 더 늘어날 수 있습니다.


  • CN3, CN4의 1번, 2번은 반드시 전원핀으로 사용한다.
  • CN3, CN4는 어드레스/데이터 포트로 구성하되 Address/Data없는 보드는 일반포트로 대체 한다.
  • 11번핀의 D16~D31은 16Bit만 지원하는 CPU는 사용하지 않고 다른 포트로 대체할 수 있도록 한다.
  • CN2의 1~8은 ADC포트로 사용하고 ADC가 8개 이상일 경우 CN1의 1~8번핀을 이용한다
  • TX0, RX0는 CN2의 9, 10번을 이용한다.
  • CN1, CN2의 27번핀은 /CS를 할당한다.
  •  CN2의 26번핀은 INT를 할당한다.


LED구동하니 별 문제 없이 잘 동작하였습니다.


부수적으로 포트가 바뀌면서 어쩔 수 없이 LED제어 포트, 및 스위치 포트도 변경되었습니다.

스위치 포트는 인터럽트 포트에 물려 인터럽트 테스트 하기에는 좋습니다.


Posted by nexp

댓글을 달아 주세요

[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

댓글을 달아 주세요