[MODULE]/LCD_TFT2013.02.09 13:49

7" TFT-LCD 확장 테스트 보드 제작

7" TFT-LCD 확장 테스트 보드 제작 



요즘 TFT LCD컨트롤러를 내장한 MCU들이 많이 출시 되고 있는데... TFT LCD 컨트롤러를 내장한 adStar의 확장 테스트 보드로 TFT LCD를 연결하여 테스트 할 수 있도록 제작해 보았다. 


 


  


 

7" TFT LCD 테스트 동영상

SDCard를 이용하여 7" TFT LCD에 BMP영상을 출력하도록 하고 있다. 좀더 자세한 내용을 보려면 adStar를 이용한 TFT LCD테스트 자료 참고.

 

 

 

 

 7" TFT LCD 확장 모듈 테스트 이미지 

 

 

 

 

 

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[INTERFACE]/W72002013.01.01 23:30

[W7200 EVM] SD Card를 이용한 TFT LCD 테스트

[W7200 EVM] SD Card를 이용한 TFT LCD 테스트





W7200은 STM32-SM EVM보드와 호환이 가능하다. STM32코어 이므로 기존 코드를 활용하여 여러가지 테스틀 쉽게 해볼 수 있다.

SD Card를 이용하여 웹서버를 제작하기위해 먼저 SD카드 호환되는 TFT LCD보드를 테스트 해 보았다.




W7200 TFT-LCD 테스트 동영상




W7200 TFT-LCD 제어 드라이버 코드


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

//LED Driver

#define TFT_DRV_HD66791                 0

#define TFT_DRV_COM44                   0

#define TFT_DRV_ST7735                  1


#define LCD_LAT_BIT BIT14

#define LCD_LAT_PORT PORTA

#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 BIT13

#define LCD_EN_PORT GPIOA

#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 BIT14

#define LCD_RS_PORT GPIOA

#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 BIT15

#define LCD_WR_PORT GPIOA

#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 BIT9

#define LCD_BL_PORT GPIOB

#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) PORTB = (PORTB&0xFF00) | (Data&0xFF);


#define TFTGpioInit() RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);\

GPIO_InitStructure.GPIO_Pin = BIT13|BIT14|BIT15;\

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\

GPIO_Init(GPIOA, &GPIO_InitStructure);\

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);\

GPIO_InitStructure.GPIO_Pin = 0xFF|BIT9;\

GPIO_Init(GPIOB, &GPIO_InitStructure);


Posted by nexp
TAG tft-lcd, W7200

댓글을 달아 주세요

[MCU]/adStar2012.12.25 23:00

[adStar EVM] TFT-LCD 테스트

 [adStar EVM] TFT-LCD 테스트

 

 

 

adStar의 가장 큰 장점은 TFT-LCD 컨트롤러와 16Mbyte의 SDRAM을 내장하고 있어 LCD제어에 있어 아주 편리하다. 특히 16Mbyte의 RAM을 활용하면 이미지 처리에 있어 장점이 많다.

우선 기존 코드를 활용하여 TFT-LCD 모듈을  GPIO방식으로 제어 해 보았다. (추후 내장된 TFT-LCD컨트롤러를 활용하여 어느정도의 성능 향상이 있은지 확인 할 예정이다.)

 

400x240 한프레임 출력 시간은 GPIO방식이지만 20ms 정도로 측정된다.

 

adStar TFT-LCD 테스트 동영상

 

 

adStar TFT LCD 드라이버 코드

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

#define LCD_LAT_BIT      
#define LCD_LAT_PORT     
#define LCD_LAT_ON()     
#define LCD_LAT_OFF()     
#define LCD_DATA_LATCH()    LCD_LAT_ON();LCD_LAT_OFF();

#define LCD_EN_BIT      BIT5
#define LCD_EN_PORT      GPIO6
#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     GPIO6
#define LCD_RST_OFF()     cbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_ON()     sbi(LCD_RST_PORT, LCD_RST_BIT)

#define LCD_RS_BIT      BIT3
#define LCD_RS_PORT      GPIO6
#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      BIT3
#define LCD_WR_PORT      GPIO5
#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      BIT2
#define LCD_RD_PORT      GPIO5
#define LCD_RD_OFF()     //cbi(*R_P2oLOW, LCD_RD_BIT)
#define LCD_RD_ON()      //sbi(*R_P2oHIGH, LCD_RD_BIT)

#define LCD_BL_BIT      BIT4
#define LCD_BL_PORT      GPIO6
#define LCD_BL_OFF()     cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON()      sbi(LCD_BL_PORT, LCD_BL_BIT)

#define TFTGpioInit()     *R_PAF8 = 0xFFFF;*R_GP8ODIR = 0xFF;\
          *R_PAF7 = 0xFFFF;*R_GP7ODIR = 0xFF;\
          Sbi(*R_GP6ODIR,  BIT2|BIT3|BIT4|BIT5);Sbi(*R_PAF6, GP_CFG(2)|GP_CFG(3)|GP_CFG(4)|GP_CFG(5));\
          Sbi(*R_GP5ODIR,  BIT3);Sbi(*R_PAF5, GP_CFG(3));

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430_AFE2012.10.29 18:26

[MSP430AFE EVM] 24bit ADC테스트 - LCD에 ADC24 데이터 그래프 표시하기

[MSP430AFE EVM] 24bit ADC테스트 - LCD에 ADC24 데이터 그래프 표시하기

 

 

MSP430AFE2xx 의 가장 큰 특징은 24bit ADC를 내장하고 저전력, 저가격의 MCU이다.

ADC특징을 보면 아래와 같다.

 

Features of the SD24_A include
-Up to three 24-bit second-order ΣΔ ADC
- Differential inputs o Simultaneous sampling
- Oversampling of up to 1024
- Integrated Programmable Gain amplifier of gains up to 32
- Integrated temperature and voltage sensor
- Integrated accurate 1.2V ADC reference with 18ppm/ ºC

 

 

MSP430AFE253은 DIFF 3채널의 24bit ADC가 있다.

 

 

 

 

MSP430AFE2xx ADC24블록도

 

 

 

 

MSP430 ADC24 출력 포멧

24bit ADC 이지만 출력레지스터 SD24MEMx는 16비트 레지스트 이고 24bit를 읽기 위해서는 SD24CCTLx의 SD24LSBACC비트를 설정해 주어야 한다.

SD24LSBACC = 0 -> 상위 16비트

SD24LSBACC = 1 -> 하위 16비트

 

 

 

MSP430 AFE ADC24 초기화

    SD24CTL = SD24REFON+SD24SSEL0;            // 1.2V ref, SMCLK
    SD24CCTL0 |= SD24IE + SD24DF;            // CH0, enable interrupt

 

    for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup

 

 

 

ADC 인터럽트 처리 코드

24bit로 데이터 받으면 값이 좀 이상하다.(아무래도 오버샘플링으로 비트수를 늘이는것 같은데, 이부분은 좀더 들여다 봐야 할것 같다.)

우선 상위 16비트만을 이용해 처리하도록 했다.

 #pragma vector=SD24_VECTOR
__interrupt void SD24AISR(void)
{
  switch (SD24IV)
  {
  case 2:                                   // SD24MEM Overflow
    break;

 

  case 4:                                   // SD24MEM0 IFG

      //하위 16비트 데이터
      Sbi(SD24CCTL0, SD24LSBACC);
      adc_value = SD24MEM0;

 

      //상위 16비트 데이터

      Cbi(SD24CCTL0, SD24LSBACC);
      //adc_value = (SD24MEM0<<16) | adc_value;

      adc_value = (SD24MEM0);
    break;


  case 6: 


    break;
  case 8:                                   // SD24MEM2 IFG
                       // Save CH2 results (clears IFG)
    break;
  }

   __bic_SR_register_on_exit(LPM0_bits);    // Exit LPM0
}

 

 

 

 

 

MSP430AEF ADC24 테스트 동영상

24bit ADC A0, A1에 연결되 VR값을 TFT LCD에 출력하는 예제를 테스트 했다.

 

Posted by nexp

댓글을 달아 주세요

[AVR]/Mega162012.04.22 17:37

[ATMega16-SM EVM] ADC 테스트 - TFT LCD 그래프 표시

[ATMega16-SM EVM] ADC 테스트 - TFT LCD 그래프 표시

 

 

 

 

ATMega16-SM EVM 보드에서 ADC포트는 PORTA PA7~PA0(ADC7~ADC0)에 연결되어 있고 가변저항으로 ADC값을 확인할 수 있다.

 

 

 

AVR ATMega16 ADC 드라이버 코드

ATMega32 의 경우 ADCSR레지스터가 ADCSRA로 변경되었다.

//------------------------------------------------------------------------------
// Function Routine
//ADC Initialize
void AdcInit(void)
{
 ADMUX = 0;
    ADCSR = ADC_ENABLE | ADC_PRESCALE_DIV32;
}

//Read ADC Value
unsigned int AdcRead(unsigned char port)
{
 unsigned int value = 0;

 ADMUX = port&7;
 ADCSR |= ADC_START_CONVERSION;

 while(!(ADCSR & ADC_COMPLETE));

 value = ADCL;
 value = (ADCH<<8) | value;

 return value;
}
//------------------------------------------------------------------------------

 

 

 

 

AVR ATMega16 ADC 테스트 예제코드

 

int main(void)
{
 char c;
 unsigned int adc;
 unsigned char buf[8];
 
 SystemInit();
 
 Led1Init();
 Led1On();

 //UART Init
 DebugInit(BAUD_115200);
 DebugPrint("ADC Test Program\r\n");
 
 AdcInit();

 while(1)
 {

  adc =  AdcRead(7);

  buf[0] = (adc>>8);
  buf[1] = (adc&0xFF);

  adc =  AdcRead(6);

 

  buf[2] = (adc>>8);
  buf[3] = (adc&0xFF);

  SendPacket(SRL_CMD_PLOTY, buf, 4);

 

  Delay(20);
 }
}

 

 

 

AtMega32 ADC 테스트 동영상 - TFT LCD그래프 표시

 

Posted by nexp

댓글을 달아 주세요