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.

[参考译文] MSP430G2553:SPI总线通信

Guru**** 2445440 points
Other Parts Discussed in Thread: DAC161S997, ADS1220, MSP430G2553, ADS1120, MSP430G2955, ENERGIA

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/619682/msp430g2553-spi-bus-communication

部件号:MSP430G2553
线程中讨论的其他部件:DAC161S997ADS1220ADS1120MSP430G2955Energia

大家好,

我正在从事一个使用MSP430G2553 MCU,ADS1220和DAC161S997的项目。 我已经为每台设备开发了一个库并使其正常工作,问题是当我将它们放在同一个SPI总线上时,它们开始异常运行,有时它们根本不响应 (我知道每台设备都有不同的SPI模式,并且在库中进行切换)。 是否有人知道此问题或对解决方案有任何想法?

提前感谢您的参与。  

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

    如何控制CS引脚? 在任何给定时间只能有一个SPI从属设备处于活动状态,这通过单独的芯片选择引脚进行控制。 我建议您在3引脚模式下使用USCI,并通过GPIO手动控制CS引脚。 如果您可以提供通信线路的示波器或逻辑分析仪屏幕截图,将会很有帮助。

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

    你好,Manai!

    我在各种项目中使用几乎相同的方法-在MSP430G2955的一条SPI总线上使用DAC161S997和ADS1120。 它运行良好。 您知道了最重要的事情:切换SPI模式。 正如Ryan所说,STE不能与多个从属设备一起使用,您必须为软件控制的每个设备使用专用CS。

    至少我可以告诉你,它一般都能起作用。 如果仍有问题,您可以发布一些代码。

    Dennis

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

    感谢Dennis和Ryan的重播。

    对于CS部件,我实际上是通过每个设备的专用GPIO引脚使用软件解决方案,而不是STE,但仍然没有良好的结果。 这里每个库中有两个函数,它们将值写入给定寄存器。其他函数是根据相同的原则开发的(主要是写入和读取函数)。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些函数是否确保字节已完全传输? 我不知道他们,所以我不知道他们的工作原理。 我问的是,因为向TX缓冲区写入内容并不意味着字节已经传输。 如果有1µs延迟,则可能仍然没有,具体取决于您的SPI时钟。 可能您过早提出CS?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些是我开发的功能,它们可以分别在每个设备上正常工作,但问题是当我将它们放在同一总线上时。 这些函数基于Energia框架的SPI库,正如我所说,它对每个设备都很适用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    然后,您是否检查了您的CS行是否存在问题? 也许其中一个未被驱动到高位,因此其中一个从属控制器处于激活状态,并始终控制miso线路? 某些从属设备可以永久使用CS绑定为低电平的设备,因此在仅使用一个从属设备进行测试时,可能看不到此问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我检查了CS行,它们都正常。 如果你能告诉我你是如何让它们在同一个总线上工作的,或者在处理交换的代码部分工作的,当然,如果你不介意的话,我会很想问。