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.

[参考译文] MSP430FR2633:3线 SPI 从器件发送错误

Guru**** 2614265 points
Other Parts Discussed in Thread: MSP430G2553, MSP430FR2633

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/808829/msp430fr2633-3-wire-spi-slave-transmit-error

器件型号:MSP430FR2633
主题中讨论的其他器件:MSP430G2553MSP430WARE

您好!

      我通过 SPI 通信将 msp430g2553与 msp430fr2633相连。 在这里、msp430g2553是主器件、而 msp430fr2633是从器件。 我能够在从器件上接收多个字节。 从器件向主器件发送以下字节,但主器件仅接收最后一个字节。

0x0A、0x0B、0x0C、0x0D、0x0E。

我已经连接了主器件和从器件的代码片段。

e2e.ti.com/.../spi_5F00_master.c

e2e.ti.com/.../spi_5F00_slave.c

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

    嗨、Gourav、

    我们提供了一些可能有用的 SPI 代码示例。 看起来您可能正在将一个用于主代码、但另一个可能值得尝试。

    在 CCS 中、导航至:

    View > Resource Explorer > Software > MSP430Ware > Devices > MSP430G2xx > MSP430G2553 > Peripheral Examples > Register Level > msp430g2xx3_USCI_SPI_standard_master.c

    FR2633器件还有一个"标准从器件"示例、值得一看。 这些将是检查代码或直接实施代码的绝佳参考点。

    如果您仍有问题、请告诉我。

    谢谢、

    Mitch

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

    您好 Mitch、

      我正在处理一个具有严格 GPIO 限制的项目、因此我使用3线 SPI。 我已经尝试了 Resource Explorer 中的主控"msp430g2xx3_uscia0_spi_09.c" 和从属 控"msp430fr243x_euscia0_spi_10.c"示例。  当从器件处于回送模式时、主器件接收来自从器件的数据。 当主器件发送1个字节并且从器件发送3个字节的数据时。 主剂量不接收从设备的数据。

    SPI 配置设置为 clk_polarity 高电平和 clk_phase 低电平。

    这里可能有什么问题?

    从机可以启动数据传输吗?

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

    您好、Gourav、

    [报价用户="Gourav H"]从属方是否可以启动数据传输??

    否、从机无法启动数据传输。 您可以写入从器件的 TX 缓冲区、但数据不会在 MISO 线路上传输。 主器件通过提供时钟信号来启动所有数据传输。 当主器件提供时钟信号时、从器件的数据将在 MISO 线路上传输。

    当您说"回送"模式时、您是否在谈论从设备何时"回送"数据到主设备? 如果是这样、这是有道理的、因为这就是示例代码的设计方式-主器件将提供足够长的时钟信号、以便从器件获得响应。

    如果主器件发送1个字节、而从器件应发送3个字节的数据、则不起作用。 这是您自己的代码吗? 主器件是否提供足够长的时钟信号、以便从器件发送全部3个字节?

    谢谢、

    Mitch

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

    您好 Mitch、

       感谢您提供的信息、

    [引用用户="Mitch Ridgeway "]

    如果主器件发送1个字节、而从器件应发送3个字节的数据、则不起作用。 这是您自己的代码吗? 主器件是否提供足够长的时钟信号、以便从器件发送全部3个字节?

    [/报价]

    是的、这是我自己的代码、我认为我在主器件侧生成 GPIO 中断并向从器件发送虚拟字节。 然后从器件向主器件发送3个字节。 这可能会起作用,我会给它一个尝试!!!!! 或者 是否有办法这样做???

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

    您好、Gourav、

    让我看看我是否能帮助更详细地解释一下。 让我们重点关注主设备侧的数据接收、因为听起来您可以在从设备侧接收数据。 下面是处于 SPI 主控模式的 G2553器件的示意图、其中包含操作说明:

    只要您的引脚配置为 SPI 主模式并且您的 SPI 中断被启用、您就不需要 GPIO 中断。 为了从从器件接收数据、您需要在主器件侧的 UxTXBUF 中写入数据、以启动从器件的数据传输。 这可以是从器件可以忽略的虚拟数据。  

    当主器件从从器件接收数据时、接收中断标志(URIFG)将被置位。 此时您将需要读取或存储数据。 主器件可以发送另一个虚拟字节来从从器件获取下一个字节、以此类推。

    最后需要注意的一点是:当你想要启动一个 TX/RX 序列时、请确保 USPIE 位被设定为1。 否则、您将无法启动 TX/RX 序列:

    我希望这有助于澄清问题!

    谢谢、

    Mitch