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/AM3358:McSPI 从站问题

Guru**** 2951100 points

Other Parts Discussed in Thread: AM3358

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/669366/linux-am3358-mcspi-slave-issue

器件型号:AM3358

工具/软件:Linux

你好  

我已经设计了基于 AM335X 通用 EVM 的 AM3358定制板、在该定制板中、我已将 SPI0配置为从器件(更改内核中的寄存器值)。

问题是当主器件驱动片选信号和 SCK 信号 时,AM33358的 SPI 端口将线路拉低,使片选和 SCK 信号从1V 运行到0V,而不是从3.3V 运行到0V。

如何避免这种情况发生?

此致

MAD_HU

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请发布您的 pinmux 设置。 您使用哪些引脚? 如有可能、发布原理图部分。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Biser、

    以下是在 DTS 文件中写入的与 SPI 相关的代码。  当配置为主模式时、SPI 工作正常、但是当配置为从模式时、问题存在。  spi0_cs0 在输出和输入两种情况下均可尝试、但没有使用。

    spi0_pins:pinmux_spi0_pins{

             pinctrl-single、pins =<

                AM33XX_IOPAD (0x950、PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_SCLK.spi0_SCLK *

                AM33XX_IOPAD (0x954、PIN_OUTPUT 上拉| MUX_MODE0) /* spi0_d0.spi0_d0 *

                AM33XX_IOPAD (0x958、PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_D1.spi0_D1 *

                AM33XX_IOPAD (0x95C、PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_cs0.spi0_cs0 *

            >;

          };

    spi0{(&S)

       pinctrl-0=<&spi0_pines>;

    status="oke";

    pinctrl-names ="default";

    ti、pidd-d0-out-d1-in=<1>;

    spidev@0{

    compatible ="linux、spidev";

    SPI-max-frequency =<48000000>;

    REG=<0x0>;

    status="oke";

    };

    };

    此处附上了 SPI 的原理图部分。 AM3358的 SPI 线路直接连接到另一个 IC 的 I2S。

    此致

    MAD_HU

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否确定外部设备可以驱动线路? 您可以通过将 CS 和 SCK 配置为 GPIO 输入进行检查。 另请注意、SPI 从模式是 Linux 处理器 SDK 中不支持的用例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Biser、
    如果我将这些引脚配置为 GPIO,问题就不会出现。
    当我将它们配置为 SPI 时、问题就会出现。

    此致
    MAD_HU
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您似乎与 SPI 驱动程序有冲突。 如果您在未进行任何修改的情况下使用 Linux SDK 附带的 SPI 驱动程序、则不支持从模式。 这一点在以下网址清楚说明:processors.wiki.ti.com/.../Linux_Core_SPI_User's_Guide
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Biser、

    我没有改变太多。 我只更改了 SPI 设置中的一个位、使其作为从器件工作。在浏览技术参考手册后、我只更改了一个位、即 MS 位、使其成为从器件。

    是否还有任何其他需要进行的更改、以使其成为从设备。 请帮助我在硬件更改时需要进行哪些更改。 我将在内核中处理它们


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

    您能否尝试读取 SPI CLK 和 CS 引脚的实际焊盘控制(Pinmux 配置)寄存器并共享结果?

    除了以下配置之外、我还想看看:PULLUUDEN = 0、PULLTYPESEL = 1和 RXACTIVE = 1。

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

    您能告诉我如何读取这些焊盘控制寄存器、即引脚多路复用配置吗


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

    引导电路板并安装 SPI 驱动程序后、您可以在调试控制台中发出以下命令:

    devmem2 0x44E10950
    devmem2 0x44E1095C

    第一行读取 SPI0_CLK padconfig 寄存器、第二行读取 SPI0_CS0 padconfig。

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

    我没有尝试过,因为问题是我想使用框架 SPI 模型,我的驱动程序无法生成该模型,所以我想使用从另一个源生成的信号。 但后来得知、即使我是从设备、我也只会在我的驱动程序的帮助下进行响应。

    因为我的驱动程序不支持配置为从模式没有意义。


    您能帮助我配置任何其他提供组帧 SPI 模式的驱动程序、还是配置除基本模式之外的任何其他 SPI 模式。



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

    根据我所了解的组帧 SPI 模式、它看起来不像 AM335x 的 SPI (硬件)将能够实现所需的帧同步信号。

    了解 AM335x McASP 和 PRU-ICSS。 可以使用其中一个 IP 来实现帧 SPI 模式。 我在一篇有关该 SPI 模式的文章中提到了 I2S/TDM。 McASP 支持这些类型的协议。 此外、PRU-ICSS 已用于实现标准和定制软件外设(即 SPI、UART 等)。 有关 PRU-ICSS 的更多详细信息、请访问: processors.wiki.ti.com/.../PRU-ICSS。

    此致、
    Melissa