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.

[参考译文] TMS570LC4357:在使用 SPI1时无法正常工作

Guru**** 2442090 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1263383/tms570lc4357-stuck-on-working-with-spi1

器件型号:TMS570LC4357

我的项目尝试使用 SPI1、但它一直在使用

但它适用于 SPI3/SPI5。 我已经被卡住了3天,没有找到原因。

我使用了一个空白项目并设置了代码、然后它可以与 SPI1配合使用。 但是我比较了这个项目和空白项目,我没有发现什么不同。

您能帮我弄清楚吗? 谢谢

e2e.ti.com/.../tms570lc4357_5F00_spi_5F00_pmsm.zip

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

    尊敬的 Hongbo:

    刚才我检查了你的代码,发现以下事情:

    为什么不配置 SOMI[0]?

    我不知道你是否故意这样做,但这是不可能的。 我的意思是,没有 SOMI[0]你就不能在 SOMI[1]上单独发送数据。 至少可以在两条线路上发送数据、如下所示。

    因此、请启用 SOMI[0]并对其进行测试。

    --

    谢谢。此致、
    Jagadish。

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

    您好、现在我只需要确认 SPI1 CLK 可以正常工作、因此我不更改 SOMI 或其他选项。 我无法通过此项目代码在示波器上看到 SPI1 CLK 信号、但我可以从空白代码项目获取正确的 CLK 信号。

    而当我把上面的是检查师父出去,我想,所以即使我没有设置 SOMI(但设置 SIMO),它不应该卡在它上,对吗?

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

    尊敬的 Hongbo:

    而当我把上面是检查大师我想,所以即使我没有设置 SOMI(但设置 SIMO ),它不应该卡在它上,对吗?

    在上面突出显示的行、我们轮询以下位:

    仅当接收到新数据时、此位才设置为高电平、如果 SPI 不会向移位寄存器接收到任何新数据、则此位不会设置为高电平、处理器将始终卡在该位。 所以,如果你不把 SOMI[0]配置为输入,那么就不可能直接接收数据呢? 这就是代码始终卡在这一行的原因。

    在这里你可以做两件事情,要么只启用 SOMI[0]功能,如果你不想处理数据,则忽略接收到的数据。

    或其他

    只需在 main.c 中创建另一个 SPI 发送函数、就可以忽略此位的处理(RXINTFLG)、 如果此位为空、则不会轮询 TXINTFLG 位并向数据寄存器写入。

    --

    谢谢。此致、
    Jagadish。

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

    谢谢! 你救了我!

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

    我发现您的屏幕截图是在并行模式下进行的、该模式使用两条或更多数据线、并且仅在 MIBSPI5中受支持。 那么它为什么会影响 SPI1呢? 我仅使用了一条 SIMO 线路。

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

    尊敬的 Hongbo:

    我发现您的屏幕截图是并行模式,该模式使用两条或更多数据线,并且仅在 MIBSPI5中受支持。

    实际上、这是一个拼写错误。

    MibSPI1还将支持并行模式、最多2条数据线路。 而 MibSPI5最多支持4条数据线路的并行模式。

    *在基于 Hercules 的微控制器上使用 MibSPIP 模块的高速串行总线(TI.com)

    您可以通过上面的应用手册进行确认。

    如果它不支持2位并行模式、那么就没有必要提供两条 SIMO 和两条 SOMI 线。

    [报价 userid="196421" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1263383/tms570lc4357-stuck-on-working-with-spi1/4786346 #4786346"]为什么它影响了 SPI1? 我只使用了一条 SIMO 线路。[/引号]

    如果要使用单个 SIMO 线路,则该线路应为 SIMO[0]而非 SIMO[1]。

    --

    谢谢。此致、
    Jagadish。

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

    哦,我认为 SIMO[x]中的任何一个对 SIMO,所以它只是 SIMO[0 ]。

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

    尊敬的 Hongbo:

    噢,我认为 SIMO[x]中的任何一个都适用于 SIMO,所以它只是 SIMO[0]。

    否、SIMO[0]或 SIMO[1]皆不可能。

    如果要使用1位线路模式、我们只能使用 SIMO[0];如果要使用2位并行模式、我们可以使用 SIMO[0]和 SIMO[1]。

    --

    谢谢。此致、
    Jagadish。