主题中讨论的其他器件:AM69、 TDA4VL
工具与软件:
你好,我是韩国京熙大学的学生。
我将使用 SK AM69板将 SPI 信号感应功能发送到 raspberrypi (slave)。
我已下载 TI_SDK 并想在 u-boot 中添加 SPI 生成源代码。
首先、我无法从器件树中找到应使用的 SPI。 DTS 中的 SPI 源太多、我认为如果我要控制 MCU_SPI、必须使用
请回答如何在此电路板上创建源以控制 SPI。
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.
工具与软件:
你好,我是韩国京熙大学的学生。
我将使用 SK AM69板将 SPI 信号感应功能发送到 raspberrypi (slave)。
我已下载 TI_SDK 并想在 u-boot 中添加 SPI 生成源代码。
首先、我无法从器件树中找到应使用的 SPI。 DTS 中的 SPI 源太多、我认为如果我要控制 MCU_SPI、必须使用
您好!
就像您注意到的那样、mcspi 有多个实例。 您为什么要从 U-Boot 进行控制…有什么特殊的原因?
我们有来自 Linux 的很好的示例。
此致、
基尔西
感谢您的帮助、Keerthy。
我使用 SK-AM69控制另一个板、该板没有 CPU、因此我们应使用外部 SPI 信号对其进行控制。
在本例中、我认为我们可以在 Linux 侧发送 SPI 信号、这会更容易、但有一个原因、我也需要在 u-boot 中发送 SPI 信号。
在我们的电路板上是 PCIe、因此我们应在 u-boot 引导加载程序时使用 SPI 信号初始化电路板的 PCIe、以便 PCIe 能够在 Linux 端与 SK-AM69电路板通信。
是否有任何使用 u-boot SPI 的示例、或者您能给我一些帮助吗?
尊敬的 Chanhee:
[报价用户 id="637316" url="~/support/processors-group/processors/f/processors-forum/1458423/sk-am69-how-to-make-expansion-header-s-mcu-spi-pin-to-generate-spi-signal/5599416 #5599416"]首先、看起来 MCU_SPI1是通过 OMAP3_SPI 激活的、对吧? \
[报价]根据器件树中的"兼容"字段、对于 Linux 驱动程序、应为 drivers/spi/spi-omap2-mcspi.c。
[报价 userid="637316" url="~/support/processors-group/processors/f/processors-forum/1458423/sk-am69-how-to-make-expansion-header-s-mcu-spi-pin-to-generate-spi-signal/5599416 #5599416"]其次、与下面的信号一样、当我使用 SPI 作为默认模式时、在 SPI 信号传输中、CLK 每8位就停止一段时间。 是否有任何配置可实现96位连续 SCK 传输?如果正在使用 spidev、这很可能是通用 spidev 驱动程序不支持对突发数据进行 DMA 的限制。 如果传输速度是瓶颈、您可以通过增加 SPI 的时钟速度进行实验、直到它达到最大速度。
此致、
Takuma
尊敬的 Chanlee:
很高兴听到可以生成信号。
我不知道 Motorola 的类型、但随 TRM 打包的 j784s4寄存器 xlsx 文件中的 MCSPI 工作表包含寄存器说明、可让您更改 SPICLK 极性和相位: https://www.ti.com/lit/zip/spruj52
此致、
Takuma
你好、Takuma。
感谢您提供一些有用的信息!!
这次我对 SK-AM69板的 SPI 引脚有一些疑问。
如前所述、现在我们可以生成 SPI 信号、下面是 我生成的 SPI 信号的波形。 
您可以看到、在 用白色箭头指向的 MISO (蓝线)中间、会短暂地弹出信号。 此时、我们会从从从器件收到一些值、但正如您看到的、由于 SK AM69板中的其他一些因素、高驱动能力正在降低。 

我认为这是 MCU_BOOTMODE04的原因、该器件具有下拉电阻器和一些电阻器、因此应接收到 SPI 的电压由于 MCU_BOOTMODE04的因素而下降。
你知道我如何解决这个问题吗?
此外、我已经用 MC_SPI0_D0暂时打开 MCU_BOOTMODE4、然后 MISO 信号正常驱动为高电平、但基本命令 DEO 不捕获 MISO 中的任何值。 我认为这种问题可能是 POL 和 PHA 差异导致的、但当我将 MISO 与 VDD 连接以使信号处于高电平时、但 SPI xfer 的 DIN 不会返回任何值。 是否有解决此问题的解决方案?
尊敬的 Chanhee:
如果 MCU_SPI1_D0和 D1由 SoC 驱动、则根据 SoC 输出而不是引导模式拉取电压、引脚应变为高电平或低电平。
我有另一个假设。 您是否可以尝试 在 devicetre 中定义 ti,windir-d0-out-D1-in 标志、类似于此单独的论坛主题:
此致、
Takuma
尊敬的 Chanhee:
此刻我的脑海里什么也没有。 您提到:
我已暂时使用 MC_SPI0_D0打开 MCU_BOOTMODE4、然后 MISO 信号正常驱动高电平[/quot]因此、就电路而言、任何东西都不应阻止 MISO。
并且还设置了引脚方向。
作为一个实验:
我假设使用 spidev_test 应用程序发送数据、Raspberry Pi 发回数据。 在执行环回以将 SK-AM69上的 MOSI 和 MISO 连接在一起时、您是否能够接收发送的数据?
此致、
Takuma
你好、Takuma。
感谢您的帮助、帮助您找到进展。
我已经用 raspberri PI 完成了一些测试、我已经检查了信号是否出现在 Osciloscope 中、但是 spidev_test 的 rx 没有捕获任何值、只有0。
正如您所说的、我使 MISO - MOSI 连接进行环回测试、但仍然很好地发送 TX 发送数据、但任何值都显示在 Rx 中。
此外、我使 MISO 与 VDD 连接以将信号设为高电平、但 Rx 的值仍然为0。 我买了两块板、但都有这种问题。
尊敬的 Chanhee:
除了来自 dmesg 的 SDK 版本和完整日志外、您还能否与 McSPI 的所有更新共享 DTS 文件?
最近在这里解决了一个类似的论坛主题、这是由于引脚复用错误导致的、因此我也想检查您的器件树: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1459822/sk-am68-no-response-from-testing-spi-after-enabling-it-in-the-rpi-header
此致、
Takuma
你好、Takuma、
很抱歉、由于加入学院、很晚才回复
我添加了
&MCU_SPI1{
状态="正常";
pinctrl-names ="默认值";
pinctrl-0 =<&MCU_SPI1_PINS_DEFAULT>;
ti、windir-d0-out-D1-in;
时钟频率=<100000>;
};
MCU_SPI1_PINS_DEFAULT:MCU-SPI1-DEFAULT-PINS{
PINCTL-SINGLE、PINS =<
J784S4_WKUP_IOPAD (0x058、PIN_INPUT、0)/*(H38) MCU_SPI1_CLK */
J784S4_WKUP_IOPAD (0x05c、PIN_INPUT、0)/*(J34) MCU_SPI1_D0 */
J784S4_WKUP_IOPAD (0x060、PIN_INPUT、0)/*(J35) MCU_SPI1_D1 */
J784S4_WKUP_IOPAD (0x064、PIN_INPUT、0)/*(J36) MCU_SPI1_CS0 */
>;
};
这将在 DTS 文件中。
以下是 bootinge2e.ti.com/.../am69_2D00_sk-log.txt 的完整日志
尊敬的 Chanhee:
用于引脚多路复用的共享器件树代码看起来是正确的。 但是、我确实看到了在共享内核日志中突出显示的内容。 具体而言、该行:
SPI 驱动器 spidev 没有 Rohm、bh2228fv 的 spi_device_id
您能否分享对 spidev 和 spidev Linux 内核驱动程序的设备树所做的更改? 我怀疑设备树中的 spidev 节点正在兼容字段中使用不存在的名称、并且内核驱动程序和设备树之间存在差异。
此致、
Takuma
尊敬的 Chanhee:
我知道已经创建了 spidev 设备、到目前为止、您告诉我的一切应该表示可以使用 SPI。 然而,由于它不起作用,我们必须寻找不符合规范的事情。
因此、我仍然认为我们应该检查 spidev devicetre 节点和内核驱动程序。 如果您不介意共享、只需发布 dts 文件和.c 文件(假设对内核驱动程序进行了更改)就足够了。
此致、
Takuma
尊敬的 Chanhee:
无需道歉。 总是会出现故障。
现在、我在您的共享 devicetree 中看到了以下 spidev 兼容字段:
兼容字段用于将 devicetre 中定义的硬件与 Linux 内核驱动程序链接起来。 但是、在 Linux 内核中搜索时、我没有找到默认使用此兼容字段的任何驱动程序。 由于先前共享的日志也表明没有 Rohm、bh2228fv、因此我认为 驱动程序中可能缺少某些内容。
下面随附了 TDA4VL 补丁、它是与 AM69类似的处理器。 我建议参考此说明、尤其是"spidev_spi_ids"字段、以确保 devicetre 与驱动程序兼容字段 匹配、并且 spidev_dt_id 在驱动程序中具有匹配的 spidev_spi_id。
此致、
Takuma
你好、Takuma、
我发现在与 SK-AM69连接时、测试板出现问题。
我已经测试了 SK-AM69以读取 PMOD_SF3的 id 寄存器、它能够很好地接收到信号。 而且, STM34板可以从我们的测试板接收和读取很好的值,所以我认为我应该找出是什么造成了这样一个问题,像我 sais。
顺便说一下、为了解决上述问题、我要寻找 AM69的功能、AM69板停止启动。 实际上、从 UART 第三个接口的引导日志现在无法正常工作、因此我甚至无法调试该问题。
因此、我想知道芯片是否确实出现故障、是否能显示出厂日志的启动模式?
尊敬的 Chanhee:
因此、我想知道芯片是否确实出了问题、是否存在工厂日志启动模式?
遗憾的是、听到电路板停止启动。 至于一些出厂日志、您可以尝试将电路板上的一些开关设置为 UART 引导模式吗、并参考 EVM 用户指南:
然后、一旦进入 UART 引导模式、您是否能够连接到枚举的全部4个 UART 串行端口? 其中之一应该会打印出一些十六进制值。
此致、
Takuma