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.

[参考译文] 如何测试 EMIF 连接到 TMS570的外部 NOR 闪存

Guru**** 2601915 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/731212/how-to-test-external-nor-flash-connected-to-tms570-by-emif

主题中讨论的其他器件:HALCOGENTMS570LC4357

我想测试由 EMIF 连接到 TMS570的外部 DRAM 和 NOR 闪存。

DRAM 工作正常。 我想知道如何测试我的 NOR 闪存。 我使用 HALCOGEN 来生成代码。

我的安全微控制器已连接到“已指定”,其内存定义为“0x60000000”。

通过调用  EMIF_ASYNC1Init()初始化的第一个 I 04.1;


然后、我使用以下代码从 NOR 闪存进行写入和读取。

{     
   
      无符号短整型* NORF_PTR =(无符号短整型*) 0x60000000;
     unsigned short read_back _data;
     * NORF_PTR = 0x1234;
    Read_Back 数据=* SRAM_PTR;

我没有在 READ_BACK_DATA 变量中获得值0x1234。 此外、还检查了存储器位置、显示了0000E040等数据

因此、我想知道我的测试方法是否正确。

如果测试方法正确、则可能是配置问题。

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

    您好 Ragesh、

    您不能将数据直接写入 NOR 闪存地址。 您需要遵循 NOR 闪存数据表中定义的读取/写入序列。

    例如:S29GL01 NOR 闪存

    要将字(Word 程序)写入 NOR 闪存、您需要:

    1.将 AA 写入0x555

    2.将55写入0x2AA

    3.将 A0写入0x555

    4.然后将数据(PD)写入指定地址(PA)

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

    您好、Wang、

    非常感谢您的支持。

    我使用 S29GL128S10DHB010作为外部闪存。

    我使用以下代码在闪存存储器位置写入单个字

    void program_worth()

       uint16_t * base_addr =(uint16_t *) 0x60000000;
       uint16_t * pA =(uint16_t *) 0x60000100;
       uint16_t data = 0x1234;
       
     *((uint16_t *) base_addr + 0x555)= 0x00AA;  /*写入解锁周期1           */
     *((uint16_t *) base_addr + 0x2AA)= 0x0055;  //写入解锁周期2           *
     *((uint16_t *) base_addr + 0x555)= 0x00A0;  /*写入程序设置命令    *
     *(uint16_t *) pA)               = data;    //写入要编程的数据    */

    当我查看存储器位置0x60000100时,它会显示不同的值,大多数时候它会显示0x000e0000。

    我将 TMS570LC4357用作 MCU、EMIF 异步存储 器在0x60000000中定义、因此我将基址用作0x60000000、该存储器也在链接器文件中定义。

    我的理解和测试代码是否正确?

    谢谢、此致、

    Ragesh M R

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

    您好、Wang、

    我已经尝试过该序列、但它不起作用。

    请提供任何测试建议、因为它是多层的、所以我无法探测电路板中的信号。

    谢谢、此致、

    Ragesh M R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我遵循了该顺序、但它仍然不起作用
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否尝试以下操作:

    *((uint16_t *) base_addr + 0xAAA)= 0x00AA;/*写入解锁周期1 *
    *((uint16_t *) base_addr + 0x554)= 0x0055;//写入解锁周期2. *
    *((uint16_t *) base_addr + 0xAAA)= 0x00A0;/*写入程序设置命令 *
    *((uint16_t *) pA) =数据; /*写入要编程的数据 *
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ragesh、

    我假设您已经解决了 NOR 闪存读取/写入问题。