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.

[参考译文] PROCESSOR-SDK-AM335X:SPI 环回

Guru**** 2539500 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/849858/processor-sdk-am335x-spi-loopback

器件型号:PROCESSOR-SDK-AM335X

您好!

我正在使用 EVMSKAm335x 处理器套件和处理器 SDK RTOS。 由于 AM335x 的入门套件中没有从器件连接到 SPI、因此我们能否通过环回检查 SPI?

如何配置 SPI 进行环回? 我没有在任何寄存器中获得任何位来配置回送。

此致

高拉夫

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

    您好、Gaurav、

    我还无法在 TRM 中找到 McSPI 的硬件回送模式。

    我在 AM335x PRSDK 6.0.0.7中看到一个 McSPI 环回示例:pdk_am335x_1_0_15\packages/ti\drv\spi\examples\mcspiLoopbackApp 此示例的源代码为:pdk_am335x_1_0_15\packages/ti\drv\spi\spi\examples\mspiLoopbackApp src\mspiLoopbackApp 查看此文件内部、我会看到以下注释:

    *\brief 此文件包含演示 McSPI 回送的应用程序
    *它从数据 I/O 信号传输一些数据模式并接收数据
    *来自相同数据 I/O 信号的数据。

    /* Mspi 不支持环回模式。 要测试 McSPI 上的环回、
    * McSPI 的 Tx 和 Rx 引脚上的接收位都启用
    *

    此目录包含 AM335x 特定于平台的文件、例如 :pdk_am335x_1_0_15\packages/ti\drv\spi\examples\mcspiLoopbackApp\AM335x\armv7\BIOS。 在此目录中、我只能看到 evmAM335x 和 iceAMIC110的项目文本文件。 但是、我认为应该可以为 skAM335x 添加项目文件:

    1.将 mcspi_loopback_arm_evmAM335x.cfg 复制到名为 mcspi_loopback_arm_skAM335x.cfg 的同一目录中的新文件

    2.更新 mcspi_loopback_arm_skAM335x.cfg 中的设置:

    • board.Settings.boardName ="skAM335x";

    2.将 MCSPI_Loopback_evmAM335x_armExampleProject.txt 复制到名为 MCSPI_Loopback _skAM335x_armExampleProject.txt 的同一目录中的新文件。

    3.更新 MCSPI_Loopback _skAM335x_armExampleProject.txt 中的设置:

    • 更新了 cfg 文件的链接:将-ccs.linkFile 设置为 mcspi_loopback_arm_skAM335x.cfg
    • 更新编译器选项:针对另一个 SK 示例中的相关选项更新-ccs.setCompilerOptions
      •  SK 示例:pdk_am335x_1_0_15\packages/ti\drv\i2c\examples\EEPROM_Read\AM335x\armv7\BIOS\I2C_Example_skAM335x_armExampleProject.txt
      • 相关选项示例: -DskAM335x

    4.创建新的 SK 项目:pdkprojectcreate AM335x skAM335x 小 SPI 示例 arm

    此致、
    弗兰克

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

    您好、Gaurav、

    我已验证上述方法是否适用于为 McSPI 环回示例创建新的 SK CCS 项目。

    CCS 工程在执行 pdkprojectcreate: pdk_am335x_1_0_15\packages/MyExampleProjects\MyExamples\f4之后放置在这里。 我验证了能否导入 CCS 工程以及工程是否已编译。 遗憾的是、我目前无法访问 SK 来验证构建的正确操作。

    我已附加以下文件。 在 SK 上执行程序时、您可能仍需要修改一些设置以了解您观察到的行为。

    此致、
    弗兰克

    e2e.ti.com/.../mcspi_5F00_loopback_5F00_arm_5F00_skAM335x.cfg

    e2e.ti.com/.../MCSPI_5F00_Loopback_5F00_skAM335x_5F00_armExampleProject.txt

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

    您好!

    我编写了一个用于发送和接收的 SPI 程序。 我物理连接了 D0和 D1线路、但 SPI 不工作。 请检查程序流程、如果缺少任何配置、请告知我。 我要附加 mcspi.c 和 mcspi.h 文件来获取声明和函数定义。

    我将在3引脚模式下配置 SPI。

    unsigned int a=0;

    SPI0ModuleClkConfig();

    McSPIPinMuxSetup();

    /*重置 McSPI 实例。*/
    McSPIReset (SOC_SPI_0_regs);

    /*启用芯片选择引脚。*/
    McSPICSDisable (SOC_SPI_0_regs);

    /*启用主操作模式。*/
    McSPIMasterModeEnable (SOC_SPI_0_regs);

    //为主控模式执行必要的配置。
    McSPIMasterModeConfig (SOC_SPI_0_regs、MCSPI_SINGLE_CH、
    MCSPI_TX_RX_MODE、MCSPI_DATA_LINE_COMM_MODE_0、
    chNum);

    //根据时钟模式配置 McSPI 总线时钟。
    McSPIClkConfig (SOC_SPI_0_regs、48000000、24000000、chNum、
    MCSPI_CLK_MODE_0);

    /*配置字长。*/
    McSPIWordLengthSet (SOC_SPI_0_regs、MCSPI_WORD_LENGTH (8)、chNum);

    /*将 SPIEN 的极性设置为低。*/
    McSPICSPPolarityConfig (SOC_SPI_0_regs、MCSPI_CS_POL_LOW、chNum);

    /* SPIEN 线被迫处于低电平状态。*/
    McSPICSAssert (SOC_SPI_0_regs、chNum);

    /*启用 McSPI 通道进行通信。*/
    McSPIChannelEnable (SOC_SPI_0_regs、chNum);

    /*强制 SPIEN 线进入非活动状态。*/
    McSPICSDeAssert (SOC_SPI_0_regs、chNum);

    while (1)

    //while (!(HWREG (SOC_SPI_0_regs + MCSPI_CHSTAT (0))&(1<<1)));
    McSPITransmitData (SPI_base_Add、8、MCSPI_channel_0);

    控制台 UtilsPrintf ("a1=%d\n",a);

    //while (!(HWREG (SOC_SPI_0_regs + MCSPI_CHSTAT (0))&(1<0)));
    A=McSPIReceiveData (SPI_base_Add、MCSPI_channel_0);

    控制台 UtilsPrintf ("a=%d"、a);

    /*禁用 McSPI 通道。*/
    McSPIChannelDisable (SOC_SPI_0_regs、chNum);

    此致

    Gaurave2e.ti.com/.../mcspi.ce2e.ti.com/.../mcspi.h

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

    您好!

    请回复上述消息。 我急切地在等。

    谢谢

    此致

    高拉夫

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

    您好、Gaurav、

    您是否使 SPI 回送示例正常工作?

    对于您的代码、您在启动传输时是否看到三个 SPI 引脚(SPI_SCLK、SPI_D0、SPI_D1)中的任何活动?  

    我正在查看您的代码、我将很快提供反馈。

    此致、
    弗兰克

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

    Gaurav、

    我快速查看了您的计划流程。 总体来说还可以。 我有几个问题和看法。

    SPI0ModuleClkConfig()和 McSPIPinMuxSetup()您是否创建了 API? 这可能还可以(尤其是对于原型设计和调试)、但我们鼓励将电路板库用于模块时钟和引脚多路复用配置。 请访问 http://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_00_00_07/rtos/index_board.html#board-support。 您是否在函数执行后通过检查存储器映射中的引脚多路复用寄存器来检查您的函数是否应用了正确的引脚多路复用设置?

    2、其余的 API 函数来自 CSL、因此您似乎不打算使用 SPI LLD? 这对于裸机应用是可以的。

    3.我注意到程序流与 pdk_am335x_1_0_15\packages/ti\cSL\src\IP\mcspi\v0\mcspi.h 文件头中提到的流程之间存在一些细微差异 例如、您启用 CS 断言和取消断言之间的通道。 我认为这些微小的差异不应导致您无法观察任何 SPI 活动。

    4.在调用 McSPITransmitData()和 McSPIReceiveData()之前,您不会在循环中轮询 Tx/Rx 状态。 我会使用 McSPIChannelStatusGet ()来添加它。

    此致、
    弗兰克

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

    弗兰克、

    在 CRO 中、这三个引脚(SPI_SCLK、SPI_D0、SPI_D1)上没有活动。  

    是的、您是对的、我将用于裸机。

    我使用的是 AM335X_StarterWare_02_00_01_01、这是我的客户想要的。

    我已创建 SPI0ModuleClkConfig()和 McSPIPinMuxSetup()。 您可以在 SKAM335x 板上检查此程序吗? 如果程序流中存在任何差异、您可以修改代码并将其发送给我吗?

    在调用 McSPITransmitData()和 McSPIReceiveData()之前,我正在进行轮询,如下所示,我在 CRO 中仍然没有得到任何活动。

    while (1)


    while (!(HWREG (SOC_SPI_0_regs + MCSPI_CHSTAT (0))&(1<<1)));
    McSPITransmitData (SPI_base_Add、8、MCSPI_channel_0);

    控制台 UtilsPrintf ("a1=%d\n",a);

    while (!(HWREG (SOC_SPI_0_regs + MCSPI_CHSTAT (0))&(1<0)));
    A=McSPIReceiveData (SPI_base_Add、MCSPI_channel_0);

    控制台 UtilsPrintf ("a=%d"、a);

    此致

    高拉夫

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

    弗兰克、

    非常感谢您的帮助。 现在 SPI 正在工作。

    此致

    高拉夫