www.pudn.com > SEEDVPM642_esam.rar > dm642main.c
/********************************************************************/ /* Copyright 2004 by SEED Incorporated. */ /* All rights reserved. Property of SEED Incorporated. */ /* Restricted rights to use, duplicate or disclose this code are */ /* granted through contract. */ /* */ /********************************************************************/ /* *---------dm642main.c--------- * This example uses a timer to read and write the ESAM. */ #include#include #include #include #include #include #include #include "seeddm642.h" #include "seeddm642_esam.h" /*SEEDDM642的emifa的设置结构*/ EMIFA_Config Seeddm642ConfigA ={ 0x00052078,/*gblctl EMIFA(B)global control register value */ /*将CLK6、4、1使能;将MRMODE置1;使能EK2EN,EK2RATE*/ 0xffffffd3,/*cectl0 CE0 space control register value*/ /*将CE0空间设为SDRAM*/ 0x73a28e01,/*cectl1 CE1 space control register value*/ /*Read hold: 1 clock; MTYPE : 0000,选择8位的异步接口 Read strobe :001110;14个clock宽度 TA:2 clock; Read setup 2 clock; Write hold :2 clock; Write strobe: 14 clock Write setup :7 clock -- --------------- \ 14c /1c \----------------/ */ 0x22a28a22, /*cectl2 CE2 space control register value*/ 0x22a28a42, /*cectl3 CE3 space control register value*/ 0x57115000, /*sdctl SDRAM control register value*/ 0x0000081b, /*sdtim SDRAM timing register value*/ 0x001faf4d, /*sdext SDRAM extension register value*/ 0x00000002, /*cesec0 CE0 space secondary control register value*/ 0x00000002, /*cesec1 CE1 space secondary control register value*/ 0x00000002, /*cesec2 CE2 space secondary control register value*/ 0x00000073 /*cesec3 CE3 space secondary control register value*/ }; CHIP_Config SEEDDM642percfg = { CHIP_VP2+\ CHIP_VP1+\ CHIP_VP0+\ CHIP_I2C+\ CHIP_MCASP0 }; extern far void vectors(); Uint8 buffer[100]; Uint8 reciveCnt = 0; /*此程序可将四个采集口的数据经过Video Port0送出*/ void main() { Uint32 i; int readflag = 0; /*-------------------------------------------------------*/ /* perform all initializations */ /*-------------------------------------------------------*/ /*Initialise CSL,初始化CSL库*/ CSL_init(); CHIP_config(&SEEDDM642percfg); /*----------------------------------------------------------*/ /*EMIFA的初始化,将CE0设为SDRAM空间,CE1设为异步空间 注,DM642支持的是EMIFA,而非EMIF*/ EMIFA_config(&Seeddm642ConfigA); /*----------------------------------------------------------*/ /*中断向量表的初始化*/ //Point to the IRQ vector table IRQ_setVecs(vectors); IRQ_nmiEnable(); /*----------------------------------------------------------*/ seeddm642_esam_open(); /* esam卡的写功能测试*/ /* for(;;) { for(i = 0;i<8;i++) { buffer[i] = 0x55; } seeddm642_esam_write((Uint32)(&buffer),8); }*/ for(i= 0;i<100;i++) { buffer[i] = 0; } seeddm642_esam_reset(); /*读复位的响应数据*/ do//无数据接收到,继续等待 { readflag = seeddm642_esam_read((Uint32)(&buffer),(Uint32)(&reciveCnt)); }while(readflag == 1); for(i = 0;i