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.

[参考译文] TMS570LS1224:配置 SPI 通信时出现问题(延迟、极性)

Guru**** 2600515 points
Other Parts Discussed in Thread: TMS570LS1224, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/741871/tms570ls1224-issue-on-configuring-spi-communication-delay-polarity

器件型号:TMS570LS1224
主题中讨论的其他器件: HALCOGEN

您好!

我在一个项目中使用 TMS570LS1224 µC,并且必须将其与多个传感器连接,包括 AnalogDevice ()的 ADIS16210。

我的 SPI 通信有问题,我想得到任何帮助:-)

1) 1)正如您在 ADIS16210数据表第7页(共20页)中看到的:所需的时钟配置为极性= 1、相位= 1。 我配置了这个(使用 halcogen)、但它不起作用。 后来、我更加注意本数据表20的第8页上的时间记录、并将与 TMS570技术手册第588/589页上的说明和时间记录进行比较、我意识到正确的配置似乎极性= 1且相位= 0。 我的 µC 是:传感器数据表中给出的配置与实际工作配置之间为什么会有如此大的差异。请注意: 我认为相位 EN 极性中存在标度参数、在相同值下具有相同的行为吗?

2) 2)当我从 POL/PHASE = 11切换到 POL/PHASE = 1/0时、效果更好、但仍然不完美:有时我会错过数据、不知道原因... 我将要看一个示波器、但我仍然注意到:在传感器数据表中、指定2个 SPI 事务之间的 DE 延迟必须至少为40µs μ s。 我想使用 wdelay 参数在 halcogen 中对其进行编程、但这里是我的问题:wdelay 是通过将 VCLK1频率除以8位预分频器计算得出的。 当 VCLCK 为80MHz 时、我无法达到40µs μ s 的延迟、但仅达到2µs μ s 左右。

我转到时钟树参数并将 VCLCK1频率降至10MHz (最小值)、但 halcogen 中的最大预分频器值为63、这会导致6.5µs μ s 的 wdelay:这对于通信来说太短了。 是否知道我应该怎么做? µs 现在我进行1次传输、至少等待100 μ s (使用 FreeRTOS)、然后再执行第二次传输、但我希望得到更干净的数据。

现在:

TransmitData (spiREG3、&(Accelerometer->SPI_conf_register)、1、TxData);
 vTaskDelay (20);
ReceiveData (spiREG3、&(Accelerometer->SPI_conf_register)、1、 RxData);

我想这么做

TransmitAndReceiveData (spiREG3、&(Accelerometer->SPI_conf_register)、2、 TxData、 RxData); 正确的延时

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我已经查看了 ADIS16210器件数据表、根据图表、主器件(TMS570LS1224)应该使用极性= 1和相位= 0。
    WDELAY (SPIFMT[31:24])可能应用的延迟为 WDELAY*Pvclk + 2*Pcvlk (其中 Pvclk 为 VCLK 周期)。 对于10MHz、这是12.9uS。
    如果您需要40uS、则应添加 WDELAY 以外的内容或手动管理 CS。
    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、感谢您的回答!
    1) 1)现在、我使用 FreeRTOS 中的 vTaskDelay (20)函数来管理延迟。 但是、"如果您需要40uS、您应该添加 WDELAY 以外的其他内容"是什么意思? 是否有办法在不手动管理 CS 的情况下这样做?

    2) 2)另外:将 VCLCK1 (使用时钟树预分频器)从80MHz 下载到10MHz 可解决数据缺失问题:我现在在 SPI 上获得一致的数据。 但是、我想了解为什么、即使我将 VCLCK1设置为80MHz、使用预分频器将 SPI 时钟设置为500kHz)。 我的意思是:唯一将 VCLCK1设置从80MHz 更改为10MHz 的更改是预分频器、但在这两种情况下、输出 SPI 时钟为500kHz (使用示波器检查)。。。。 那么,我本来希望通信中出现同样的行为吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    1) 1)我的意思与您对 vTaskDelay 函数的操作相同;
    2) 2)如果您添加的延迟在两种情况下都至少为40uS (如从器件数据表中所述)、我也会期望相同的行为。 我想知道 FreeRTOS 是否不会以某种方式干扰。

    此致、
    米罗