TI中文支持网
TI专业的中文技术问题搜集分享网站

28377d 使用EMFI读写数据,地址需要移位才能正确读取,这是什么原因?

28377d 使用EMFI读写数据,地址需要移位才能正确读取,这是什么原因?
通过emif读数据的时候,我想访问的数据例如我想读取异步设备地址0x90上的数据。要在DSP端访问地址0x100000+0x120。相当于0x90左移一位之后加上0x100000。

而通过EMIF写数据的时候发现地址也是移位了。例如我访问地址0x001。实际要写0x100000+0x003,才可以。

不知道是因为什么。以下是初始化代码。

  Emif1Regs.ASYNC_CS2_CR.all =  (EMIF_ASYNC_ASIZE_32    | // 32Bit Memory
                                                          // Interface
                                 EMIF_ASYNC_TA_4        | // Turn Around time
                                                          // of 2 Emif Clock
                                 EMIF_ASYNC_RHOLD_1     | // Read Hold time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_RSTROBE_4   | // Read Strobe time
                                                          // of 4 Emif Clock
                                 EMIF_ASYNC_RSETUP_1    | // Read Setup time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_WHOLD_1     | // Write Hold time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_WSTROBE_1   | // Write Strobe time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_WSETUP_1    | // Write Setup time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_EW_DISABLE  | // Extended Wait
                                                          // Disable.
                                 EMIF_ASYNC_SS_DISABLE    // Strobe Select Mode
                                                          // Disable.
  );
setup_emif1_pinmux_async_32bit(0);

mangui zhang:关于总线的左移一位这个一般与硬件设计有关 啊比如A0不连接等处理
对代码处理来讲初始化了EMIF接口然后是基地址+偏移地址进行操作就可以了

28377d 使用EMFI读写数据,地址需要移位才能正确读取,这是什么原因?
通过emif读数据的时候,我想访问的数据例如我想读取异步设备地址0x90上的数据。要在DSP端访问地址0x100000+0x120。相当于0x90左移一位之后加上0x100000。

而通过EMIF写数据的时候发现地址也是移位了。例如我访问地址0x001。实际要写0x100000+0x003,才可以。

不知道是因为什么。以下是初始化代码。

  Emif1Regs.ASYNC_CS2_CR.all =  (EMIF_ASYNC_ASIZE_32    | // 32Bit Memory
                                                          // Interface
                                 EMIF_ASYNC_TA_4        | // Turn Around time
                                                          // of 2 Emif Clock
                                 EMIF_ASYNC_RHOLD_1     | // Read Hold time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_RSTROBE_4   | // Read Strobe time
                                                          // of 4 Emif Clock
                                 EMIF_ASYNC_RSETUP_1    | // Read Setup time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_WHOLD_1     | // Write Hold time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_WSTROBE_1   | // Write Strobe time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_WSETUP_1    | // Write Setup time
                                                          // of 1 Emif Clock
                                 EMIF_ASYNC_EW_DISABLE  | // Extended Wait
                                                          // Disable.
                                 EMIF_ASYNC_SS_DISABLE    // Strobe Select Mode
                                                          // Disable.
  );
setup_emif1_pinmux_async_32bit(0);

qi yang:

回复 mangui zhang:

看过PDF了,2837X的PDF中对于异步EMIF,32位设置引脚上EA0和异步设备的地址0直接相连,只有EMFI接8位或者16位的时候才涉及到移位。

赞(0)
未经允许不得转载:TI中文支持网 » 28377d 使用EMFI读写数据,地址需要移位才能正确读取,这是什么原因?
分享到: 更多 (0)