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.

[参考译文] TMS320F28388D:下降沿方案中不需要的额外 SPI 时钟

Guru**** 2390755 points
Other Parts Discussed in Thread: TMDSCNCD28388D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1319201/tms320f28388d-unwanted-extra-spi-clock-in-falling-edge-schemes

器件型号:TMS320F28388D
主题中讨论的其他器件:TMDSCNCD28388D

您好!

我一直使用  TMDSCNCD28388D 子板与 SPI 器件通信。 通信设置如下:

-数据宽度: 8位

-比特率: 1Mbps

-模式:控制器


使用上升沿 计时方案(Cpol = 0)时、一切都正常。  

然而、 在下降沿方案(Cpol = 1、Cpha = 0或1)上、我看到时钟线上有一个异常行为。

下面是一些波形:

上升沿方案(Cpol = 0)

2.下降沿方案(Cpol = 1)

如上面的波形所示、上升沿方案对于8位有确切的8个时钟脉冲。 但是、由于某些原因、下降沿方案有一个额外的脉冲。 由于这个额外的时钟脉冲(看起来像寄生脉冲)、数据(输入/输出)将是错误的。 例如、由于额外脉冲(正常8个脉冲之前和之后)、MOSI 数据应该为0xFF、但锁存为0x3F。

我 尝试了所有 SPI 模块(SPIA、B、C、D)、并使用了不同的时钟引脚、但仍然面临同样的问题。

我的配置代码与 spi_ex6_eeprom 示例工程类似(只是 我使用的是 SPI_PROT_POL1PHA0或 SPI_PROT_POL0PHA1 )。

void mySPI0_init (){
   SPI_disableModule (mySPI0_BASE);
   SPI_setConfig (mySPI0_BASE、DEVICE_LSPCLK_FREQ、SPI_PROT_POL1PHA0、
   SPI_MODE_CONTROL、1000000、8);
   SPI_setPTESignalPolarity (mySPI0_BASE、SPI_PTE_ACTIVE_LOW);
   SPI_disableFIFO (mySPI0_BASE);
   SPI_disableLoopback (mySPI0_BASE);
   SPI_setEmulationMode (mySPI0_BASE、SPI_emulation_stop_midway);
   SPI_enableModule (mySPI0_BASE);

void PinMux_init ()
{

   GPIO_setPinConfig (GPIO_11_GPIO11);

   GPIO_setPinConfig (mySPI0_SPIPICO_PIN_CONFIG);
   GPIO_setPadConfig (mySPI0_SPIPICO_GPIO、GPIO_PIN_TYPE_STD);
   GPIO_setQualificationMode (mySPI0_SPIPICO_GPIO、GPIO_QUAL_ASYNC);

   GPIO_setPinConfig (mySPI0_SPIPOCI_PIN_CONFIG);
   GPIO_setPadConfig (mySPI0_SPIPOCI_GPIO、GPIO_PIN_TYPE_STD);
   GPIO_setQualificationMode (mySPI0_SPIPOCI_GPIO、GPIO_QUAL_ASYNC);

   GPIO_setPinConfig (mySPI0_SPICLK_PIN_CONFIG);
   GPIO_setPadConfig (mySPI0_SPICLK_GPIO、GPIO_PIN_TYPE_STD);
   GPIO_setQualificationMode (mySPI0_SPICLK_GPIO、GPIO_QUAL_ASYNC);



请告诉我、如果我 错过了任何内容 、以便时钟在 下降沿方案中正常工作。

非常感谢、  
此致、

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

    简单地说、在我的测试中没有使用 FIFO 和 DMA。

    这是另一张照片、Cpol = 1、Cpha = 1 (带延迟的下降沿)

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

    尊敬的 Anthony:

    为了确保我正确理解、在前两个屏幕截图中、 Cpha 等于什么? 是不是当 Cpha = 0或1时、您可以看到上面的示波器截图?

    艾什瓦里亚

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

    尊敬的 Aishwarya:

    前两个屏幕截图是 Cpha = 0时的

    安东尼

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

    尊敬的 Anthony:

    使用下降沿时钟方案时、发送和读回的数据(TX/RX 缓冲区和相关寄存器)是否正确? 代码配置看起来不错、因此我倾向于认为这是 GPIO 配置错误、因为当 CPOL=1时、CS 应保持高电平、直到时钟启动。 我还建议尝试更改时钟相位、因此您可以 使用 CPHA=0写入和使用 CPHA=1读取响应。 由于  SPI 极性/相位方案 根据公司的不同而使用不同的名称、因此 SPI 时钟配置也要匹配、这一点很重要。

    艾什瓦里亚

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

    尊敬的  Aishwarya:

    感谢您的回复。

    -在下降沿时钟方案中,发送和读回的数据看起来都是错误的。

    -"在时钟启动前 CS 应保持高电平":

    我正在使用 GPIO 来控制 CS 引脚。 CS 低电平与时钟启动之间的最长延迟时间是多少?  我在 CS 低电平和 SPI 写入之间使用10us 的延迟、但我确实尝试了无延迟、但仍然面临同样的问题。

    当 CPOL = 1时,CPHA 设置不会改变时钟行为。

    - 我认为仍然存在的问题是 为什么我们在下降沿方案上有一个额外的 CLK 脉冲?  额外脉冲似乎始终是第一个持续时间较长的脉冲。  如照片所示、对于上升沿方案、正如预期的那样、我们只有8个脉冲。

    这可能是由任何 SPI 硬件问题引起的吗?   

    此致、

    安东尼

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

    尊敬的 Anthony:

    如果 SPISTE 用于本 数据表中的两种时钟极性 、我们会提供时序数据、您可以在使用 GPIO 控制 CS 引脚时将其用作参考。

    我最后将使用您的配置测试示例、并在周末后与您联系。  

    艾什瓦里亚

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

    尊敬的 Anthony:

    请参阅以下 E2E、获取解决您的问题的软件解决方案: TMS320F280025C:使用 driverlib 函数时在 SPI 中手动控制 CS 引脚的问题- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛

    此线程中的设置与您的代码略有不同、但我认为内容仍然适用。 请告诉我建议的答案是否适合您。

    艾什瓦里亚

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

    尊敬的 Aishwarya:

    感谢您为我提供链接。 这正是我最后发生的事情! 我已按照此处的说明操作、它解决了时钟问题。

    谢谢、

    安东尼