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.

[参考译文] TMS320F28386S:CM's SSI 端口问题

Guru**** 2445440 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1525068/tms320f28386s-cm-s-ssi-port-issue

部件号:TMS320F28386S

工具/软件:

早上好。

我使用 CM 内核与基于 BT815 的显示器与 SPI 进行通信、并面临奇怪的行为。 在我使用 Tiva C、STM32 和 FTDI 芯片在 PC 上实现相同的显示器之前、存在一些问题。

但当我使用 CM 的 SSI 时、我可以看到、当我从 SSI 读取数据时、它向右移动了一位。 由于与显示器的通信是半双工的、因此我不必同时进行写入和读取、因此我必须在读取前将时钟相位设置为 1、之后将其恢复为 0。 它是有效的,但不是真正的方便。 如我所见、C28x 内核的 SPI 端口的行为相同。  

有没有解决这个问题的办法? 谢谢!

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

    听起来时钟极性和相位配置可能不匹配。 请查看 TRM 中的章节、确保 SSI 配置为与您的 BT815 器件所需的极性和相位配置相匹配。

    47.2.5.1 Freescale SPI 帧格式

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

     BT815 器件所需的极性和相位配置是 POLARITY = 0 和 PHASE = 0。

    因此、我为此设备 alwais 设置 Freescale Mode 0。 它在 TIVA C、STM32 和 FTDI USB-2-SPI 转换器上运行正常、但在 TMS320 器件上无法正常运行

    我尝试了所有可能的配置、但器件仅以 CLK Pol=0 和 CLK Phase=0 正确响应。 但 SSI 端口接收到移动的数据位。 现在执行此操作的唯一方法是:

    [设置 Pol=0、相位= 0]

    【发送命令】

    [设置 Pol=0、相位= 1]

    [发送 0 和读取响应]

    [设置 Pol=0、相位= 0]

    当我从 C28x CPU1 内核使用 ADS8900 时也会出现相同的问题、因此我将 SPI_PROT_POL0PHA0 设置为写入 ADC 配置寄存器、然后将其更改为 SPI_PROT_POL0PHA1 以读取测量值、感谢 ADC 读取数据命令为 0。

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

    从 BT815 DS 开始、数据应在时钟的上升沿采样、并在时钟的下降沿驱动。 时钟也默认为低电平状态。  

    这对应于 C2000 SSI 端口上的 Freescale 模式、SPO=0、SPH=0。

    我建议查看逻辑分析仪上的 SSI 信号、以确保信号确实符合预期。  

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

    是的、我知道、同样、SSI 端口设置为  SPO=0、SPH=0。

    逻辑分析仪(我使用 Digilent One)显示对命令的正确响应(第一个命令检查芯片 ID、该 ID 应为 7C alwais、分析仪显示 7C 响应)。 但 SSI 将其读取为 3E。  

    STM32、Tiva C 和 FTDI 转换器上的相同配置未显示问题、返回 7C。

    我发现的唯一权变措施是在读取之前将 SPH 切换到 1、然后将其切换回 0。

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

    SSI 输出时钟的运行频率是多少? 我想知道 SSIRx 是否存在设置时序问题。 也许更改 SPH=1 会增加设置时间、这就是它在读取期间正常运行的原因。 您是否尝试过以较慢的速度运行 SSI 输出时钟?  

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

    12MHz 是该器件的标准时钟速度。 在 STM32 上,我偶尔提出它 45MHz ,但它仍然工作。

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

    我再次查看 BT DS、以了解 MISO 引脚上的预期建立时间和保持时间。 BT DS 只给出一个 最大值 ToD 规格、因此无法计算 MCU 预期的最短保持时间。 根据 F2838xd MCU DS、SSI 需要 2ns 的保持时间。 BT 器件是否可能不符合此保持时间规格、并且 SSI 读取始终延迟一位?  

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

    很抱歉、忽略最后一条评论。 这对我来说是错误的观察。 建立时间和保持时间规格可以满足要求。  

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

    您能否分享逻辑分析仪图以进行分析?  

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

    不幸的是、我现在正在远程工作、并且将在几周内设置设备。

    但我会尝试让同事连接分析仪并捕获结果。 我将对 F2838x 器件以及 STM32 ONE 进行比较。