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.

[参考译文] TDA2PXEVM:使用 QSPI 作为标准 SPI 与 CAN 总线收发器进行通信

Guru**** 2538960 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/995836/tda2pxevm-using-qspi-as-standart-spi-to-communicate-with-can-bus-transceiver

器件型号:TDA2PXEVM

你好。

我想使用 QSPI 作为标准的4线 SPI、以便在全双工模式下使用 Linux spidev 驱动程序与 TLE9255W CAN 总线收发器进行通信。 我已按照以下方式修改了 dra76-EVM-infodas.dts:

&qspi {
    status = "okay";
    reg = <0x4b300000 0x100>,
          <0x5c000000 0x4000000>,
          <0x4a002558 0x4>;
    spi-max-frequency = <100000>;
    reg-names = "qspi_base", "qspi_mmap", "qspi_ctrlmod";
    /delete-node/ m25p80@0;
    spidev@0x00 {
        compatible = "rohm,dh2228fv";
        reg = <0>;
        status = "okay";
        spi-max-frequency = <100000>;
        spi-cpha;
    };
};

因此、当我加载了 spidev 模块时、我会使/dev/spidev32766.0器件能够正常工作。

当我运行 spidev_test 应用程序(从 Linux 内核源编译)时、我遇到 EINVAL 错误、因为该应用程序尝试在全双工模式下使用/dev/spidev32766.0、但其探测器函数中的 ti-QSPI 驱动程序会按如下方式进行编码:

master->flags = SPI_MASTER_HALF_DUPLEX;

即使我已经注释掉了这一行--代码中还有另外一个位置:

static int qspi_transfer_msg(struct ti_qspi *qspi, struct spi_transfer *t,
			     int count)
{
	int ret;

	if (t->tx_buf) {
		ret = qspi_write_msg(qspi, t, count);
		if (ret) {
			dev_dbg(qspi->dev, "Error while writing\n");
			return ret;
		}
	}

	if (t->rx_buf) {
		ret = qspi_read_msg(qspi, t, count);
		if (ret) {
			dev_dbg(qspi->dev, "Error while reading\n");
			return ret;
		}
	}

	return 0;
}

在 SPI 总线上、我有两个事务:

因为 CAN 总线收发器只能在全双工模式下工作、所以我无法得到答案。

因此、我有两个关于这一切的问题:

1) 1) QSPI 控制器中是否存在使用全双工的硬件限制?

2) 2)如果没有硬件限制--如何为 QSPI 启用全双工模式?

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

    你好、Yuri、

    我正在咨询我们的 QSPI 专家。 我将再次讨论这个问题。

    此致、
    基尔西

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

    你好、Yuri、

    以下是我们的 QSPI 专家的反馈。  QSPI 适用于4个数据线路客户端(4条线路、不包括 clk 和 CS)、您的 IP 仅为2线设备。 因此、QSPI 不是正确的方法。

    建议使用 McSPI。

    此致、
    基尔西

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

    但 TRM 表示我可以使用 D0和 D1线路在简单 SPI 模式下工作。



    问题是 QSPI 的全双工模式:QSPI 是否支持全双工。

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

    你好、Yuri、

    我无法看到您在回复中添加的图片。

    您 可以仅使用 D0和 D1使用简单 SPI 模式、但这是为了支持传统1位闪存。
    支持双工操作模式。 TRM 也不会声明双工模式。

    此致、
    基尔西