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.
您好!
目前、我们在设计中使用 AM5718 CPU 以尽可能高的频率在双 SPI 模式下控制 SPI NOR 闪存。 我们的 SPI NOR 闪存支持的最大频率为133Mhz。 根据 CPU 数据表(之前由 TI 支持部门通过标签 CS0294210验证)、SPI 模式0中的最短周期时间设置为11.71ns (85.4MHz)。 我想知道如何通过 SPI 模式0实现指定的85.4Mhz 频率。
通过使用寄存器 CM_L4PER2_QSPI_CLKCTRL、我可以使用除数为2的 FUNC_128M_CLK (128Mhz)或除数为5.8MHz 的 PER_QSPI_CLK (192Mhz)来达到64MHz、但除数为3或96Mhz、使用 per_QSPI_CLK 的除数为5.8MHz (192Mhz)。
FUNC_128M_CLK 看起来固定为128Mhz,是否可以修改 PER_QSPI_CLK 以产生85.4Mhz? 根据数据表、第7515页提到 PER_QSPI_CLK 的 ROM 代码默认值为192Mhz、并提示可以通过 CH (配置接头)部分修改该值。 但是、我也看不出我们如何通过这种方式达到85.4Mhz。
非常感谢您的帮助!
您好、Kamel、
我将在内部对此进行检查、并在几天后返回给您。
此致、
基尔西
[引用 USER="Kamel Hacene14"]我们目前正在设计中使用 AM5718 CPU 来控制双 SPI 模式下的 SPI NOR 闪存,并尽可能提高频率。[/引用]
为什么使用双 SPI 模式而不是四 SPI 模式? 我认为这似乎是一个更大的问题。
[引用 USER="Kamel Hacene14"]使用寄存器 CM_L4PER2_QSPI_CLKCTRL,我可以使用除数为2的 FUNC_128M_CLK (128Mhz)或除数为5.96MHz_CLK 的 PER_QSPI_CLK (192Mhz )达到64MHz,但已使用除数为5.96MHz_CLK 的除数为3或以上的 PER_QSPI_CLK (2MHz)。
PER_QSPI_CLK 信号来自 DPLL_PER 输出 H13。 如果您看到 PER_QSPI_CLK = 192MHz、则对应于 H13=4。 将 H13更改为9将导致 PER_QSPI_CLK = 85.3MHz。
[引用 USER="Kamel Hacene14"]根据数据表、第7515页提到 per_QSPI_CLK 的 ROM 代码默认值为192Mhz、并提示可以通过 CH (配置标题)部分修改该值。 [/报价]
与我的初始问题相关、如果您可以使用四路模式而不是双路模式、则引导 ROM 可以在48MHz (具有4个数据引脚)而非12MHz (使用1个数据引脚)下引导。 这将为您提供加载引导加载程序(u-boot-spl 等)的最佳性能。 这比尝试使用配置标头要容易得多。 对于随后引导的项目、u-boot-spl 可以按照所需的方式配置 DPLL_PER、以便您可以全速运行 QSPI。
您好!
[引用用户="Brad Griffies"]
Kamel Hacene14.目前、我们在设计中使用 AM5718 CPU 以尽可能高的频率在双 SPI 模式下控制 SPI NOR 闪存。
为什么使用双 SPI 模式而不是四 SPI 模式? 我认为这似乎是一个更大的问题。
[/报价]
遗憾的是、我们为设计选择的 NOR 闪存不支持 QSPI 模式。 不过,它支持双传输速率(DTR)模式,但 am5718不支持(还是错了?)。
[引用用户="Brad Griffies"]
Kamel Hacene14.通过使用寄存器 CM_L4PER2_QSPI_CLKCTRL、我可以使用除数为2的 FUNC_128M_CLK (128Mhz)或除数为5.8MHz 的 PER_QSPI_CLK (192Mhz)来达到64MHz、但除数为3或96Mhz、使用 per_QSPI_CLK 的除数为5.8MHz (192Mhz)。
PER_QSPI_CLK 信号来自 DPLL_PER 输出 H13。 如果您看到 PER_QSPI_CLK = 192MHz、则对应于 H13=4。 将 H13更改为9将导致 PER_QSPI_CLK = 85.3MHz。
[/报价]
是的、我没有看到 CM_DIV_H13_DPLL_PER 寄存器。 目前、我无法在我们的设计板上对此进行测试、但我使用 am5718 IDK 板进行了一些测试、并获得85.3MHz 的频率。 谢谢!
Kamel Hacene14.根据数据表、第7515页提到 PER_QSPI_CLK 的 ROM 代码默认值为192Mhz、并提示可以通过 CH (配置接头)部分修改该值。
与我的初始问题相关、如果您可以使用四路模式而不是双路模式、则引导 ROM 可以在48MHz (具有4个数据引脚)而非12MHz (使用1个数据引脚)下引导。 这将为您提供加载引导加载程序(u-boot-spl 等)的最佳性能。 这比尝试使用配置标头要容易得多。 对于随后引导的项目、u-boot-spl 可以按照所需的方式配置 DPLL_PER、以便您可以全速运行 QSPI。
[/报价]
与我们对闪存执行的操作相比、SPL 的负载不是很成问题(我们的 SPL 大小约为64KB、而下面的加载步骤大小约为40MB)。
无论如何、非常感谢您的帮助、如果您能回答有关 am5718处理器上 DTR 模式支持的问题、我想知道、我们仍然可以将此帖子标记为已解决。
谢谢!
Kamel
[引用 USER="Kamel Hacene14]Ah 是的、我没有看到 CM_DIV_H13_DPLL_PER 寄存器。 目前、我无法在我们的设计板上对此进行测试、但我使用 am5718 IDK 板进行了一些测试、并获得85.3MHz 的频率。 谢谢![/引述]
很棒! 我很高兴您能让它正常工作。 我还想指出另一件事。 在模式0中使用 QSPI 需要应用手动 I/O 模式(即与 IOdelay 模块相关)。 AM5718数据手册的"表7-2"中对此进行了说明。 模式摘要"。 QSPI 模式3不需要虚拟/手动模式、但模式0要求您应用 QSPI1_MANUAL1的时序、"表7-47中对此进行了进一步说明。 QSPI 的手动函数映射"。 如果您使用的是 Pinmux 工具(您应该!) 要生成您的引脚多路复用设置、所有这些都应该为您完成。 如果您对此都不熟悉、请务必阅读应用手册:
AM57xx Sitara IO 配置要求
http://www.ti.com/lit/sprac44
[引用 USER="Kamel Hacene14"]如果您对 am5718处理器上 DTR 模式的支持有了回答,我想知道,[/引述]
我没有使用此模式的具体经验。 但是、TRM 表示支持该功能。 在第 24.5.1节"四路串行外设接口概述"中、它指定了"双读支持"。 相应地、寄存器 QSPI_SPI_SETUP0_REG 有一个名为 READ_TYPE 的位字段、可针对双读将其设置为1。
[引用用户="Brad Griffies"]
Kamel Hacene14.是的、我没有看到 CM_DIV_H13_DPLL_PER 寄存器。 目前、我无法在我们的设计板上对此进行测试、但我使用 am5718 IDK 板进行了一些测试、并获得85.3MHz 的频率。 谢谢!
很棒! 我很高兴您能让它正常工作。 我还想指出另一件事。 在模式0中使用 QSPI 需要应用手动 I/O 模式(即与 IOdelay 模块相关)。 AM5718 数据手册的"表7-2"中对此进行了说明。 模式摘要"。 QSPI 模式3不需要虚拟/手动模式、但模式0要求您应用 QSPI1_MANUAL1的时序、"表7-47中对此进行了进一步说明。 QSPI 的手动函数映射"。 如果您使用的是 Pinmux 工具(您应该!) 要生成您的引脚多路复用设置、所有这些都应该为您完成。 如果您对此都不熟悉、请务必阅读应用手册:
AM57xx Sitara IO 配置要求
http://www.ti.com/lit/sprac44
[/报价]
啊,谢谢你们的建议! 我个人不熟悉 pinmux 工具、我们的硬件团队通常负责此部件、并为我们提供 io延迟 值。 我会将手册转发给他们!
[引用用户="Brad Griffies"]
Kamel Hacene14.如果您能找到 有关 am5718 处理器上 DTR 模式支持的答案、我想知道、
我没有使用此模式的具体经验。 但是、TRM 表示支持该功能。 在第 24.5.1节"四路串行外设接口概述"中、它指定了"双读支持"。 相应地、寄存器 QSPI_SPI_SETUP0_REG 有一个名为 READ_TYPE 的位字段、可针对双读将其设置为1。
[/报价]
啊、我们实际上使用双读取命令从 NOR 闪存(双 SPI)同时获取两个数据信号。 双传输速率是另一个命令(我从未使用过这两个命令)、用于在时钟的两个边沿传输地址和读取数据。 因此、可以将单路/双路/四路 SPI 与 DTR 相结合、从而实现一些出色的性能、而无需增加时钟频率、从而节省电路板原理图上的一些空间。
祝你度过美好的一天!
Kamel
[引用 USER="Kamel Hacene14"]双传输速率是另一个命令(我从未使用过这两个命令),它在时钟的两个边沿上传输地址和读取数据。[/引用]
很抱歉、我误解了您的问题。 我们支持单路/双路/四路读取、但仅支持单引脚写入。