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/AM5728:McSPI 接口失败

Guru**** 2540720 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/602938/linux-am5728-mcspi-interface-fails

器件型号:AM5728
主题中讨论的其他器件:AM3352

工具/软件:Linux

您好!

我们尝试将 MCP2515连接到 MCSPI4、其中 D0为输出、D1为输入。 我可以看到有 CLK、CS、MOSI 和 MISO、但 mcpsi 控制器驱动程序始终从 MISO 读取值0x0。

只需添加一点、我已正确配置了引脚多路复用器。

谢谢、

--

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

    您好!

    以下是我的 DT:

    SPI 引脚多路复用:

                   pinmux_SPI4{
                      pinctrl-single、pins =<
                               0x60 0x40008 /* SPI4_SCLK (GPMC_A8)*/
                               0x64 0x40008 /* SPI4_D1 (GPMC_A9) MISO *
                               0x68 0x10008 //* spi3_d0 (GPMC_A10) MOSI *
                               0x6c 0x20008 // SPI4_cs0 (GPMC_A11)*/
                                 >;
                      linux、phandle =<0x181>;
                      相位=<0x181>;
                   };

    SPI 节点:


     SPI@480ba000{
             兼容="ti、omAP4-mcspi";
             reg =<0x480ba000 0x200>;
             中断=<0x0 0x2b 0x4>;
             #address-cells =<0x1>;
             大小单元格=<0x0>;
             ti、hwmids ="mcspi4";
             TI、SPI-num-cs =<0x1>;
             DMA =<0xc9 0x46 0xc9 0x47>;
             TI、pidd-d0-out-d1-in;
             dma-names ="tx0"、"rx0";
             状态="正常";
             pinctrl-names ="default";
             pinctrl-0 =<0x181>;

             CAN3@0{
                  兼容="微芯片、MCP2515";
                  SPI-max-frequency =<10000000>;
                  SPI-Cs-HIGH;
                  reg =<0>;
                  中断父级=<0xc5>;
                  中断=<18 0x2>;
                 时钟=<0x400>;
           };
    };

    谢谢、
    -Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在 SCK 引脚多路复用器上启用了输入? 这是正常运行所必需的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    是的、我启用了 SCK 的输入、

    以下是我的引脚多路复用器至 SPI4引脚:

    pinmux_SPI4{
    pinctrl-single、pins =<
    0x60 0x40008 /* SPI4_SCLK (GPMC_A8)*/
    0x64 0x40008 /* SPI4_D1 (GPMC_A9) MISO *
    0x68 0x10008 //* spi3_d0 (GPMC_A10) MOSI *
    0x6c 0x20008 // SPI4_cs0 (GPMC_A11)*/
    >;
    linux、phandle =<0x181>;
    相位=<0x181>;
    };

    如上所述、" 0x60 0x40008 /* SPI4_SCLK (GPMC_A8)*/"位(18)设置为1、这是输入。

    谢谢、
    Mike
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知软件团队进行检查。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是哪个 SDK?

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

    我使用的是最新的 SDK 版本03.03.00。

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

    我使用的是具有4.4版本的 Yocto TI 层。 我还看了 git 上的4.9分支、我发现 OMAP2-SPI 驱动程序和 mc2515驱动程序没有什么重大区别。

    我正在尝试使其在模式0下工作,我也尝试了模式1,但运气不好。 我甚至关注[1]、似乎控制器驱动程序在 am3352上工作、但在 Am572x 上工作。

    [1] e2e.ti.com/.../2113031

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

    使用 devmem2检查 CTRL_CORE_PAD_GPMC_A9、CTRL_CORE_PAD_GPMC_A10和 CTRL_CORE_PAD_GPMC_A11寄存器的值。

    如果您使用的是最新的 SDK、则应在 u-boot/board/ti/am57xx/mux_data.h 中配置 SPI4 pinmux 设置

    更改了最新的 ti Linux 版本、现在 pinmux 设置在 u-boot 中完成、而不是在 DTS 中完成。

    如果您仍然希望使用 DTS 进行 Pinmux 设置、请尝试以下设置:
    SPI4_Pins:SPI4_Pins{
    pinctrl-single、pins =<
    DRA7XX_CORE_IOPAD (0x3460、(PIN_INPUT | MUX_MODE8))
    DRA7XX_CORE_IOPAD (0x3464、(PIN_INPUT | MUX_MODE8))
    DRA7XX_CORE_IOPAD (0x3468、(PIN_INPUT | MUX_MODE8))
    DRA7XX_CORE_IOPAD (0x346C、(PIN_INPUT | MUX_MODE8))
    >;
    };

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

    感谢您的回复。

    是的、我可以确认 dev2mem 报告了正确的 pinmux 值。

    是 mot拖 a 模式0,我在这个线程[1]中遇到了不同的 TI 模式0。 我认为它应该正常工作、因为它只是直接工作
    参考线程[2]

    [1] e2e.ti.com/.../207305

    [2] e2e.ti.com/.../2113031

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

    TI 模式0、表示 POL = 0 (MCSPI_CHxCONF[1] POL = 0x0)& PHA = 0 (MCSPI_CHxCONF[0] PHA = 0x0)或 SPI 与 SPI_SCLK 一起工作时、高电平有效、采样发生在上升沿。

    您可以在表24-291中看到所有 SPI 模式(取决于 SPI_clk 极性和相位设置)。 相位和极性组合。 尝试不同的模式以查看它是否会影响您的系统行为。

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

    我已经限定了处理器上的引脚范围、我可以看到有有效数据输出(我使用了逻辑分析仪)、但我仍然看到 mcspi 驱动程序读取0x0。 我是否需要重新读取 Rx 的寄存器,因为它只有一个字节?

    请在这里帮助我。

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

    但我可以看到 mcspi 驱动程序仍在读取0x0。

    谢谢、

    Mike

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

    很遗憾、我无法重现您的问题。

    [引用]我是否需要重新读取 Rx 的寄存器、因为它只有一个字节?
    是、请尝试此操作、看看行为是否会发生变化。

    您能否共享 SPI 寄存器值? 接口的配置可能有问题。

    此致、
    Yordan