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.

[参考译文] Linux/AM4377:McSPI 64位传输

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/617300/linux-am4377-mcspi-64-bit-transfer

器件型号:AM4377

工具/软件:Linux

你(们)好

作为我们要求的一部分、需要在一个 SPI 事务中传输64位字。

我可以使用强制位在整个事务中保持芯片选择为低电平。

(我知道我可以通过使片选线路成为 GPIO 来保持片选低电平、然后根据要求对其进行控制)

但是、我只能传输32位字。

这是一个限制、我在单次传输中最多只能传输32位。

从 TRM 中、我看到、我们可以传输:

如果字长为8位、则在单次传输中为4个字

如果字长为16位、则为2个字

那么、您能否告诉我、我是否能够在单个事务中进行64位传输(单片选择)

提前感谢

Rohit

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

    我认为 TRM 对此非常清楚。 CPU 端的存取宽度为32位、因此无法在一次存取中执行64位传输。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于一次访问中的64位、我不能进行两个32位传输(2个字)、四个16位传输(4个字)。 但是、如果我可以发送8个8位字(8个8位长度的字)、我可以一次访问64位。 这不是 TRM。 因此、我需要对此进行确认。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "访问"是什么意思? 您是否在谈论访问外部 SPI 器件或 CPU 访问 McSPI?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    访问=一个事务/传输周期

    我的问题只是我应该能够在 SPI 的一个传输周期内执行多少字/位。

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

    我的问题是否有任何更新?

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

    Sitara 中的 SPI 接口支持8至32位的字长。 因此、如果您需要传输64位字、则必须使 SPIEN 保持活动状态并将数据传输为两个连续字。

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

    Yordan、您好!

    对延迟答复感到遗憾。
    是的,在两个连续的字之间的力位的帮助下,我能够使 SPIEN 保持活跃。
    基本上、我的要求是传输64位数据。
    但是,尽管 SPIEN 保持活跃,但我:
    1)无法传输两个32位字(从器件仅接收前32位字、而第二个32位字丢失)
    2)无法传输四个16位字(从机仅接收前2个16位字、后2个16位字丢失)

    但我可以传输8 8个8位字(总共64位数据)、从器件接收所有这些字。
    我知道 SPI 缓冲器是一个8位缓冲器。 这个8位缓冲器是否与这个奇怪的运行方式有任何关系(能够传输8个8位字、但是不能成功发送两个32位字/四个16位字)?

    谢谢
    Rohit

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

    如何配置 MCSPI_CHxCONF 寄存器、特别是 WL 位字段?

    此外、您是否在 SPI 上连接了其他任何设备? 否则、您可以在不需要 CS 的情况下使用3引脚模式。

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

    Yordan、您好!

    (目的是传输64位。)

    MCSPI_CHxCONF:
    传输两个32位字
    模式0、WL - 32、强制位设置、单一线路上的 Tx 和 Rx、SPIEN 自动
    [**在传输两个32位字时保持芯片选择为低电平**]

    MCSPI_CHxCONF:
    传输四个16位字
    模式0、WL - 16、强制位被置位、单一线路上的 Tx 和 Rx、SPIEN 自动
    [**在传输四个16位字时保持芯片选择为低电平**]

    MCSPI_CHxCONF:
    传输 Eigh 8位字
    模式0、WL - 8、强制位被置位、单一线路上的 Tx 和 Rx、SPIEN 自动
    [**在传输8个8位字时保持芯片选择为低电平**]

    对于我的用例、由于从器件是 FPGA、因此非常需要片选、并且在芯片选择为低电平时锁存芯片选择、并且在时钟相位0、极性0 (模式0)上锁存

    谢谢、此致
    Rohit