[MSP430]/MSP430F5x2011. 11. 26. 22:00

[MSP430F55XX EVM] TFT LCD출력 테스트

[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()
//-----------------------------------------------------------------------------



Posted by nexp

댓글을 달아 주세요

[DSP]/DSP283352011. 11. 12. 22:30

[DSP28335 EVM] TFT LCD 출력 속도 테스트 - TMS320F28335 EXP_LCD EVM

[DSP28335 EVM] TFT LCD 출력 속도 테스트 - TMS320F28335 EXP_LCD EVM



[LCD_EXP_EVM] 보드 를 이용하여 TMS320F28335로 TFT LCD출력 테스트를 진행 했다.
TMS320F28335는 외부 메모리 인터페이스(EXINF)를 지원하므로 EXINF로 실험 해 보았다.

LCD_CS는 TMS320F28335 CS0로 할당 했고 LCD RS는 A0로  할당 했다.




240x400 픽셀의 한 프레임 출력시 GPIO로 제어 하면 10ms정도 시간이 걸린다.

외부 데이터/어드레스 버스로 제어 했을때  Function -2옵티마이즈 옵션으로 8ms정도 나온다
File -3로 최적화시에 한프레임 출력하는데  4ms 정도 나온다.
특히나 CS동기를 맞추기 때문에 다른 입출력 장치(Ethernet, ADC, DAC 등)와 함께 사용시 확실한 성능 차이를 보여줄 것 같다.

TMS320F28335 TFT-LCD 출력 테스트 동영상





TMS32F28335 TFT LCD 테스트 동영상 - Sd card를 이용한 BMP출력
SPI를 이용하여 SD Card의 BMP이미지 출력시 속도가 많이 느려지는데 TMS320F28335의 SPI클럭속도가 최대 10Mhz밖에 되지 않기 때문인것 같다.
Posted by nexp

댓글을 달아 주세요

[NXP]/LPC17002011. 11. 6. 21:00

[LPC1756 EVM] TFT-LCD 테스트

[LPC1756 EVM] TFT-LCD 테스트


LPC1756 EVM을 이용하여 TFT-LCD를 테스트 해보았다. 100Mhz 클럭 이기 때문에 좀더 빠를것 같은 기대로 테스트 진행 해 보았다.


IO제어는 빠른것 같다. 1프레임 출력하는데 10ms 안으로 들어온다. 좀더 옵티마이즈 하면 더 빨라질것 같다. 물론 Address/Data Bus를 이용하는것 보다는 느리겠지만 간단히 GPIO만으로도 빠른 속도를 낼 수 있을것 같다.





SPI속도도 빠르기 때문에 SD Card를 이용해서 테스트 해 보았다. LPC1756의 SPI최대 속도는 50Mhz까지 출력되지만 SD Card 제어시는 18Mhz이상 힘들기 때문에 16Mhz로 테스트 해 보았다. (SPI클럭 조합이 좀 아쉽다. 16Mhz 다음에 24Mhz, 48Mhz..로 설정 가능하다.)




LPC1756 EVM TFT-LCD 테스트 드라이버 코드

//-----------------------------------------------------------------------------
//TFT LCD
#define TFT_DRV_HD66791                 0
#define TFT_DRV_COM44                   1

#define LCD_LAT_BIT      BIT0
#define LCD_LAT_PORT     GPIO1
#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      BIT4
#define LCD_EN_PORT      GPIO1
#define LCD_ENABLE()     cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      //BIT8
#define LCD_RST_PORT     //PORTB
#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      BIT0
#define LCD_RS_PORT      GPIO0
#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      GPIO1
#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      PORT3
#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)    PORT2 = (PORT2&0xFF00) | (Data>>8);\
                                     LCD_DATA_LATCH();\
                                     PORT2 = (PORT2&0xFF00) | (Data&0xFF);

#define TFTGpioInit()     GPIOInit(0, DIR_OUT, (BIT0));\
                                        GPIOInit(1, DIR_OUT, (BIT0|BIT1|BIT4));\
                                        GPIOInit(2, DIR_OUT, 0xFF);
//-----------------------------------------------------------------------------


Posted by nexp

댓글을 달아 주세요

[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

댓글을 달아 주세요

[INTERFACE]/iMCU_W71002011. 9. 17. 12:33

[W7100 EVM] TFT LCD 테스트 - [LCD-IF MODULE] 이용 속도 테스트

[W7100 EVM] TFT LCD 테스트 - [LCD-IF MODULE] 이용 속도 테스트



[W7100 EVM]모듈에서 [LCD-IF MODULE]을 이용하여 TFT LCD를 테스트 해 보았다. iMCU W7100은 이더넷 전송 속도가 빠르기 때문에 ([W7100   EVM] 이더넷 전송 속도테스트] ), 이더넷으로 TFT-LCD 이미지 전송 테스트를 해보려고 한다.



LCD-IF MODULE]에 20핀 커넥터를 연결하고 드라이버 코드 수정하여 테스트 했다. 



테스트 결과 이더넷 전송 속도는 아주 빠르지만 TFT LCD에 이미지 한장 출력하는 속도는 아주 느리다. 8051의 패리속도 한계로 다이렉트로 제어하는것은 좀 무리 일듯하고 CPLD나 FPGA 연결해서 이더넷에서 데이터만 전송 해 주는 형태로 바꾸어야 할듯...




W7100 TFT LCD 제어 Driver 코드
#define TFT_DRV_HD66791                 0
#define TFT_DRV_COM44                   1

#define LCD_LAT_BIT      BIT0
#define LCD_LAT_PORT     P2
#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      BIT6
#define LCD_EN_PORT      P2
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      //BIT8
#define LCD_RST_PORT     //PORTB
#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      BIT5
#define LCD_RS_PORT      P2
#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      BIT4
#define LCD_WR_PORT      P2
#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      ///BIT9
#define LCD_RD_PORT      //PORTB
#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      BIT7
#define LCD_BL_PORT      P2
#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)    P0 = (Data>>8);\
                                     LCD_DATA_LATCH();\
                                     P0 = (Data&0xFF);

#define TFTGpioInit() 


[W7100 EVM] TFT LCD 출력 속도 테스트 동영상

Posted by nexp

댓글을 달아 주세요