我是用合众达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];
}
……
}
Tony Tang:
关于时钟的幅度问题,检查一下示波是否设定了带宽,要满足2x采样定律,不然相应于加了一个滤波,自然幅度就小了。
ning duan:
回复 Tony Tang:
你好!我检查了示波器是没有设定带宽的,我的开发板在复位以后,EMIFB的始终输出幅值在3.3V左右,当把相应程序下载到开发板并运行,EMIFB的始终输出信号幅值就变小了
Tony Tang:
回复 ning duan:
这种情况说明本来是好的。程序是下载到EMIFB还是片上内存?如果是EMIFB,那么EMIFB的负载会增大,这时幅度变小,说明负载太大了,EMIFB的信号线上有没有加匹配电阻,如果有,改小试试。
另外把程序放在片上内存跑,看是否也有这样的问题?
ning duan:
回复 Tony Tang:
你好!
我是将程序下载到片上内存跑的,程序部分是配置了EMIFB寄存器,想着用扩展接口接FPGA的,并且我查看了原理图,EMIFB的信号线上是没有加匹配电阻的,观察EMIFB的时钟信号,还是之前的情况
Tony Tang:
回复 ning duan:
FPGA已经焊在板子上了吗?会不人是FPGA造成的呢?
ning duan:
回复 Tony Tang:
FPGA跟DSP是在两款板子上的,我是通过排线链接的;我认为不是FPGA造成的,我再没有接FPGA,只是直接测DSP开发板的扩展接口,在程序下载并跑起来的前后,EMIFB的时钟输出信号幅值就是不一样的