[MCU]/adStar2012. 12. 28. 23:30

[adStar EVM] 3축가속도 센서 테스트 - TFT LCD출력

 [adStar EVM] 3축가속도 센서 테스트 - TFT LCD출력

 

 

[NET-EVM] 보드에는 I2C(SPI)로 연결되는 자이로, 가속도, 온도, 압력 센서등의 모듈을 연결할 수 있는 표준핀맵 커넥터가 있다.

 

SM-Type EVM 에는 핀 8번에, M-Type EVM에는 핀 P13번(adStar EVM의 P0.0)에 CS핀이 할당되어 있다.

 

 

 

adStar 가속도 센서 드라이버 코드

#define _SPI1_ENABLE     1

//-----------------------------------------------------------------------------
// myAccel3LV02 HAL
#define MY_ACCEL3LV02_SPI_MODE   1
#define MY_ACCEL3LV02_I2C_MODE   0

#define ACCEL_CS_BIT     BIT0
#define ACCEL_CS_PORT     GPIO0

#define ACCEL_CS_INIT()     Sbi(*R_PAF0, GP_CFG(0));Sbi(*R_GP0ODIR, ACCEL_CS_BIT)


#define ACCEL_CS_ASSERT()    cbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_CS_DEASSERT()    sbi(ACCEL_CS_PORT, ACCEL_CS_BIT)

#define ACCEL_SPI_INIT()    SPI1_Init()
#define ACCEL_Read      SPI1_WriteReadByte
#define ACCEL_Write      SPI1_WriteReadByte
//-----------------------------------------------------------------------------

 

 

 

adStar 가속도 센서 테스트 동영상

가속도 센서 데이터를 TFT LCD에 출력하는 테스트

 

 

 

adStar 가속도 출력 테스트 소스코드

int main()
{
    short data;
    unsigned int accel;
 unsigned char buf[6]={0,};
 
 SystemInit();

 Led1Init();
 Led2Init();
 Led1On();
 Led2Off();
 
 U0_Init(BAUD_38400);
 DebugPrint("ADstar EVM1\r\n");
 
 //가속도 센서 초기화
 myAccel3lvInit();
 //SPI1_SetSpeed(SPI_SPEED_4MHZ);     
 
 myAccel3lvWrite(CTRL_REG1, 0xC7);

 data = myAccel3lvRead(WHO_AM_I);
 DebugPrint("Who am I? 0x%02X\r\n", data); 
 
 InitDiaplay();
 
 while(1)
 {
        GetAccelValue(AXIS_X, &data);
       
     if(data&0x0800)accel = (data&0x7FF) -2048;
     else accel = (data&0x7FF);

        //DebugPrint("%d ", accel);
        accel = (2048+accel)/10-100;
        buf[0] = accel>>8;
  buf[1] = (accel&0xFF);

        GetAccelValue(AXIS_Y, &data);
        if(data&0x0800)accel = (data&0x7FF) -2048;
     else accel = (data&0x7FF);
        accel = (2048+accel)/10-100;
        //DebugPrint("%d\r\n", accel);
  
        buf[2] = accel>>8;
  buf[3] = (accel&0xFF);
       
  DisplayPloat(SRL_CMD_PLOTY, buf, 4);
        Delay(30);   
 }
 
 return 0;
}

 

Posted by nexp

댓글을 달아 주세요

[MCU]/adStar2012. 12. 26. 23:30

[adStar] SDRAM 사용하기

[adStar] SDRAM 사용하기

 

adStar의 SDRAM은 최대 16Mbyte가 내장되어 있고 이를 활용하면 여러가지 사용할곳이 많을것 같다.

 

 

 

 

SDRAM초기화 코드

static void SDramInit()
{
 register int addr;
 addr = 0x80000400 ;
 register int ahbclock;


 *(volatile unsigned int*)addr = 0x10059;   //16MBytes, CAS Lantency 2  modify lab
 //*(volatile unsigned int*)addr = 0x10049;   //8MBytes, CAS Lantency 2  modify lab
 

ahbclock = get_ahb_clock();
 //*(volatile unsigned int*)(addr+4) = (0x4<<8)|((ahbclock/1000000)-1);     //FEEDBACK Clock control 


 *(volatile unsigned int*)(addr+4) = 0xc2f; //FEEDBACK Clock control // 48MHz
}

 

 

 malloc 함수로 할당하면 SDRAM(0x20000000번지)영역에 설정된다.

#define SDRAM1_SIZE            (8196*1024)


volatile unsigned char *buffer;

buffer = malloc(SDRAM1_SIZE);

 

 

Posted by nexp
TAG adstar, SDRAM

댓글을 달아 주세요

[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

댓글을 달아 주세요

[MCU]/adStar2012. 12. 25. 22:30

[sdStar EVM] SD card 테스트

[sdStar EVM] SD card 테스트

 

adStar는  HDSC를 지원하고 adStar EVM 보드에는 SD Card소켓이 연결되어 있다.

 

 

 

adStar EVM SD Card 회로도


 




adStar SD Card 테스트 예제코드

SD Card의 파일 리스트를 출력하는 예제

int main()

{

SystemInit();


Led1Init();

Led2Init();

Led1On();

Led2Off();

U0_Init(BAUD_115200);

DebugPrint("ADstar EVM1\r\n");


FATFS fs;

f_mount(DRIVE_SDCARD,&fs);

print_files("1:");

while(1)

{


        }

}


FRESULT print_files (char* path)

{

FRESULT res;

FILINFO fno;

DIR dir;

int i;

char *fn;

#if _USE_LFN

static char lfn[_MAX_LFN+1];

fno.lfname = lfn;

fno.lfsize = sizeof(lfn);

#endif


res = f_opendir(&dir, path);

if (res == FR_OK) {

i = strlen(path);

for (;;) {

res = f_readdir(&dir, &fno);

if (res != FR_OK || fno.fname[0] == 0) break;

#if _USE_LFN

fn = *fno.lfname ? fno.lfname : fno.fname;

#else

fn = fno.fname;

#endif

if (fno.fattrib & AM_DIR) {

char dirname[_MAX_LFN+1];

if(fn[0]!='.')

{

sprintf(dirname,"%s/%s",path,fn);

print_files(dirname);

}

} else {

debugprintf("%s/%s\t%dbyte\r\n", path, fn,fno.fsize);

}

}

}

else{

debugprintf("path(%s) not found\r\n",path);

}

return res;

}





Posted by nexp

댓글을 달아 주세요

[MCU]/adStar2012. 12. 25. 21:00

[adStar EVM] W5200을 이용한 TCP-Seerver 전송 속도 테스트

 [adStar EVM] W5200을 이용한 TCP-Seerver 전송 속도 테스트

 

 

 

[adStar-EX EVM] 보드에는 H/WTCPIP W5200모듈을 연결할수 있어 이더넷 테스트가 가능하다. W5200을 이용하여 TCP Server모드에서 전송 속도를 테스트 해 보았다.

 

[W5200 EVM] 모듈 연결 핀맵

 

 

[adStar-EX EVM] W5200  드라이버 코드

#define _SPI1_ENABLE     1

//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     GPIO1
#define W5100_CS_BIT     BIT3
#define W5100_RST_BIT     BIT5


#define W5100_IO_INIT()     Sbi(*R_PAF4, GP_CFG(3));Sbi(*R_GP1ODIR, W5100_CS_BIT);\
          Sbi(*R_PAF2, GP_CFG(5));Sbi(*R_GP1ODIR, W5100_RST_BIT)


#define IINCHIP_CSoff()     cbi(W5100_CS_PORT, W5100_CS_BIT)
#define IINCHIP_CSon()     sbi(W5100_CS_PORT, W5100_CS_BIT)


#define IINCHIP_SPI_INIT()    SPI1_Init()
#define IINCHIP_SpiSendData    SPI1_WriteReadByte
#define IINCHIP_SpiRecvData    SPI1_WriteReadByte


#define IINCHIP_RSToff()    cbi(W5100_RST_PORT, W5100_RST_BIT)
#define IINCHIP_RSTon()     sbi(W5100_RST_PORT, W5100_RST_BIT)

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

 

 

 

테스트 결과 3Mbps정도로 측정된다. SPI방식으로 이정도면 나쁘지 않은것 같다.

 

 

Posted by nexp

댓글을 달아 주세요