主题中讨论的其他器件:MSP430G2553、 MSP430WARE
您好!
我通过 SPI 通信将 msp430g2553与 msp430fr2633相连。 在这里、msp430g2553是主器件、而 msp430fr2633是从器件。 我能够在从器件上接收多个字节。 从器件向主器件发送以下字节,但主器件仅接收最后一个字节。
0x0A、0x0B、0x0C、0x0D、0x0E。
我已经连接了主器件和从器件的代码片段。
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.
您好!
我通过 SPI 通信将 msp430g2553与 msp430fr2633相连。 在这里、msp430g2553是主器件、而 msp430fr2633是从器件。 我能够在从器件上接收多个字节。 从器件向主器件发送以下字节,但主器件仅接收最后一个字节。
0x0A、0x0B、0x0C、0x0D、0x0E。
我已经连接了主器件和从器件的代码片段。
嗨、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