This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28379D:EMIF

Guru**** 2511985 points
Other Parts Discussed in Thread: TMS320F28379D, C2000WARE, LAUNCHXL-F28379D, TMDSCNCD28379D

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/992381/tms320f28379d-emif

器件型号:TMS320F28379D
主题中讨论的其他器件: C2000WARELAUNCHXL-F28379DTMDSCNCD28379D

您好!

我正在尝试将外部 ASRAM (ISSI IS61WV25616EDBLL-10TL)与 TMS320F28379D 连接。 我有一个根据 TI 规范构建的子板。 但是、当我运行 EMIF_ex1_16bit_asram.c 时 、没有数据写入并且 errCountGlobal = 4。  我是否可以运行任何测试来了解错误? 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="475398" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/992381/tms320f28379d-emif "]我有一个根据 TI 规范构建的子板。

    您能否详细说明 您所指的 TI 规格?

    [引用 userid="475398" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/992381/tms320f28379d-emif "]但是,当我运行 EMIF_ex1_16bit_asram.c 时 ,没有数据写入,错误计数全局= 4。[/quot]

    您是否自定义了 EMIF 延迟 以匹配 ASRAM 的时序要求? C2000-EMIF_ConfigurationTool.xlsx 对这一点很有帮助: ~\C2000Ware_XXXX\boards\TIDesigns\F28379D_EMIF_DC\

     配置 EMIF 后、您是否能够使用存储器浏览器与任何 EMIF 位置进行交互?  如果不是、您可能需要使用示波 器观察某些 EMIF 控制信号、以查看是否存在信号完整性问题。

    [报价 userid="475398" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/992381/tms320f28379d-emif "]是否可以运行任何测试来了解错误?

    您是否正在使用 EMIF 应用手册引用的设计?  (~\C2000Ware_XXXX\boards\TIDesigns\F28379D_EMIF_DC\)

    如果是  ,适当的示例将是 EMIF_dc_*示例,位于以下位置:~\C2000Ware_XXXX\device_support\f2837xd\examples\cpu1

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我 使用  的是 EMIF 应用手册( ~\C2000Ware_XXXX\boards\TIDesigns\F28379D_EMIF_DC\)引用的设计。 我正在运行  

    通过 使用默认 延迟、EMIF_ex1_16bit_asram.c 代码。

    tparam.rSetup = 0;
    tparam.rStrobe = 3;
    tparam.rHold = 0;
    tparam.TurnArnd = 0;
    tparam.wSetup = 0;
    tparam.wStrobe = 1;
    tparam.whold = 0;

    请问  ISSI IS61WV25616EDBLL-10TL 的经销商的价值是多少?  谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="475398" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/992381/tms320f28379d-emif/3666587 #3666587"]我 使用  的是 EMIF 应用手册所引用的设计

    请尝试 EMIF_dc_*示例。 它们是为在 EMIF 子卡设计上运行而开发的。

    另请验证软件项目和硬件是否按照应用手册中"评估板指南"表中的建议进行配置。

    [引用 userid="475398" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/992381/tms320f28379d-emif/3666587 #3666587"]您能否告诉我 ISSI  IS61WV25616EDBLL-10TL 的交易价值是多少?

    EMIF_dc_*示例预填充了包含此 ASRAM 的参考设计中使用的组件的时序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    EMIF_dc_CLA 代码与 ASRAM 完美搭配。 我在    EMIF_ex1_16bit_asram.c 中使用了与 EMIF_dc_CLA 代码相同的时序配置

    但是 、写入 ASRAM 的数据会重新写入为零。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    桑比亚尔

    EMIF_dc_CLA 示例负责处理 EMIF 子卡设计特定的硬件功能-例如、GPIO 控制的寻呼以及 LAUNCHXL-F28379D 和 TMDSCNCD28379D 的交叉 EVM 支持。

    EMIF_ex1_16bit_asram 示例将需要适应 适用于您的运行环境的变化(在应用手册的"评估板之间的硬件差异"部分中注明)。

    Tommy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我正在尝试简单地写入子卡上的16位 ASRAM。 我将 EMIF_dc.c emif_dc.h 文件放入 EMIF_ex1_16bit_asram.c

    代码如下:

    ######################################################################################################################

    //
    //包含的文件
    //
    #include "F28x_Project.h"
    #include "EMIF_dc.h"

    //
    //常量
    //
    #define EMIF_NUM EMIF_DC_F2837X_controlCARD_EMIF_NUM
    //#define buffer_words 256

    //
    //全局变量
    //

    //#pragma DATA_SECTION (dstBuffer、".EM2_CS2");
    #define ASRAM_CS2_START_ADDR 0x100000
    #define ASRAM_CS2_SIZE 0x8000


    //函数原型
    特性
    MEM_READ_WRITE (uint32 start_addr、uint32 mem_size);
    //extern void setup_emif1_pinmux_async_16bit (uint16);


    //
    //主函
    //
    void main (void)


    //
    //初始化系统控制:
    // PLL、安全装置、启用外设时钟
    //
    InitSysCtrl();

    Dint;

    //
    //将 PIE 控制寄存器初始化为默认状态。
    //默认状态为禁用所有 PIE 中断和标志
    //被清除。
    //此函数位于 F2837xD_PIECTRL.c 文件中。
    //
    InitPieCtrl();

    //
    //禁用 CPU 中断并清除所有 CPU 中断标志:
    //
    EALLOW;
    IER = 0x0000;
    IFR = 0x0000;
    EDIS;

    //
    //使用指向 shell 中断的指针初始化 PIE 矢量表
    // GService 例程(ISR)。
    //这将填充整个表,即使是中断也是如此
    //在本例中未使用。 这对于调试用途很有用。w
    //可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程
    //此函数可在 F2837xD_PieVect.c 中找到
    //
    InitPieVectTable();

    //
    //初始化 EMIF 模块以便与子卡一起使用
    //
    EALLOW;
    EMIF_DC_setupPinmux (EMIF_NUM、GPIO_MUX_CPU1);
    EMIF_DC_initModule (EMIF_NUM);
    EMIF_DC_initCS0 (EMIF_NUM);
    EMIF_DC_initCS2 (EMIF_NUM、EMIF_DC_ASRAM);

    EDIS;


    char c = mem_read_write (ASRAM_CS2_start_ADDR、ASRAM_CS2_size);
    // setup_emif1_pinmux_async_16bit (1);


    特性
    MEM_READ_WRITE (uint32 start_addr、uint32 mem_size)

    unsigned long mem_wds;
    long *XMEM_ps;
    unsigned int i;
    unsigned int j;

    //
    //写入数据
    //
    XMEM_ps =(long *) start_addr;

    //
    //填充存储器
    //
    MEM_WDS = 0x12340000;
    对于(i=0;i < mem_size;i++)


    *XMEM_ps++= mem_WDS;
    MEM_WDS += 0x00001000;
    对于(j = 0;j < 1000;j++){};

    返回(0);

    如果我切换到 EMIF1、数据被写入块中、但被复位为零。 该代码 不适用于 EMIF2。 我有备用子卡、如果您想尝试代码、我可以将其发运。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    桑比亚尔

    我怀疑在发挥作用时仍然存在分歧。 例如、如果您参考子卡原理图、您将看到内存地址引脚只有14位(A[13:0])被映射到 EMIF 控制的地址信号。 因此、访问偏移量0x4000以外的存储器将需要基于 GPIO 的分页。

    软件上、写入 EMIF_ex1_16bit_asram.c 示例是为了使用32位运算、因此存储器字计数器是32位字、而不是16位字。

    Tommy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的意见。 我需要一种在不使用 CLA 的情况下写入子卡上的 ASRAM 的方法。 请告诉我需要对代码进行哪些更改才能使其正常工作。 谢谢你。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用 userid="475398" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/992381/tms320f28379d-emif/3677827 #3677827"]如果我切换到 EMIF1,数据将以块形式写入,但会重置为零。[/quot]

    当 EMIF 数据变为0时,您是否检查了 EMIF 配置? 如果由于某种原因器件被复位、那么 EMIF 数据将显示0x0、因为所有配置都丢失了。

    您提到您能够正确运行 CLA 代码。 如果是、则您应该能够为 CPU 使用相同的代码。 实际上、EMIF 配置将仅是 CPU 代码的一部分。 只需添加 RD/WR 代码即可。  

    在本例中、我发现有点难理解这个问题。  

    此致、

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请告诉我您对此主题的任何其他发现或疑问。

    此致、

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     我使用了 EMIF_dc.c 和  emif_dc.h 文件并编写了一个简单的写入操作、但这会一直返回到零。 我是否可以运行任何测试来检查它是否正在复位?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以在 ROM 中的复位入口点上有一个断点、如果有复位、则 CPU 将在此断点处停止。 一旦 CPU 暂停、您可以检查 RESC (复位原因)寄存器中的值、以了解导致复位的原因。  

    此致、

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如何在  ROM 中的复位入口点设置断点?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    连接 VIS CCS 后、发出调试复位并检查 PC 值、或在 CCS 中打开反汇编视图、并将断点置于 PC 指向的位置。

    此致、

    Vivek Singh