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.

[参考译文] AM2434:有关 OSPI 读取半级的问题(继续)

Guru**** 2829285 points

Other Parts Discussed in Thread: SK-AM64B, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1540989/am2434-question-about-ospi-read-half-level-continue

器件型号: AM2434
Thread 中讨论的其他器件: SK-AM64BSysConfig

工具/软件:

几个月前、我们在论坛上提出了一个有关通过 OSPI 读取闪存数据时半电平信号问题的问题、详情请见以下链接:

e2e.ti.com/.../5739028

该主题已自动关闭、但我们从未收到明确的根本原因说明或问题的有效解决方案。

最近、我们使用 EVM 电路板和 SDK 示例进行了进一步测试。 可以按照以下步骤可靠地重现此问题。 我们希望 TI 的专家能够继续分析该问题、以确定其根本原因并探索潜在的解决方案。

1. 导入 SDK 示例工程:“mcu_plus_sdk_am243x_11_00_00_15\examples\drivers\ospi\ospi_flash_dma\am243x-evm"</s>“

2.在 example.syscfg->OSPI 上取消勾选“Enable PHY Mode“

3.修改 ospi_flash_dma.c 文件以填充  gOspiFlashDmaTxBuf  全部为 0xFF 的数组

4.调试工程并在 ospi_flash_dma.c:123 处设置断点。  使用示波器捕获 OSPI_CLK 和 OSPI_DQ4 的波形。

5.继续运行工程,我们可以捕获用于 OSPI 读取的半电平波形。 DQ/CLK、1=

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

    尊敬的 Liang:

    您可以尝试使用以下设置吗? 将时钟分频器更改为值 8。

    早期:

    因此、对于 166MHz / 4 = 41MHz、命令所需的虚拟周期为 4。

    现在:

    但对于 166MHz / 8 = 20MHz、命令所需的虚拟周期仅为 3。

    因此、在闪存下的 SysConfig 中、您需要将虚拟周期命令更改为 3、将八进制模式的读取 id 虚拟周期更改为 3。

    用于编辑虚拟时钟 (CMD) 的值-> 3、八进制模式下的虚拟周期数-> 3。 时钟分频器设置为 8。

    将控制器和闪存虚拟周期的读取结果与 24 个周期相同。

    在不修改寄存器的情况下免费运行您的应用程序(如前所述)、并告诉我您现在是否看到任何半级问题?

    Anastas,尝试了相同的,没有看到任何半级问题。

    如果您没有看到问题、那么我们可以继续进行 SDK 中的更改、并将此更改放到:

    1. 时钟分频器 8。
    2. 虚拟时钟 (cmd) 到 3。
    3. 虚拟时钟(读取)范围为 25 至 24。

    期待您的答复。

    此致、

    Vaibhav

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

    如何进行配置?

    八进制模式下的虚拟周期数-> 3

    如果仅修改三部分、则 无论是否启用了 PHY 模式、闪存打开都会失败

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

    您好、

    您还需要将读取 id 周期设置为 3。 我在这里提到了将 2 个参数设置为 3。

    用于编辑虚拟时钟 (CMD) 的值-> 3 以及八进制模式下的虚拟周期数-> 3。 时钟分频器设置为 8。

    另一个可以在以下路径中找到:SYSCONFIG > FLASH > Advanced Flash Configuration > JEDEC ID Read Configuration > Number of dummy dummy cycles in Octal Mode = 3。

    请告诉我、这是否适用于最初禁用 PHY 的情况。

    谢谢、

    Vaibhav

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

    尊敬的 Vaibhav:  

    我已经过测试、没有 半层面的问题。 唯一轻微的缺陷是明显的过冲。

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

    尊敬的 Liang:

    我的示波器存在一些临时问题。 让它运行后、我也会进行测试。 您可以尝试使用以下设置、即

    166MHz/8。

    以下 2 个参数本身设置为 3。

    [引用 userid=“531612" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1540989/am2434-question-about-ospi-read-half-level-continue/6088911

    您还需要将读取 id 周期设置为 3。 我在这里提到了将 2 个参数设置为 3。

    用于编辑虚拟时钟 (CMD) 的值-> 3、八进制模式下的虚拟周期数-> 3。 时钟分频器设置为 8。

    另一个可以在以下路径中找到:SYSCONFIG > FLASH > Advanced Flash Configuration > JEDEC ID Read Configuration > Number of dummy dummy cycles in Octal Mode = 3

    [/报价]

    当您在第 123 行放置一个断点、首次遇到它时、转到寄存器 0xF40010 并将位号 5 设置为 0。 该位基本如下所示: FC40010 的 SAMPLE_EDGE_SEL_FLD 位编号 5。

    您不应该看到半级问题、但如果仍看到“过冲“、请告诉我。

    谢谢、

    Vaibhav

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

    尊敬的 Vaibhav:

    我不在办公室。 您是否可以借用示波器进行测试、或者 Anastas 是否可以帮助进行测试?

    此外、我对您选择此解决方案的原因有点好奇。 这种方法会牺牲 OSPI 速度、而在下面所示的早期测试中、修改寄存器 0xFC400010 位[1:4]也可以解决半级问题。

    因此、我将寄存器 0xFC40010 bits[1:4]的值更改为 5、这对我来说很有用。 以前的位[1:4]配置为 1、现在我写入的更新值为 5、因此现在将位[1:4]设置为值 5、我可以看到下图所示的正确内容

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不在办公室。 您能否借用示波器来测试

    您好、

    当然、我会在星期一上测试此更新并使用最新更新返回。

    谢谢、

    Vaibhav

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

    Vaibhav、

    这里有什么更新吗?

    此致

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

    尊敬的 Liang:

    在使用不同组合进行测试后、我还看到了过冲、其中信号变为大约 2.2V、然后稳定在 1.8V

    我在内部讨论了这个问题、看起来这是正常现象、因为在我的设置中、过冲持续时间不到 20ns。 在 2.2V 之前出现过冲、此值< Vccq + 1.0V。请从闪存数据表中找到相关的片段。

    因此、您可以使用的正确组合是:

    频率= 166MHz

    分频器= 8

    控制器和闪存的虚拟时钟(读取)分别为 24 和 24(将延迟代码设为 11)。 使用值 20 和 20(设置延迟代码= 8)也通过了测试。

    此致、

    Vaibhav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid=“531612" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1540989/am2434-question-about-ospi-read-half-level-continue/6101638

    因此、您可以使用的正确组合是:

    频率= 166MHz

    分频器= 8

    [/报价]

    我认为最终解决方案是更改采集延迟。 但您的结论是减少 OSPI 时钟。 为什么?

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

    显式地将读取延迟值从 1 更改为 5 对生产来说是不可行的、因为这个值/数字是这样的 将因电路板样片而异


    因此、稳健的解决方案将继续使用 166MHz / 8。 请注意、如果 PHY 启用读取 那么频率就是 166MHz 本身(带宽理论 332 Mbps )、而、 写入操作 只需要点击一下 ~22MHz(带宽理论 44Mbps) )。

    目前在 AM62x、AM62Px、AM62Dx 等上、我们采用分频器值 8 作为 8D-8D-8D、控制器的时钟分频器值只有 8。 这是 11.2 版本中的内容。

     

    我们还将针对 AM64x/AM243x 提供此解决方案。

    希望这对您有所帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    作为此值/数字 将因电路板样片而异 .

    即使使用相同的 PCB/布局、它是否如此敏感?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    即使采用相同的 PCB/布局、它也非常敏感吗?

    是、即使采用相同的 PCB 布局、该数字也会有所不同、但此处的主要差异在于 PVT、主要是温度、因此、对于具有不同温度的同一电路板、该值会发生变化。