[DSP]/DSP280x-M2011. 10. 30. 20:00

[TMS320F2808 EVM] TFT LCD Test - LCD-PLD-IF 보드 이용

[TMS320F2808 EVM] TFT LCD Test - LCD-PLD-IF 보드 이용



[TMS320F2808 EVM] 보드를 이용하여 TFT LCD테스트를 했다. PICCOLO 시리즈인 TMS320F28069 테스트때 SPI속도가 늦어 SD Card 읽어 오는 속도가 느렸는데 TMS320F2808이 조금 더 빠른것 같다.


TMS320F2808 TFT LCD테스트 동영상



TMS320F2808 TFT LCD 드라이버 코드
//-----------------------------------------------------------------------------
// TFT LCD Driver
#define TFT_DRV_HD66791     0
#define TFT_DRV_COM44     1

#define LCD_LAT_BIT      BIT2 //-> GPIO34
#define LCD_LAT_PORT     PORTB

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

#define LCD_EN_BIT      BIT20
#define LCD_EN_PORT      PORTA
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT);NOP();
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT);NOP();

#define LCD_RST_BIT      BIT6
#define LCD_RST_PORT     PORTA
#define LCD_RST_ON()     
#define LCD_RST_OFF()     

#define LCD_RS_BIT      BIT21
#define LCD_RS_PORT      PORTA
#define LCD_RS_OFF()     Cbi(LCD_RS_PORT, LCD_RS_BIT);NOP();
#define LCD_RS_ON()      Sbi(LCD_RS_PORT, LCD_RS_BIT);NOP();

#define LCD_WR_BIT      BIT23
#define LCD_WR_PORT      PORTA
#define LCD_WR_OFF()     Cbi(LCD_WR_PORT, LCD_WR_BIT);NOP();
#define LCD_WR_ON()      Sbi(LCD_WR_PORT, LCD_WR_BIT);NOP();

#define LCD_RD_BIT      //BIT7
#define LCD_RD_PORT      //
#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      BIT15
#define LCD_BL_PORT      PORTA
#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)    GpioDataRegs.GPADAT.all = (GpioDataRegs.GPADAT.all&(~0xFF)) | (Data>>8)&0xFF;NOP();\
          LCD_DATA_LATCH();\
          GpioDataRegs.GPADAT.all = (GpioDataRegs.GPADAT.all&(~0xFF)) | (Data&0xFF)&0xFF;NOP();
          

#define TFTGpioInit()     EALLOW;\
          Sbi(GpioCtrlRegs.GPADIR.all, 0xFF);\
          Cbi(GpioCtrlRegs.GPAMUX1.all, 0xFF);\
          GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;\
          GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;\
          GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 0;\
          GpioCtrlRegs.GPADIR.bit.GPIO21 = 1;\
          GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 0;\
          GpioCtrlRegs.GPADIR.bit.GPIO20 = 1;\
          GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 0;\
          GpioCtrlRegs.GPADIR.bit.GPIO23 = 1;\
          GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0;\
          GpioCtrlRegs.GPADIR.bit.GPIO15 = 1;\
          EDIS;
//-----------------------------------------------------------------------------
Posted by nexp

댓글을 달아 주세요

[DSP]/DSP280x-M2011. 10. 29. 12:05

[TMS320F2808 EVM] W5200 이용한 TCP Server 전송 속도 테스트

[TMS320F2808 EVM] W5200 이용한 TCP Server 전송 속도 테스트


TMS320F2808의 SPI 최대 속도는 6.2Mhz 정도 이고 이때 TCP 전송 속도는 1.5831 Mbps 정도 나온다.
결론 적으로 CPU속도는 나쁘지 않는데.. SPI클럭 속도가 너무 느리다. SPI속도를 요하는 어플리케이션은 고려할 필요가 있는것 같다.
그래도 1.5Mbps면 간단한 웹서버 정도 돌리는데는 문제가 없을것 같다.


[NET_EXP] W5100 / W5200 모듈 보드 핀맵



Posted by nexp

댓글을 달아 주세요

[DSP]/DSP280x-M2010. 5. 4. 23:00

[DSP280x-M EMV]SPI 테스트 - 3축 가속도 센서(LIS3LV02) 데이터 로깅

[DSP280x-M EMV]SPI 테스트 - 3축 가속도 센서(LIS3LV02) 데이터 로깅


TMS320F2808 의 SPI통신을 이용하여 3축 가속도 센서 LIS3LV02를 테스트 했다. 확장 테스트 보드에 가속도 센서를 장착할 수 있기 때문에 쉽게 테스트 가능하다.

TMS320F2808에는 4개의 독립적인 SPI포트가 있는데 이중 표준커넥터로 뽑아둔 SPIA(P16~P19)를 이용한다.



확장 보드에서 LIS3LV02는 SPI포트에 연결되어 있고 CS핀은 P22에 연결되어 있다.



PC 호스트 프로그램



TMS320F2808 3축 가속도 센서 테스트 동영상



DSP280x-M SPI테스트를 위해 Code Composer Studio에 SPI관련 소스 및 가속도 센서 코드 추가



TMS320F280x SPI블럭도






SPI Mode설정
LIS3LV02제어를 위해서는 SPI Mode0로 설정해야한다. SPICCR, SPICTL레지스터에서 설정할 수 있다.




SPI 설정


SpiaRegs.SPICCR.bit.CLKPOLARITY = 0;
SpiaRegs.SPICTL.bit.CLK_PHASE = 0;   //SPI MODE0

 //SPI 초기화
 SpiaRegs.SPICCR.bit.SPISWRESET = 0;
 SpiaRegs.SPICCR.bit.CLKPOLARITY = 0;
 SpiaRegs.SPICCR.bit.SPILBK = 0;  //루프백 비사용
 SpiaRegs.SPICCR.bit.SPICHAR = 7;  //8비트 모드 
 SpiaRegs.SPICCR.bit.SPISWRESET = 1; // Ready to transmit

 SpiaRegs.SPICTL.bit.SPIINTENA = 0; //인터럽트 비사용
 SpiaRegs.SPICTL.bit.TALK = 1;   // Transmit enable
 SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1; //SPI마스터 모드
 SpiaRegs.SPICTL.bit.CLK_PHASE = 0;   //SPI MODE0
 SpiaRegs.SPICTL.bit.OVERRUNINTENA = 0; //Overrun interrupt disable

 SpiaRegs.SPIPRI.bit.FREE = 1;       // Set so breakpoints don't disturb xmission


SPI클럭 속도 설정
SpiaRegs.SPIBRR 레지스터에서 설정 가능하다.

 //SPI 클럭속도 설정
 SPI0_SetSpeed(SPI_SPEED_4MHZ);



 //SPI GPIO초기화
 EALLOW;
    GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0;   // Enable pull-up on GPIO16 (SPISIMOA)
    GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0;   // Enable pull-up on GPIO17 (SPISOMIA)
    GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0;   // Enable pull-up on GPIO18 (SPICLKA)
    GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0;   // Enable pull-up on GPIO19 (SPISTEA)

    GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // Asynch input GPIO16 (SPISIMOA)
    GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // Asynch input GPIO17 (SPISOMIA)
    GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // Asynch input GPIO18 (SPICLKA)
    GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynch input GPIO19 (SPISTEA)
   
    GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; // Configure GPIO16 as SPISIMOA
    GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; // Configure GPIO17 as SPISOMIA
    GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // Configure GPIO18 as SPICLKA
    GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; // Configure GPIO19 as SPISTEA
    EDIS;
 
 //SPI FIFO 초기화
    SpiaRegs.SPIFFTX.all=0xE040;
    SpiaRegs.SPIFFRX.all=0x204f;
    SpiaRegs.SPIFFCT.all=0x0;


TMS320F2808 3축 가속도 센서 테스트 소스
void main(void)
{
 short data = 0;
 unsigned int flag = 0;

 //DSP System Initialize
 SystemInit();

 Led1Init();
 Led1On();

 DebugInit(BAUD_57600);
 DebugPrint("SPI Test\r\n");

 myAccel3lvInit();
 myAccel3lvWrite(CTRL_REG1, 0xD7);  //1000.0111 Power on, enable all axis, self test off
 myAccel3lvWrite(CTRL_REG2, 0x40);

 while(1)
 {
  if(DebugIsByte())
  {
   switch(U0_GetByte())
   {
   case '0':
    Led1Off();
    DebugPrint("LED OFF\r\n");
    break;

   case '1':
    Led1On();

    DebugPrint("LED ON\r\n");   
    break;

   case 'h':
    DebugPrint("device_id=");
    U0_PutInt(myAccel3lvRead(WHO_AM_I));
    break;

 case 'r':
    GetAccelValue(AXIS_X, &data);
    U0_PutInt(data);  
    break;
}
}
Posted by nexp

댓글을 달아 주세요

[DSP]/DSP280x-M2010. 5. 2. 20:51

[DSP280x-M EVM] 보드 제작 - TMS320F2809

[DSP280x-M EVM] 보드 제작 - TMS320F2809




TI사의 TMS320F280xx (TMS320F2808, TMS320F2809) 테스트 할수 있는 EVM 보드를 [M-Type EVM] 타입으로 제작했다.
기존 보드와의 표준화 측면과 편리성 때문에 핀맵을 호환시켜 제작했다.



TMS320F280x 시리즈중 가장 사양이 좋은 TMS320F2809를 이용하여 제작



[M-Type EVM] 타입으로 제작 했기 때문에 USB2UART, 통신 모듈을 연결할 수 있다.



TMS320F2808 테스트 확장 보드





회로도


LED

Posted by nexp

댓글을 달아 주세요

[DSP]/DSP280x2008. 1. 30. 01:31

[TMS320F2808]성능 테스트 - GPIO 토글링 테스트

[TMS320F2808]성능 테스트 - GPIO 토글링 테스트


GPIO 토글테스트로 TMS320F2808의 성능 테스트를 해보았다. 단순 페리 속도로 CPU의 성능을 테스트 하기는 좀 그렇지만... 아무래도 주로 MPU로 하는 일들이 GPIO로 제어하는 일이 많으므로 [다른 MCU속도 측정 결과] 비교를 위해 GPIO테스트를 해보면 편하다.

일단 가장 간단히 GPIO를 단순히 비트 XOR시켜 속도를 측정했다. TMS320F2808 @20Mhz에서 RAM에 올려 100Mhz코어로 설정.
#define LED0_TOGGLE()  (GpioDataRegs.GPADAT.bit.GPIO6 ^= 1)

측정 결과 대략 180ns (2.94Mhz)가 나온다.
컴파일러의 옵션에 따라 차이는 있겠지만 100Mhz라기에는 좀... 느리다.
어셈블 코드를 보니 역시... 옵티마이즈가 전혀 안되어 있다. 루프도는데 이렇게 무식하게...



TMS320에는 GPIO Toggle Register가 있으므로 이걸 이용해 보자. 역시.. 3줄이면 된다.
테스트 결과 GPIO 토글 속도는 100ns(5.5Mhz) 가 출력된다.



이제야 어느정도 정상 출력되는것 같다.

컴파일 옵션을 최적화해서 테스트 하니 70ns(7.13Mhz) 까지 출력된다.
Posted by nexp

댓글을 달아 주세요