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.

[参考译文] TMS320F28384S:需要帮助来确定 SPI 为何不能用于 C2000Ware 和处理器迁移

Guru**** 2393725 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1115418/tms320f28384s-need-help-determining-why-spi-not-working-with-c2000ware-and-processor-migration

器件型号:TMS320F28384S
主题中讨论的其他器件:C2000WARE

我们正在从28374S 迁移到28384S、这需要更新我们的 C2000Ware 库(1.06至4.0)。

既然我们已经进行了迁移、 我可以单步执行我们的逻辑、看到大多数操作都按预期发生、但在检查外部线路时、我看不到 SPI 时钟在将数据放置到 SPI B 的 TX_BUF 中后发出任何信号。该逻辑目前正在轮询。 启用 SPI 外设。 我检查了 SPI 模块寄存器、看不到任何关闭的东西。

2个处理器或 C2000Ware 库更新之间的 SPI 驱动程序是否有任何可能相关的变化? 有关查找位置的任何建议都很有帮助。 谢谢!

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

    您好!

    SPI 模块和驱动器在这两个器件之间保持不变。 GPIO 引脚和中断编号可能存在差异。

    您使用的是 driverlib 函数还是位字段结构?

    此致、

    Veena

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

    您好、Veena、

    我们将使用 driverlib 函数。

    在我们的最新设计中、我们对时钟、SIMO 和 SOMI 使用以下 GPIO 和相关配置。

    /*
     * SPI-B configuration
     */
    #define SPI_B_CLOCK_PIN GPIO26
    #define SPI_B_CLOCK_PIN_CFG GPIO_26_SPIB_CLK
    #define SPI_B_SIMO_PIN GPIO24
    #define SPI_B_SIMO_PIN_CFG GPIO_24_SPIB_SIMO
    #define SPI_B_SOMI_PIN GPIO25
    #define SPI_B_SOMI_PIN_CFG GPIO_25_SPIB_SOMI
    

    尽管线路上现在有2个器件而不是1个器件、但在我们的设计之间设置引脚的逻辑并未改变。 每个引脚都有自己的芯片选择、保持和写入使能引脚。

    SPI 设置为 SPI_MODE_MASTER。

    我们将每个引脚设置为 GPIO_CORE_CPU1、GPIO_QUAL_ASYNCH 和  GPIO_PIN_TYPE_PULLUP。

    我能够看到数据被压入 SPITXBUF、并且可以看到 SPIFFRx 中的 RXFFST 位在读取时被置位、然后被清零、但我 看到 CLK 或 SIMO 引脚的测试点为0V、SOMI 测试点持续为3.3V。 当应该发生消息事务并且写入使能和保持引脚显示3.3V 时、芯片选择被设定为预期、当针对有源器件的线路变为低电平。

    此致、

    -Wes

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

    为了确保它不是硬件问题、您可以从 C2000ware 中试用 F2838x SPI 示例吗? 它可能使用不同的引脚组。 您可以相应地更改它们。

    此致、

    Veena

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

    有道理。 测试后、我将更新此主题。 谢谢!

    -Wes

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

    你(们)好、Veena。

    我使用了 F2838x SPI 示例、并能够确定我的部分问题、显然与确保在任何其他引脚设置之前进行引脚配置有关。 我不确定这是2838x 差异还是 C2000Ware 版本差异、因为在使用较旧版本 C2000Ware 的2837x 处理器中、这是不必要的。

    尽管如此、现在我唯一的问题是 SPI 器件没有响应、因为我希望它们响应。即没有响应。 在这一点上、我希望这会成为我们设计的一个问题、因为正如我通过内部寄存器看到的那样、这些引脚被正确地多路复用为 SPI B SOMI/SIMO/CLK 引脚。 我的芯片选择信号按预期发生(高电平持续关闭、低电平持续打开)、我看到 CLK 和 SIMO 信号、因此在其他地方可能会出现问题。

    感谢你的帮助。

    -Wes

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

    您好、Wes、

    您是否意味着在配置所有其他模块引脚之前必须进行 SPI 引脚配置才能使其正常工作? 我不知道 F2838x 中有任何此类限制。

    您是否使用 driverlib 函数或直接寄存器访问?

    此致、

    Veena

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

    您好、Veena、使用2837x 处理器和 C2000Ware 1.06、 在应用引脚设置时、以下 C2000Ware GPIO 模块功能调用序列正常:

    GPIO_setMasterCore

    GPIO_setPadConfig

    GPIO_setPinConfig

    GPIO_setQualificationMode

    GPIO_setDirectionMode

    但对于2838x 处理器和 C2000Ware 4.00、我们现在必须对 SPI 引脚执行以下操作:

    GPIO_setPinConfig

    GPIO_setPadConfig

    GPIO_setMasterCore

    GPIO_setQualificationMode

    GPIO_setDirectionMode

    必须首先设置引脚配置。 我注意到、在2838x 数据表中、SPI 指示中有一个"配置器件引脚"部分

    '必须配置 GPIO 复用寄存器来将这个外设连接到器件引脚。 为了避免引脚上的毛刺脉冲、必须首先配置 GPyGMUX 位(同时将相应的 GPyMUX 位保持为默认值零)、然后将 GPyMUX 寄存器写入所需的值。"

    我认为这与此相关。 我已经将所有 SPI 相关引脚设置为现在按照设置顺序进行设置、我看到 CLK 和 SIMO 信号按预期发生。 遗憾的是、我的 SOMI (器件响应)有问题、但我的团队需要进一步研究硬件、以确保不会出现问题。

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

    感谢您的详细信息。

    此致、

    Veena