主题中讨论的其他器件:C2000WARE
在 F28377S 上进行 EMIF 异步通信实验时、 整个选定区域中的数据会发生变化。 它是否是 EMIF 配置问题? 以下是代码:
空 EMIF_Init (空)
{
EALLOW;
ClkCfgRegs.PERCLKDIVSEL.bit.EMIF1CLKDIV = 0x1;
EDIS;
EALLOW;
//禁用访问保护(CPU_Fetch、CPU_WR/DMA_WR)
EMIF1ConfigRegs.EMIF1ACCPRT0.ALL = 0x1;
//提交与保护相关的配置。 直到该位保持置位
//无法更改 EMIF1ACCPROT0寄存器的内容。
EMIF1ConfigRegs.EMIF1COMMIT.ALL = 0x1;
//锁定配置,使 EMIF1COMMIT 寄存器不能
//再更改。
EMIF1ConfigRegs.EMIF1LOCK.ALL = 0x1;
EDIS;
Emif1Regs.ASYNC_CS2_CR.bit.ASIZE = 1; // 16位存储器接口
EMif1Regs.ASYNC_CS2_CR.bit.R_HOLD =14; //读取1个 EMIF 时钟的保持时间
EMIF1Regs.ASYNC_CS2_CR.BIT.R_SETUP =6; //读取4个 EMIF 时钟的选通时间
EMIF1Regs.ASYNC_CS2_CR.BIT.R_STROBE = 6; // 1个 EMIF 时钟的读取建立时间
EMIF1Regs.ASYNC_CS2_CR.bit.W_HOLD =14; // 1个 EMIF 时钟的写入保持时间
EMIF1Regs.ASYNC_CS2_CR.BIT.W_SETUP =6; //写入选通时间为1 EMIF 时钟
EMIF1Regs.ASYNC_CS2_CR.bit.W_STROBE = 6; // 1个 EMIF 时钟的写入建立时间
Emif1Regs.ASYNC_CS2_CR.bit.TA =8; // 2个 EMIF 时钟的周转时间
EMIF1Regs.ASYNC_CS2_CR.BIT.SS =1; // EMIF_ASYNC_SS_ENABLE
Emif1Regs.ASYNC_CS2_CR.bit.EW =1; //扩展等待启用。
EMif1Regs.INT_MSK_SET.bit.at_MASK_SET = 1;
setup_emif1_pinmux_async_16bit (0);
}