我是用合众达SEED—DEC6416开发板,在将EMIFB配置为异步16位工作情况下,相应的异步控制信号引脚,如BAOE、BARE、BCE1-3等输出一直是高电平,而不是应该有的高低电平变化的信号,请问这个会是什么原因导致的呢?EMIFB应该是工作的,因为时钟输出信号CLKOUT2的频率跟配置的频率是一致的呀,不过CLKOUT2输出信号的幅值却比较小,峰峰值在1V左右,不知道为什么其他异步控制信号输出信号的输出却不对呢?
下面是我的EMIFB寄存器配置部分程序:
static EMIFB_Config myEmifbCfg={
0x00012C38, //GBLCTL:ECLKOUT2输出时钟信号168MHZ,外部器件准备就绪并申请、拥有EMIF,HOLD输入允许
// 0x00052C38, //GBLCTL:ECLKOUT2输出时钟信号 168/2 MHZ,外部器件准备就绪并申请、拥有EMIF,HOLD输入允许
0xFFFFFF03, //CE0CTL:
0xFFFFFF03, //CE1CTL:
0xFFF20311, //CE2CTL:Rsetup=2,Rstrobe=3,hold=1;16位异步
0xFFFFFF03, //CE3CTL
// 0x0248F000, //SDCTL
// 0x005DC5DC, //SDTIM
// 0x00175F3F, //SAEXT
0x00000000,
0x00000000,
0x00000000,
0x00000000, //CESEC0
0x00000000, //CESEC1
0x00000000, //CESEC2
0x00000000 //CESEC3
};
在main函数中使用CSL库函数进行配置,程序为:
void main(void)
{
GPIO_Handle myhGpio;
Uint32 i;
// EDMA_Handle myhEdma;
Uint32 EMIFB_GBLCTL_val1,EMIFB_GBLCTL_val2;
//Initialise CSL
CSL_init();
//配置GPIO
myhGpio = GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);
GPIO_config(myhGpio,&myGpioCfg);
/*
//配置EDMA
myhEdma = EDMA_open(EDMA_CHA_EXTINT6,EDMA_OPEN_RESET); //EDMA通道复位,中断禁止并清除
EDMA_config(myhEdma,&myEdmaCfg);
*/
// EDMA_ISROpen();
//
*(volatile unsigned int*)XBUSR = 0x00000002;
EMIFB_GBLCTL_val1 = EMIFB_RGET(GBLCTL);
//配置EMIFB
EMIFB_config(&myEmifbCfg);
EMIFB_GBLCTL_val2 = EMIFB_RGET(GBLCTL);
for(i=0;i<BUF_SIZE;i++){
data_org[i] = i;
data_proc[i] = data_org[i];
}
……
}