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.

[参考译文] TMS570LC4357:SPIENAn 引脚-您可以在中途保持交易吗?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/564702/tms570lc4357-spienan-pin---can-you-hold-a-transaction-midway-through

器件型号:TMS570LC4357
主题中讨论的其他器件: TMS570LS2124

您好!

我的情况如下:

有一个 Hercules 处理器(当前为 TMS570LC4357、但我们也可以使用 TMS570LS2124)、它使用 MibSPI 总线与 FPGA 进行通信。 到 FPGA 的事务包括一个识别 FPGA 上特定通道的16位标头字、该通道的存储器地址和要采取的操作(读取/写入、复位等)以及对 FPGA 进行数据读取或写入。

例如、FPGA 通道可能从外部器件读取脉冲宽度、并使用有关脉冲宽度的最新信息更新其内部存储器。 CPU 将从 FPGA 读取有关该脉冲宽度的数据。 但是、如果 FPGA 在 CPU 希望读取脉宽寄存器的同时更新脉宽寄存器、则很容易发生冲突。 在这种情况下、CPU 必须根据我的读数延迟 SPI 事务、可以使用 SPIENAn 引脚来完成。

但是、在 FPGA 接收到报头字之前、不可能延迟 CPU、报头字将处于事务处理的中间。 在接收标头字之前、FPGA 将不知道正在访问哪个通道、因此无法评估是否需要保持 CPU。 如果不需要保持、它可以立即提供数据、但如果存储器正在使用、它将需要等待下一个 FPGA 时钟才能访问存储器、这意味着它不会及时到达 SPI 总线发送。

那么、我的问题归结为"SPI 使能引脚是否可用于在交易中途保持交易?"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在芯片选择下降后、SPInENA 引脚在主控模式下被采样。 如果 ASIC 正常、CS 在16位标头字和要读取的数据之间变为高电平、则 SPInENA 将能够保持数据读取。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:

    我们可以更改 FPGA 代码、这样就可以了、但是 Hercules 如何知道芯片选择变低? 它是否依赖我们使用与每个 MibSPI 关联的专用引脚? 我们也可能在数据包中引入延迟字节、但这会在小传输时降低吞吐量(大多数传输可能为4-10字节)。
    Nick
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对 SPInENA 引脚采样的时序与 CS 引脚有关、但如果 ASIC 不需要、我认为您实际上不需要使用 CS。 重要的是 CSHOLD 位(发送数据寄存器的第28位)不应置位。