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.

[参考译文] AM5728:使 McSPI4正常工作

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/992445/am5728-getting-mcspi4-to-work

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

我正在尝试使 McSPI4在我们的板上正常运行。  mux_data.h 中的引脚复用设置为:

{GPMC_A8、(M8 | PIN_INPUT)}、       // N7 GPMC_A8.SPI4_SCLK *

{GPMC_A9、(M8 | PIN_INPUT)}、       // R4 GPMC_A9.SPI4_D1 *

{GPMC_A10、(M8 | PIN_OUTPUT)}、 // N9 GPMC_A10.SPI4_d0 *

{GPMC_A11、(M8 | PIN_OUTPUT)}、 // P9 GPMC_A11.SPI4_cs0 *

{GPMC_A12、(M8 | PIN_OUTPUT)}、 // P4 GPMC_A12.SPI4_CS1 *

我看到所有4个多通道串行外设接口端口都在 dra7.x 中定义  它们的状态均为"disabled"(已禁用)。  因此、我在电路板的.dtsi 文件中添加了以下条目、并进行了必要的内核重建。

// ADS7844接口
mcspi4{(&M)
状态="正常";
};

重新启动后、我在 SPI 器件的/dev/dev 目录中看不到任何内容。 在我的旧系统上、我看到/dev/spidev0.0 我缺少什么?

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

    实际上、我们的引脚多路复用设置为:

    {GPMC_A8、(M8 | PIN_OUTPUT)}、// N7 GPMC_A8.SPI4_SCLK *
    {GPMC_A9、(M8 | PIN_INPUT)}、// R4 GPMC_A9.SPI4_D1 *
    {GPMC_A10、(M8 | PIN_OUTPUT)}、// N9 GPMC_A10.SPI4_d0 *
    {GPMC_A11、(M8 | PIN_OUTPUT)}、// P9 GPMC_A11.SPI4_cs0 *
    {GPMC_A12、(M8 | PIN_OUTPUT)}、// P4 GPMC_A12.SPI4_CS1 *

    我们是两个从器件的主器件。  我进行了更改并重建了 u-boot、但在/dev/中 仍然没有 spidev 条目

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

    我错误地说我重建了内核。 我所做的是重建器件树.dtb 文件、并将旧文件替换为 uSD 卡。

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

    您好、Stanley、

    请您看看以下内容:  

    https://e2e.ti.com/support/processors/f/processors-forum/947437/faq-ccs-tda4vm-how-to-use-spi-spi_dev-on-tda4-j721e

    此致、
    基尔西

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

    如果我已经创建了.pinmux 文件生成 了 genericFileFormatPadConf.txt 和 genericFileFormatIOdelay.txt、将它们转换为 padconf.txt 和 iodelay.txt 并使用其内容填充了 mux_data.h 文件并重建了 MLO 和 u-boot、那么我不明白为什么我需要在器件树中创建 pinmux 节点。  我可以看到引脚已按照我的定义进行配置。 我没有看到任何相应的器件

    root@mitysom-am57x:~# devmem2 0x4a003460
    /dev/mem 已打开。
    映射到地址 bb6fc8000的内存。
    在地址0x4A003460 (bb6fc8460):0x00010008处读取
    root@mitysom-am57x:~# devmem2 0x4a003464
    /dev/mem 已打开。
    映射到地址 bb6f1a000的内存。
    在地址0x4A003464 (bb6f1a464)上读取:0x00050008
    root@mitysom-am57x:~# devmem2 0x4a003468
    /dev/mem 已打开。
    映射到地址 bb6fe7000的内存。
    在地址0x4A003468 (bb6fe7468)读取:0x00010008
    root@mitysom-am57x:~# devmem2 0x4a00346c
    /dev/mem 已打开。
    映射到地址 bb6f29000的内存。
    在地址0x4A00346C (0xb6f2946c)上读取:0x00010008
    root@mitysom-am57x:~# devmem2 0x4a003470
    /dev/mem 已打开。
    映射到地址 bb6f95000的内存。
    在地址0x4A003470 (bb6f95470):0x00010008处读取

    为什么在示例中、示例中的所有引脚都被定义为输入?  这似乎不正确。

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

    您好、Stanley、

    我刚才要求您将其作为参考。 我指向的线程用于 TDA4。

    您是否添加了 spidev 节点、如示例中所示:

    +&main_spi6{
    + pinctrl-names ="default";
    + pinctrl-0 =<&spi6_pins_default>;
    + status="oke";
    +
    spidev@0{
    +
    + SPI-max-frequency =<24000000>;
    + reg =<0>;
    + 兼容="linux、spidev";
    +};
    +}; 

    如果您已经在较旧的系统中验证了引脚多路复用器、则应该可以。

    [引用 userid="482171" URL"~/support/processors/f/processors-forum/992445/am5728-getting-mcspi4-to-work/3672165 #3672165"]示例中的所有引脚为何都被引用为输入?

    这是在 Thread 上展示的工作示例。 默认情况下、输入也将启用输出。

    我的观点更多地涉及上述 DT 节点、您需要在其中添加 spidev。

    -凯尔西

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

    感谢对引脚的澄清。 我不知道。 好的、我按照您给出的示例操作、并基于包含在 dra74x.dtsi 中的 dra7.dtsi 的内容、而 dra74x-p.dtsi 包含在我的板级文件 am57xx-mitysom.dtsi 中。

    来自 dra7.dtsi

    mcspi4:SPI@480ba000{
      兼容="ti、omAP4-mcspi";
      reg =<0x480ba000 0x200>;
      中断= ;
      #address-cells =<1>;
      #size-cells =<0>;
      ti、hwmids ="mcspi4";
      TI、SPI-num-cs =<1>;  
      DMA =<&sdma_Xbar 70>、<&sdma_Xbar 71>;
      dma-names ="tx0"、"rx0";
     STATUS ="禁用";
    };

    我已将其添加到  我的 am57xx-mitysom.dtsi 文件中:

    mcspi4{(&M)
      状态="正常";
      pinctrl-names ="default";
      //由于我使用了 MLO/mux_data.h,因此不确定下面的行应用程序
      //pinctrl-0 =<&spi6_pins_default>;
      spidev@0{
        SPI-max-frequency =<24000000>;
        reg =<0>;
        兼容="ti、omAP4-mcspi";
    };
    };

    我看到主设备、但没有看到 spidev1.0条目。 spidev@0指定 芯片选择??

    root@mitysom-am57x:~# ls -l /sys/class/spi
    lrwxrwxrwx 1 root root 用户0 8月5日17:17 spi0 ->../../devices/platform/44000000.ocp/4b300000.spi/spi_master/spi0
    lrwxrwxrwx 1 root root 用户0 Aug5 17:17 SPI1 ->../../devices/platform/44000000.ocp/480ba000.spi/spi_master/spi1

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

    斯坦利

    在 您的 defconfig 中明确启用 CONFIG_SPI_SPIDEV=y。 如果您使用的是 SDK、 然后、它位于 arch/arm/configs/tisdk_am57xx_evm_defconfig 下。

    您应该会看到一个带有 spidev 的条目。


    此致、
    基尔西

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

    感谢我能够在电路板的配置文件中对其进行设置。 我现在看到 spidev1.0。 我明天会做一些测试。

    我有一些问题。

    spidev @0中的0 是否意味着芯片选择0?

    2.我将 spidev 中的兼容性更改为 "linux,spidev",还是应该为  "rohm、dh2228fv"?  我要连接的器件是 TI ADS7844。

    mcspi4{(&M)
      状态="正常";
      pinctrl-names ="default";
      //由于我使用了 MLO/mux_data.h,因此不确定下面的行应用程序
      //pinctrl-0 =<&spi6_pins_default>;
      spidev@0{
        SPI-max-frequency =<24000000>;
        reg =<0>;
        compatible ="linux、spidev";
    };

    root@mitysom-am57x:~# ls -l /sys/class/spi
    /sys/class/spi_master:
    lrwxrwxrwx 1 root root 用户0 8月5日17:17 spi0 ->../../devices/platform/44000000.ocp/4b300000.spi/spi_master/spi0
    lrwxrwxrwx 1 root root 用户0 Aug5 17:17 SPI1 ->../../devices/platform/44000000.ocp/480ba000.spi/spi_master/spi1

    /sys/class/spidev:
    lrwxrwxrwx 1 root root 用户0 8月5日17:17 spidev1.0 ->../../devices/platform/44000000.ocp/480ba000.spi/spi_master/spi1/spi1.0/spidev/spidev1.0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="482171" URL"~/support/processors/f/processors-forum/992445/am5728-getting-mcspi4-to-work/3676532 #3676532]1.  spidev@0中的0 是否意味着芯片选择0?

    是的、它的 CS 和 reg 值应设置为客户端设备所连接的 CS 的值。

    [引用 userid="482171" URL"~/support/processors/f/processors-forum/992445/am5728-getting-mcspi4-to-work/3676532 #3676532"]2. 我将 spidev 中的兼容性更改为 "linux、spidev"、还是应为  "rohm、dh2228fv"?  我要连接的器件是 TI ADS7844。[/quot]

    Spidev 仅用于调试目的和非生产系统。 如果要获得 ADS7844的功能、应添加新的驱动 程序、如果存在、则添加与 ADS7844相对应的器件树节点。

    如果没有其他问题、请解决此主题。

    -凯尔西

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

    非常感谢 您的帮助。  我相信会有更多问题、但我相信我们可以继续前进。