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.

[参考译文] RTOS/PROCESSOR-SDK-AM437X:McSPI 示例问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/673552/rtos-processor-sdk-am437x-mcspi-example-issues

器件型号:PROCESSOR-SDK-AM437X

工具/软件:TI-RTOS

您好!

我在运行 SPI 示例项目(MCSPI_BasicExample_idkAM437x_armExampleProject)时遇到问题。

我已安装的版本:

  • 电路7.2.
  • BIOS_6_46_05_55
  • EDMA3_LLD_2_12_05_29
  • PROCESSOR_SDK_RTOS_AM437X_4_01_00_06
  • PDK_AM437X_1_0_8
  • xdctools_3_32_01_22_core

安装 CCS 和 processor_SDK 后、我已使用 setupenv.bat 批处理文件设置 env。

在这之后、我为所有目标重建了 PDK "gmake clear"、然后重新构建了"gmake all"、然后我使用 pdkProjectCreate.bat 构建了示例和测试项目(同样、对于所有目标)。

我能够将上面提到的项目导入到 CCS 中、并成功构建了该项目并将其加载到工业开发套件(XDS200调试探针)中。

我已经检查了 idk 的原理图和引脚多路复用(am43xx_idkevm_pinmux_data.c)、并看到 SPI3多路复用为 AE22、AB20、AC21和 D11引脚、这些引脚连接到 idk 上的 J16:

  • AE22 - J16/17
  • AB20 - J16/29
  • AC21 - J16/27
  • D11 - J16/10

我已将应用程序中的默认 SPI 索引从1更改为3、以使用 SPI3外设而不是 SPI1。

代码编译和链接无问题、所有初始化函数无错误返回、SPI_Transmit 函数返回时配置为发送的正确字节数、但 J16头文件上的引脚根本不会移动。

我还尝试将0用作 SPI 外设的索引(SPI3是 gMcspiPinCfg 阵列中的第0个元素、所以我尝试了它)、但结果是相同的。

我进一步研究了这个问题、并开始调试初始化函数、即 Board_init (boardCfg);函数。

在 Board_pinmuxConfig()函数中 ,status = PINMUXModuleConfig (CHIPDB_MOD_ID_MMCSD,0U,NULL)函数返回-14,这使得此行后面的所有函数都不会被调用(包括 MCSPI 的 PINMUXModuleCOnconfig)。

据我所知、这是因为在默认的引脚多路复用配置中没有配置 MMCSD。

我已经尝试用调试器覆盖状态变量、以让执行继续并初始化 MCSPI、它返回0、看起来不错、但我仍然无法测量前面提到的引脚上的任何值。

如果有任何帮助,我们将不胜感激。

提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、再说一次、

    更新:

    我已重新安装 pdk_AM437X_1_0_8并尝试使用相同的示例而未重新编译 PDK、现在没有问题、该示例正常工作。

    似乎我一定是无意中被编辑过的。

    尽管如果不是问题、我会有后续问题:

    1.当使用 pinmux 工具为 idk 生成自定义 starterware 文件时,我是否必须遵循任何限制或规则,或者如果 pinmux 工具没有报告错误,则配置应该正常。

    根据规则和限制、我是否绝对必须为某些外设(例如 MMCSD)创建引脚多路复用器、否则、我将会在运行只使用 ADC 和 SPI 的代码时遇到问题?

    2.生成的文件(am43xx_pinmux.h 和 am43xx_pinmux_data.c)应替换 C:\ti\pdk_am437X_1_0_8\packages/ti\starterware\board\中的文件?

    am43xx_pinmux.h -> am43xx_pinmux.h

    将 am43xx_pinmux_data.c 重命名为 am43xx_idkevm_pinmux_data.c 并替换原始 am43xx_idkevm_pinmux_data.c

    此时、我应该清理并重新编译 PDK、并且能够使用新配置、或者我是否必须执行一些我不知道的其他步骤?

    谢谢您的帮助。

    Akos

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

    Pinmux 文件是特定于电路板的、为 IDK 和 GP 等多个 AM437x EVM 提供的示例供参考。 客户可以选择最接近的板、然后使用 PINMUX 工具为自己的板进行编辑。 当您单步执行代码并在 Board_pinmuxConfig() fuion 中找到" status = PINMUXModuleConfig (CHIPDB_MOD_ID_MMCSD、0U、NULL)函数返回-14时、这使得此行后面的所有函数都不会被调用(包括用于 MCSPI 的 PINMUXModuleCOnconfig)。" 如果之前的模块 PINMUX 配置失败、下一个模块将不会执行。 因此、如果某个实例不存在、则需要从 PINMUX 配置中删除它。

    有关步骤、请查看链接 processors.wiki.ti.com/.../Pin_Mux_Utility_for_ARM_MPU_Processors。 我们还举例说明了如何更改 AM335x 的 PINMUX (与 AM437x 相同): www.ti.com/.../sprac32.pdf

    此致、Eric