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.

[参考译文] MSP430F5638:让 MSP430 SPI 4引脚运行、3引脚100%解码

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1404420/msp430f5638-getting-msp430-spi-4-pin-running-at-all-and-3-pin-decoding-100

器件型号:MSP430F5638

工具与软件:

我有一个运行 MSP430F5638IPZ 的定制 SBC、我在4引脚模式下无法使 SPI 正常工作、甚至无法向示波器或逻辑分析仪获取任何脉冲。 在3引脚模式-主器件 Tx 中、我看到 CLK 和 MOSI 脉冲、MISO 固定为高电平、就应该如此。 但只能让范围或 LA 在10-20次尝试中触发和解码大约1次。 我的 SBC 上还有 MSP432P401R、SPI 4引脚运行良好、我可以在432上几乎100%的时间触发和解码。 持续测试 SPI 代码 Tx ="ABCDEFGH"。

这具体是 MSP430 P8 UCA1和 UCB1 -请参阅 UCA1的 SPI-1原理图、UCB1转至另一个接头-结果相同

430是否不支持4引脚 SPI、或者我是否遗漏了一个步骤?

2.为什么触发和解码430 - 3引脚信号时遇到这么大的困难? 我在 CLK 下降沿触发。 Scope 或 LA 的结果相同。 有关成功的3引脚主器件 TX 解码、请参阅示波器图像。

430 P8也支持 UART、SPI 和 I2C、其中 I2C 在 SDA 和 SCL 上有两个上拉电阻、它们与 UCB1SIMO 和 UCB1SOMI 共用。 UCB1 MOSI 工作正常、我认为 I2C 上拉电阻不会导致 SPI 出现问题。 只将引脚默认拉至高电平、信号逻辑将根据需要变为高电平或低电平。 请确认?

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

    1) 1)在从模式下、4引脚可按预期工作、通常优于3引脚。 在主模式下、4引脚不能按您(可能)预期的方式工作[参考 UG (SLAU208Q)图37-2]、但可能需要使用3引脚加 GPIO 用于/CS (如果需要、可以使用 STE 引脚)。 您使用哪种模式?

    2) 2)我的第一个猜测是与时钟相位有关、 我希望您 也必须告诉分析仪有关情况。 请记住、UCCKPH 设置在 CPHA 对面。

    3)我希望这会起作用,上拉不会妨碍。 我已经看到这些(通常是较弱的)用于 SPI 和 UART、以便在重新启动期间防止引脚切换。 您应确保 J4/J5中只有一条连接到任何地方、因为无论您是否需要、另一端的任何器件都可能驱动其中一条线路。

    分析仪顶部和底部解码有什么区别?  最下面的一个 似乎足够快乐。

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

    感谢您的答复。

    1 -尝试了4引脚主模式和从模式、甚至无法获得示波器的脉冲、我将尝试使用 GPIO CS 的3引脚。 我也首选4引脚。

    2 -为相同的 SPI 参数设置了 SPI 端口和范围或 LA。 不知道 CPOL 和 CPHA 应该相反?

    3 -我的图纸说明说要单独使用它们-我很欣赏这篇评论,不连接到任何你需要在当时工作的东西。

    示波器屏幕截图显示停止时10次以上尝试的唯一正确解码。 当连续运行时,你会看到"ABC"偶尔飞,但大多数是 ASCII gibberish。 如果您通过压缩时基来显示更多脉冲、则无法在屏幕底部看到数据值。 您可以滚动浏览屏幕顶部的表格以查看数据。

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

    1) 1)我建议主器件使用3引脚(+GPIO 用于/CS)、而从器件使用4引脚。 从器件本身不会产生任何脉冲、因为主器件控制 SCK。  

    2) UCCKPL 应与 CPOL 相同设置。 UCCKPH 应设置为与 CPHA 相反。

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

    我的问题可能是我根本没有设置 UCCKPL 或 UCCKPH、而只是 CPOL 和 CPHA。 前者在哪里?

    尝试了大量排列、4引脚根本没有解码、3引脚会在10次尝试中的2次正确解码。 当它正常工作时、它会正确解码约3500个字符。

    以下示例 C 代码适用于端口设置函数和数据字符串 Tx 函数。

    3500个字符。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // setup MSP430F5638 P8 UCB1 SPI
    // 4 pin master tx mode
    // nothing works, no decode at all
    // 3 pin master tx mode
    // tried with & without STE used as GPIO CS
    // properly decodes about 2 out of 10 attempts
    // the 2 that work each capture up to 3500 characters correctly for 10 ms @ 500 MHz LA
    // 8 fails get ASCII gibberish for all characters
    // uses polling, according to TI tech support, for high speed SPI, ISR's are slower, don't use them
    // P8 Tx string = "ABCDEFGH" to scope or LA, same results for both instruments
    void SPI_2_M_init(void)
    {
    UCB1CTL1 = 0x01; // disable UCB1 during configuration
    // 4 pin SPI synch - no pulses at all
    // MSP430 does not work in 4 pin mode to LA's anyway
    // set all SPI-2 serial parameters
    // high nibble 1110 = clock phase = 1, polarity = 1, MSB first = 1, 8-bit = 0
    // low nibble 1101 = Master = 1, 4 pin STE low = 10, Synch Mode = 1
    // 7654 3210
    // 1110 1101 = 0xED
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我已经为我的 SPI 设置函数和 Tx 函数添加了一个代码文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的问题可能是我根本没有设置 UCCKPL 或 UCCKPH、只有 CPOL 和 CPHA。 [报价]

    使用提供的已定义符号可以使事情更加清晰:

    Fullscreen
    1
    2
    3
    UCB1CTL0 = 0xE9;
    // vs.
    UCB1CTL0 = UCCKPH | UCCKPL | UCMSB | UCMST | UCSYNC
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


    CPOL CPHA 等的命名对我来说总是令人困惑、因此我查阅数据表以了解预期结果。 它在大部分时间都起作用、但并非总是如此。 小尺寸 OLED 显示屏给我带来了麻烦、因为数据表似乎表明它并不关心时钟的空闲状态。 确实如此。