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.

[参考译文] MSPM0L1228-Q1:MSPM0 SPI 代码不适用于 3 线制

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1660400/mspm0l1228-q1-mspm0-spi-code-doesn-t-work-for-3-wire

器件型号: MSPM0L1228-Q1

在文件 SPIMSPM0.c 中、initHw () 函数中有以下代码:

   if (hwAttrs->csnPin && ((format & SPI_CTL0_FRF_MASK) == SPI_CTL0_FRF_MOTOROLA_3WIRE))
    {
        /*
         * A CS pin was specified, upgrade the 3WIRE to a 4WIRE mode
         */
        format |= SPI_CTL0_FRF_MOTOROLA_4WIRE;
    }

 然而、CSnPin==0 是有效引脚。  如果您将其设置为 0、其他地方的代码将配置引脚 0。  但是、如果您将 CSnPin 设置为 GPIO_INVALID_INDEX、则这将有用(没有)地将格式设置为 4 线。

我认为第一行应该是:

if (hwAttrs->csnPin != GPIO_INVALID_INDEX && ((format & SPI_CTL0_FRF_MASK) == SPI_CTL0_FRF_MOTOROLA_3WIRE))

或者实际上、整个检查应该消失。  让用户设置所需的值。

但是、在整个文件中、对 3 线的处理似乎考虑不充分。  上面是有效的、但它实际上应该使用格式来知道是否正在使用 CS、如果是这种情况、则忽略所有 CS 操作。

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

    您好 Corey、
    感谢您的反馈。 我将让我的团队知道这一点、我们将评估如何处理。

    此致、

    Diego Abad