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.

[参考译文] AM625:在使用 SPI0的 SPI 通信中从器件无响应(SDK 09.01.08)

Guru**** 2487425 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1439291/am625-no-response-from-slave-device-in-spi-communication-using-spi0-sdk-09-01-08

器件型号:AM625
主题中讨论的其他器件:SysConfig

工具与软件:

您好!  

我想使用 spi0执行与两个器件的 SPI 通信。

按照 wiki 中的说明、我在内核中启用了 SPI 器件。
https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_01_00_08/exports/docs/linux/Foundational_Components /内核/SPI/SPI.html Kernel_Drivers?highlight=spi

此外,根据一篇文章中的指导,我修改了main_spi0k3-am62-main.dtsi
[常见问题解答] SK-AM62:如何在 AM625中为 MCU_SPI0 CS1配置 spidev -处理器论坛-处理器- TI E2E 支持论坛

然后、我将引脚设置和其他配置添加到k3-am62x-sk.dts(将 SPI0_D0配置为 MOSI、将 SPI0_D1配置为 MISO)。

&main_pmx0 {
    expspi0_pins_default: expspi0-default-pins {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x01bc, PIN_OUTPUT, 0) /* (A14) SPI0_CLK */
			AM62X_IOPAD(0x01b4, PIN_OUTPUT, 0) /* (A13) SPI0_CS0 */
			AM62X_IOPAD(0x01b8, PIN_OUTPUT, 0) /* (C13) SPI0_CS1 */
			AM62X_IOPAD(0x01c0, PIN_OUTPUT, 0) /* (B13) SPI0_D0 */
			AM62X_IOPAD(0x01c4, PIN_INPUT, 0) /* (B14) SPI0_D1 */
		>;
	};
};

&main_spi0 {
	status = "okay";
	pinctrl-0 = <&expspi0_pins_default>;
	pinctrl-names = "default";
	spidev@0 {
		/*
		 * Using spidev compatible is warned loudly,
		 * thus use another equivalent compatible id
		 * from spidev.
		 */
		compatible = "rohm,dh2228fv";
		spi-max-frequency = <24000000>;
		reg = <0>;
	};
	spidev@1 {
		/*
		 * Using spidev compatible is warned loudly,
		 * thus use another equivalent compatible id
		 * from spidev.
		 */
		compatible = "rohm,dh2228fv";
		spi-max-frequency = <24000000>;
		reg = <1>;
	};
};

更新 SD 卡上的内核、内核模块和设备树文件后、我根据创建了一个 SPI 通信程序spidev_test.ctools/spi

但是、当我执行程序时、从器件没有响应。
从信号分析来看、命令似乎是从 SPI0_D1发送的。

黄色:SPI0_CS0
绿色:SPI0_CS1
蓝色:SPI0_CLK
红色:SPI0_D1 (MISO)

如何解决此问题?

SDK 版本:09.01.08

此致、
Yuya Murata

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

    尊敬的 Murata-San:

    似乎存在几个问题。 让我们首先看看您的 MISO 信号(红色)...

    您可以看到、信号有时假定某个"中间"电压电平(例如 Vcc/2)、这通常是数字 I/O 配置冲突的标志-具体而言、两个 I/O 驱动器驱动同一信号、其中一个驱动器应该配置为输入。 因此、您需要做的是以下两件事之一:

    1. 反转外部设备的 MOSI/MISO 连接、或
    2. 添加  ti、windir-d0-out-D1-in  在软件中反转默认顺序的设备树属性、请参阅 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1437392/sk-am62a-lp-sdk-10-00-00-spi-d0-and-d1-pins-assigned-to-mosi-and-miso/5511624#5511624

    然后、如果您要访问两个 SPI 器件、则需要将以下内容添加到器件树中:  ti、spi-num-cs =<2>; 否则、可能无法访问第二个器件

    最后、应按照所示配置所有 SPI 引脚 PIN_INPUT 器件树中。 原因是 pinctrl-single,pins 器件树 设置会影响 padcontrol 寄存器、其中包含用于配置每个引脚行为的很长的不同位列表。 要将其设置为 PIN_INPUT  实际上只是使用 DTS 宏、该宏打开该引脚上的发送器和接收器功能;因此、无论您反转 D0与 D1的行为、这都是安全的选择、让这些 SPI 引脚始终工作。 实际的输入/输出行为将由选择的外设模块控制、在本例中为 SPI 模块。

    请注意、有趣的是、  为了使器件正常工作、一些输出引脚实际上需要从器件树/焊盘控制寄存器角度配置为"输入"、请参阅 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1263441/sk-am62-no-spi-signals-on-expansion-headers/4784405#4784405

    最好遵循已在 DTS 中使用或使用 SysConfig 工具生成的引脚方向定义。

    下面的帖子还包含一个通过 CS0和 CS1连接到两个 SPI 从器件的工作示例的补丁。 一个额外的好处是、这两个器件都能够使用 DMA、从而实现更高的吞吐量(传输的更小字节间隙>= 160字节)。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1425674/sk-am62-dma-transfer-is-not-working-with-spi0_cs1/5481122#5481122

    此致、Andreas

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

    嗨、Andreas、
    感谢您的答复。

    通过ti,pindir-d0-out-d1-in=<1>在器件树文件中进行设置、我可以配置spi0_D0为 MOSI 和spi0_D1 MISO。
    我已经进行了设置ti,spi-num-cs = <2>;、可以成功访问第二个器件。

    我认为发生该问题是因为我不知道默认的引脚设置。
    您能告诉我哪些文档包含有关默认引脚设置的信息吗?

    此致、
    Yuya Murata

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

    尊敬的 Murata-San:

    ti,pindir-d0-out-d1-in=<1>在设备树文件中进行设置后、我可以配置spi0_D0为 MOSI 和spi0_D1 MISO。
    我已设置ti,spi-num-cs = <2>;并可以成功访问第二个器件。

    很高兴听到您现在已开始工作、感谢您的反馈。

    我认为发生此问题是因为我不知道默认引脚设置。
    您能否告诉我哪个文档包含有关默认引脚设置的信息?[/QUOT]

    TRM 中有一条有关使用 SPI 时应如何配置 CLK 信号的注释、您可以在查看我之前提到的 E2E 文章 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1263441/sk-am62-no-spi-signals-on-expansion-headers/4784405#4784405时找到此信息

    对于默认引脚设置、器件数据表中详细介绍了所有这些设置。

    此致、Andreas