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.

[参考译文] TMDSCNCD280049C:芯片选择问题 SPI。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1169624/tmdscncd280049c-chip-select-problem-spi

器件型号:TMDSCNCD280049C

您好:

我需要通过 SPI 与 BMS 与  TMDSCNCD280049C 进行通信:

SPI interface timing

为了成功进行通信、我 需要从最后一个时钟边沿到片选高电平(tlag)等待至少250ns、并且我还需要在前一个 SCLK 的下降边沿将数据载入 MOSI 线路中。

我配置了 SPI、但无法获取 tlag。 此外、SPI 时钟需要为4MHz、tLEAD 也具有最大值。  

在上图中可以看到 SPI 行为。 最后一个时钟边沿和芯片选择之间没有时间。 我尝试了其他方法,例如使用 PWM 和 PWM 中断生成芯片选择,以及在内部发送 SPI 命令,但该方法也不起作用,因为 tLEAD 超过 了最长时间。

有什么关于如何仅使用 SPI 模块解决此问题的想法?

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

    请发布配置 SPI 模块的代码。 最好使用 DriverLib API。 例如:

    SPI_setConfig(W5x00_BASE, DEVICE_LSPCLK_FREQ, SPI_PROT_POL0PHA1, SPI_MODE_MASTER, 500000, 8);

    您很可能需要将 SPI_PROT_POL0PHA1更改为 SPI_PROT_POL0PHA0、反之亦然。

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

    此外、最好使用交替位进行测试、例如将有效载荷更改为0xA5。

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

    感谢您的快速响应:

    这是我的 SPI 配置:

        SPI_disableModule(SPIA_BASE);
        GPIO_setPinConfig(GPIO_16_SPIA_SIMO);
        GPIO_setPinConfig(GPIO_17_SPIA_SOMI);
        GPIO_setPinConfig(GPIO_9_SPIA_CLK);
        GPIO_setPinConfig(GPIO_11_SPIA_STE);
        SPI_setConfig(SPIA_BASE, DEVICE_LSPCLK_FREQ, SPI_PROT_POL0PHA1,
                          SPI_MODE_MASTER, 4000000, 8);
        SPI_enableFIFO(SPIA_BASE);
        SPI_setFIFOInterruptLevel(SPIA_BASE, SPI_FIFO_TXEMPTY, SPI_FIFO_RX7);
        SPI_clearInterruptStatus(SPIA_BASE, SPI_INT_TXFF);
        SPI_clearInterruptStatus(SPIA_BASE, SPI_INT_RXFF );
        SPI_enableModule(SPIA_BASE);

    这就是我发送数据的方式:

    HWREGH(SPIA_BASE + SPI_O_DAT) = message;

    如果我  按照您的建议将 SPI_PROT 更改为 POL0PHA0、 则 SCLK 的下降沿与芯片选择高电平之间确实有更多的时间(不够> 250ns)。 但现在的问题是、我不满足另一个要求、即我需要 在 前一个 SCLK 的下降沿加载数据

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="543442" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1169624/tmdscncd280049c-chip-select-problem-spi/4400240 #4400240"]在 前一 SCLK 的下降沿加载数据[/quot]

    您是否确定"上一个"一词? 如果忽略上一个字、则满足要求。 要采样的数据在下降沿是稳定的、在上升沿是切换的。 您的第二个屏幕截图对我而言是正确的。

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

    此外、您已将 TI 处理器配置为主处理器、但屏幕截图显示了 MISO 上的0xA5输出。 这应该是 MOSI、不应该呢?

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

    Sopena、

    如果将 SPISTE 引脚配置为 GPIO 输出引脚、则可以通过 SW 完全控制 SPISTE 引脚。 通过这种方法、您可以控制何时将 SPISTE 引脚拉至低电平(或)高电平。

    此致、

    曼诺伊

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

    谢谢你。

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

    我要关闭此主题。