请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320C6713B 工具/软件:Code Composer Studio
您好!
我正在使用 DSK6713进行开发、使用 EMIF 接口在 CE2空间从 FPGA (Actel A3P400)的22个外部寄存器中异步写入/读取数据、起初一切都按预期进行、这意味着我的代码中 EMIF 控制寄存器的配置是有效的、但随着调试的进行、会发生非常奇怪的情况: 当任何一个 FPGA 寄存器写入位16处的值时、其他寄存 器也将同时写入位16处的相同值、 例如、当步入(F5)一行时、FPGA_REG1[16]被写入1、 然后、在存储器浏览器中、我可以看到所有其他 FPGA_REGx[16]已同时更改为1、无论其值是多少。
这种情况非常烦人、因为 其他21个 FPGA 寄存器的位16分配不需要、通常当 CCS 写入其中一个 FPGA 寄存器时、只有目标寄存器通过地址总线 EA 被写入启用、其他寄存器被写入禁用。
因此、请告诉我这个问题的根源在哪里。
这是我的 C 源代码中的 EMIF 控制寄存器配置:
/*---------- EMIF 配置--- // *(unsigned volatile int *) EMIF_GCR = 0x3320; // C6713数据表中的 GBLCTL // EMIF 全局控制 // 0011 0011 0010 0000 //保留位15:12,默认值0011 //位8和9分别为保持和 HOLDA,请分别参阅 spru266e 第87页 //保留位6,始终读为1 被忽略 //位5 EKEN、ECLKOUT 使能位、1=ECLKOUT 被使能时钟 *(无符号易失性 int *) EMIF_CE0 = 0x30; // C6713数据表中的 CECTL0 // EMIF ce0控制 //位7:4、MTYPE、3h=32位宽 SDRAM *(无符号 EIF_CF03_int *) // C6713数据表中的 CECTL1 // EMIF CE1控制、位7:4、MTYPE、0h=8位宽异步接口 *(无符号易失性 int *) EMIF_CE2 = 0x30D3C321; // C6713数据表中的 CECTL2 // 0011 0000 1110 0011 1100 0010 0001 //位7:4 MTYPE、2h=32位异步接口、FPGA 存储器空间 *(unsigned volatile int *) EMIF_CE3 = 0x30D3C321; // C6713数据表中的 CECTL2 //与0x572_CEMIF_C= 0x116C321 相同的设置*= 0x30D3CEMIF_C32_CSTL2;
// C6713数据表中的 SDCTL // EMIF SDRAM 控制 ZZ *(unsigned volatile int *) EMIF_SDRP = 0x61A;
//C6713数据表中的 SDTIM // EMIF SDRM 刷新周期