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.

关于MSP432E401 Lauchpad使用TI Driver驱动SPI外设的问题



各位好

我正在使用TI Driver配置MSP432E401 LauchPad的SPI外设为模式0(SPI_POL0_PHA0)并传输数据。逻辑分析仪的结果表明,在指定帧格式为模式0的情况下,spi的时钟线在空闲时会维持高电平而非一般情况的低电平,只有在开始传输前时钟线才会拉低。这在使用硬件片选信号时无伤大雅——硬件片选引脚会在时钟线拉低以后再拉低,但我在应用中需要使用GPIO模拟的片选信号,它只能在时钟线拉低前拉低,此时会引发SPI时序错误,如下图的逻辑分析仪结果所示:

我在TI Driver手册中没有找到关于时钟线空闲电平的更多说明,请问这一问题是否有较好的解决办法,谢谢!

  • 请您以附件形式上传图片,谢谢

    您现在使用的是TI例程?能否给出例程路径?
  • 请您以附件形式上传图片,谢谢

    您现在使用的是TI例程?能否给出例程路径?

    感谢回复,我使用的例程是SimpleLink MSP432E4 SDK(4.20.00.12)中TI Drivers下的spiloopback例程,FreeRTOS, CCS Compiler,IDE是CCS 10

    这个例程实现了两个SPI端口的互相收发,其中,SSI2配置为master模式,帧格式是SPI_POL0_PHA1,例程代码节选如下所示

        /* Initialize SPI handle as default master */
        SPI_Params_init(&masterSpiParams);
        masterSpiParams.frameFormat = SPI_POL0_PHA1;
        masterSpi = SPI_open(CONFIG_SPI_0, &masterSpiParams);

    根据例程代码,上电后spi master将会发送数据,我将逻辑分析仪连接到它对应的IO,即PD3(CLK) PD1(MOSI) 和 PD2(SS),根据帧格式的定义,POL0意味着空闲时时钟信号电平为低电平,但是,从逻辑分析仪显示的波形上看,时钟信号在空闲时一直保持高电平,如下图所示

    当使用硬件SS引脚作为片选信号时传输不会受到影响,因为硬件会控制CLK先拉低一小段时间,FSS再拉低,如上图所示。然而当使用GPIO模拟的片选信号时,片选信号拉低会在CLK电平仍然为高电平时发生,导致时序出现错误。我的问题是,是否有办法令时钟信号在空闲时保持低电平,或者是针对使用软件片选信号的其他建议。

  • 谢谢您的详细反馈!请问能给出GPIO配置的详细代码?是否是您选择的GPIO已经被开发板使用或者对GPIO配置有些问题?

    在英文E2E上有相同的问题,您可以先看一下

    e2e.ti.com/.../msp-exp432e401y-how-to-exert-fine-control-over-spi-cs-pin-using-spi-transaction