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:处理器论坛

Guru**** 2463330 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1478644/am5728-processors-forum

器件型号:AM5728

工具与软件:

我们将 SPI4连接到 FPGA、我需要下载它的 RBF 文件。

我仔细研究了这篇文章:
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/496527/how-to-enable-mcspi-clk-in-kernel

并且完全复制了这里编写的内容、除了引脚定义中的 mode_manual 宏、这在整个 Linux 源代码树中是无法找到的。

但结果有点出乎意料

1. SPI4_clk 引脚按需要运行。 我在示波器上看到了时钟、它们对应于定义的速度。 如果我更改速度、时钟将跟随更改。|
但是、数据线路 SPI4_d0在任何时候都保持高电平、与传输的内容无关。
我通过更改 MUX 寄存器值检查它是否正确连接-正常工作。
我也通过将此引脚重新定义为 GPIO 进行了检查-可以正常工作。

2.尝试读取 MCSPI4寄存器失败-内核崩溃报告。 在这方面、我有以下问题:
参考手册提供了以下 MCSPI_CHxCONF 寄存器地址:
0x4809 812C +(0x14 * x)  McSPI1
0x4809 A12C +(0x14 * x)  McSPI2
0x480B 812C +(0x14 * x)  McSPI3
0x480B A12C +(0x14 * x)  McSPI4
是这样吗? 如果每个 McSPI 都有自己不同的(!) 基地址为什么我们需要0x14*x 额外的偏移量? 为什么我会在阅读时崩溃(!) MCSPI 寄存器?

非常感谢您提供任何提示。

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

    尊敬的 Leon:

    对于问题1、我有一些想法。 最近的驱动程序向 devicetre 添加了"ti、pdir-d0-out-D1-in;"属性、如果没有此属性、d1将配置为 out、d0将如所示。 这可以解释为什么 d0不传输。 如果在该属性中添加不起作用、是否可以共享"dmesg"中的完整日志?

    对于问题2、我也有一些想法。 Linux McSPI 驱动程序是智能的、并且具有一些 PM (电源管理)功能。 当不使用 McSPI 硬件时、它很可能处于挂起模式、因此硬件读取 McSPI 寄存器会导致崩溃。 您可以使用"omapconf dump prcm"转储所有器件的电源状态、并参考 TRM 以查看模块是否已开启、或在事务正在进行时尝试读取寄存器。

    此致、

    Takuma