| 在补充一下,EBI的初始化函数: void InitEBISettings(void)
 {
 uint8_t        *BaseAddr;
 uint16_t  cnt,i;
 static uint8_t a,b,c,d;
 DRVEBI_CONFIG_T        sEBIConfig;
 DRVEBI_TIMING_T        sEBITiming;
 uint32_t u32SysHCLKFreq = SystemCoreClock;
 
 // Open EBI function
 sEBIConfig.eDataWidth                = E_DRVEBI_DATA_8BIT;
 sEBIConfig.eAddrWidth                = E_DRVEBI_ADDR_16BIT;
 sEBIConfig.u32BaseAddress         = DRVEBI_BASE_ADDR;
 sEBIConfig.u32Size                         = DRVEBI_MAX_SIZE;
 DrvEBI_Open(sEBIConfig);
 
 // Configure EBI timing
 u32SysHCLKFreq = DrvSYS_GetHCLKFreq();
 
 
 sEBITiming.eMCLKDIV         = E_DRVEBI_MCLKDIV_1;
 
 
 sEBITiming.u8ExttALE = 1;
 sEBITiming.u8ExtIR2R = 0;
 sEBITiming.u8ExtIW2X = 0;
 sEBITiming.u8ExttAHD = 1;
 sEBITiming.u8ExttACC = 1;
 DrvEBI_SetBusTiming(sEBITiming);
 
 // Get EBI timing
 DrvEBI_GetBusTiming(&sEBITiming);
 //----------------------------------------base add----------------------------------//
 BaseAddr = (uint8_t *)DRVEBI_BASE_ADDR;
 
 //------------------------------------soft reset----------------------------------------------//
 //*(BaseAddr+0) = 0x80;
 //----------------------------------------------------------------------------------//
 cnt=500;
 while(cnt)
 {
 cnt--;
 
 }
 //-------------------------------write data-------------------------------------------------//
 for(i=0;i<10000;i++)
 {
 *(BaseAddr+1) = 0xC0;
 cnt=10000;
 while(cnt)
 {
 cnt--;
 
 }
 }
 //*(BaseAddr+6) = 0xA8;
 //*(BaseAddr+7) = 0x00;
 //*(BaseAddr+8) = 0x01;
 
 //-------------------------------read data----------------------------------------------------//
 a=*(BaseAddr+5);
 b=*(BaseAddr+6);
 c=*(BaseAddr+7);
 d=*(BaseAddr+8);
 }
 这里面过程是先配置EBI,然后对相关寄存器直接写数据,在读操作,发现读的数据全为0,用示波器观察发现相应的CS信号和ALE信号没有出来;
 |