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.

[参考译文] AM3358:与 SPI 从器件通信时、OSD3358 SPI1 CS0 不会置为低电平

Guru**** 2429850 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1543813/am3358-osd3358-spi1-cs0-won-t-assert-low-when-communicating-with-spi-slave

部件号:AM3358


工具/软件:

有人见过  当总线通过 McASP0 引脚布线时、SPI1 CS0 在 OSD3358 上保持高电平(模式 3) ? 我的 SCLK 只有在我将其焊盘设置为后才出现 PIN_INPUT_PULLUP | RXACTIVE—一种固定时钟的怪癖—但 CS0 在传输到 SPI 从模块期间从未变为低电平、因此所有读取都返回 0xFF。 我使用常用的 DT 引脚(SCLK/MISO 作为输入‑上拉电阻、MOSI/CS0 作为输出‑上拉电阻)、并且尚未尝试将 CS0 作为输入等异常方法。 在‑‑翻转属性之前、是否有已知的 PAD Δ Σ 多路复用器或器件树调整以使 McSPI 主器件在此设置中将 CS 置为低电平、或者有一个最小的示例证明其有效?

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

    您好、Satya、我将把这个主题发送给我们的专家。 请给他一些时间来找你

    Paula

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

    是的,谢谢 Paula!

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

    您好、

    AM335 设置如下所示:

    我们可以修改相同的代码并将其与 DTS 文件中的以下配置相匹配:

    尽管第二个屏幕截图适用于 AM62x、但也可以按照 AM335 的输入/输出配置进行操作。

    注意: AM62x 设置如下所示:d0 为 MOSI、D1 为 MISO、CLK 和 CS 不言自明、请尝试也为 AM335 设置提供相同的输入/输出方向、这应该确保至少从配置角度来看所有线路都正常工作。

    如果这对我有帮助、请告诉我。

    谢谢、

    Vaibhav

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

    尊敬的 Vaibhav:

    感谢您的跟进! 在回复之前、我已在中为通过 McASP0 引脚路由的 SPI1 配置了以下 pinmux MODE 3

    SPI1_PINS_DEFAULT:SPI1 默认引脚{
    pinctrl-single、pins =<
    AM33XX_IOPAD (0x990、PIN_INPUT_PULLUP | MUX_MODE3)/* McASP0_aclkx -> SPI1_SCLK */
    AM33XX_IOPAD (0x994、PIN_INPUT_PULLUP | MUX_MODE3)/* McASP0_FSX -> SPI1_d0 (MISO)*/
    AM33XX_IOPAD (0x998、PIN_OUTPUT_PULLUP | MUX_MODE3)/* MCASP0_axr0 -> SPI1_D1 (MOSI)*/
    AM33XX_IOPAD (0x99C、PIN_OUTPUT_PULLUP | MUX_MODE3)/* MCASP0_ahclkr -> SPI1_cs0 */
    >;
    };

    这些设置基于 TRM 和 AM335x 引脚多路复用参考、并与您从 AM6/AM62x PinMux 工具中建议的内容完全匹配、即每个引脚的方向性。 我还验证了 SCLK 仅在我应用PIN_INPUT_PULLUP | RXACTIVE到其焊盘后才开始切换、这似乎是开始时钟活动的已知问题。

    考虑到这一点,我希望 CS0 也能与正常运行PIN_OUTPUT_PULLUP,但即使在 SPI 传输期间,它也保持高电平(读取始终返回 0xFF )。 我没有尝试使用spi-cs-highcs-gpios或将 CS0 配置为输入、因为我没有任何 GPIO 引脚来控制 CS0、我的从设备在 CS 上需要 ACTIVE_LOW。 我想首先确认 CS0 是否需要额外的焊盘或 DT 调整、就像 SCLK 一样。 下面是我在 dmesg 内核日志中看到的内容。 我尝试打印 MISO、MOSI 数据、如下所示。 我还尝试在示波器上探测 CS 线路、我看到该线路一直处于高电平、并且在 I 加载从器件驱动器模块时没有切换至低电平。

    [ 3102.454720] nrc80211 spi1.0:c_spi_read_regs 失败
    [3102.454729] nrc80211 spi1.0:目标未就绪...
    [3102.757214] NRC TX:50 80 00 10 4b f1 4a C5
    [3102.757243] NRC Rx:ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff FF 和 FF
    [ 3102.757259] nrc80211 spi1.0:[_c_SPI_READ_REGS]尝试读取寄存器、但 SPI ACK 无效

    您是否从引脚多路复用的角度考虑此配置已完成? 或者是否存在可能需要的细微焊盘行为或内核查询cs-gpios、或实际使 CS0 置为低电平有效的输入模式设置?

    再次感谢您的帮助—期待您的帮助!

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

    您好、

    感谢您的准确答复。

    我假设您将使用以下引脚? 这是 AM335 数据表中列出的许多组件中吗?

    此致、

    Vaibhav

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

    请浏览以下主题、告诉我它是否有帮助: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/792632/linux-beaglebk-beaglebone-black-enable-spi1/2934301?tisearch=e2e-sitesearch&keymatch=AM335%25252520mcspi#

    此外、我假设您已将频率设置为 24MHz。

    其他主题:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/402169/ice-v2-am3359-spi1-connection-problems?tisearch=e2e-sitesearch&keymatch=AM335%2525252525252520mcspi#

     AM335x 入门套件 SPI 无法正常工作 

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

    是的、这就是我使用的引脚。

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

    在.dts 文件中、我设置了 spi-max-frequency =<20000000>;(20MHz)

    这就是我的内核 dmesg 日志显示的内容

    [ 3034.651009] nrc80211 spi1.0:设置:速度 16000000、采样前沿、时钟正常
    [3034.651068] nrc80211 spi1.0:设置模式 0、8 位/秒、最大 20000000 Hz --> 0


    感谢您与我分享这些主题。 我已经对他们进行了详细介绍、看到他们讨论了 SCLK 以及如何将其设置为输入以启用 RXACTIVE。 我已经完成了这项操作、可以看到 16MHz 处的 CLK 脉冲、正如我的内核日志所示。 我附上了一张图片。 黄色通道是 SCLK、粉色通道是 CS0。 即使有时钟脉冲、CS0 也不会像这里所看到的那样切换。 此外、我还看到了 spi_obap_mcspi.c 驱动程序代码、并观察到该代码是一个宏 (#define OMAP2_MCSPI_CHCONF0 0x2C)。 这是否意味着 SPIEN 在活动状态期间保持高电平、因为位 6 (ePol) 相对于 0x2C 值为 0?






    关于如何调试/分析该问题的任何建议都将大有帮助。



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

    您好、

    感谢您最后波形的详细输入。

    让我回顾一下、在几个工作日内回复您。

    谢谢、

    Vaibhav

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

    您好、

    我涉及到一些高优先级问题、因此请预计此主题的响应会延迟。

    感谢您的耐心。

    此致、

    Vaibhav

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

    您好、

    活动状态、因为位 6 (ePol) 是 0x2C 值中的 0?

    为了确认这一点、我们可以进行一组实验。

    请检查代码流或控件是否转到 API:  

    static inline void mcspi_write_chconf0(const struct spi_device *spi, u32 val)

    如果是、那么要写入的 val 是什么?

    谢谢、

    Vaibhav