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.

[参考译文] TDA4AL-Q1:关于 MCU SPI 从模式配置问题

Guru**** 2539740 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1301459/tda4al-q1-regarding-mcu-spi-slave-mode-configuration-issues

器件型号:TDA4AL-Q1

尊敬的专家:

我希望将 MCU SPI0和 MCU SPI1配置为从模式、以便与其他主控制器件进行通信。

我已经在器件树源(DTS)文件中添加了具有"spi-slave"设置的 MCU_spi0和 MCU_SPI1。

从文档中可以看出、使用 SPI 从模式需要启用 DMA。

我曾尝试查阅 PSI-L 表、但不确定要配置哪个设置。

您能否为设置为从器件时的 MCU_SPI0和 MCU_SPI1提供全面的配置方法?

感谢您投入宝贵的时间给予大力支持。 我热切期待您的专家意见。

这是我们的 dtsi 设置:

&mcu_spi1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&mcu_spi1_pins_default>;
	spi-slave;
	#address-cells = <0>;
	dmas = <&mcu_udmap 0xf200>, <&mcu_udmap 0x7200>;
	dma-names = "tx0", "rx0";

	slave {
		spi-max-frequency = <24000000>;
		compatible = "rohm,dh2228fv";
	};
};

此致、

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

    您好!

    您正在使用哪个 SDK 版本?

    此致

    M·塔伦

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

    您好!

    我们使用的 Linux SDK 版本  08.06.01.02。

    请提供帮助。

    谢谢。

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

    您好!

    [quote userid="575146" url="~/support/processors-group/processors/f/processors-forum/1301459/tda4al-q1-regarding-mcu-spi-slave-mode-configuration-issues

    我已经在器件树源(DTS)文件中添加了具有"spi-slave"设置的 MCU_spi0和 MCU_SPI1。

    [/报价]

    • 您使用的是 TI EVM 还是定制电路板?
    • 哪一个是主器件?
    • 另外还有一个应用手册: https://www.ti.com/lit/pdf/sprad26
      其中描述了在 EVM 板上测试 Linux SPI 从器件的过程。

    -基尔西

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

    Keerthy、您好!

    我们使用的是定制电路板。 TDA4将2个 SPI (MCU_spi0和 MCU_SPI1)与另一个 SoC 连接、TDA4是从器件。

    我的问题是、MCU_spi0和 MCU_SPI1是否允许 tda4设置为从器件?

    如何设置它?

    该文件说:

    • 仅在启用 DMA 的情况下支持 SPI 从模式。

    第二个问题是、如何找到 MCU_spi0和 MCU_SPI1的 DMA TX/Rx ID?

    此致

    吕克

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

    尊敬的 Luc:

    因此、MCU_MCSPI1我们需要确保在定制板上引脚作为从器件进行连接。

    mcu_spi0 [/报价]

    可将其作为从器件进行连接。

    第二个问题是、如何找到 MCU_spi0和 MCU_SPI1的 DMA TX/Rx ID?

    [/报价]

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/dma/ti/k3-psil-j721s2.c?h=linux-6.1.y

    因此、您的代码:

    DMACS =<&MCU_udmap 0xf200>、<&MCU_udmap 0x7200>;
    dma-names ="tx0"、"rx0";

    MCU_MCSPI1的这种情况看起来是正确的。

    您还将需要正确配置 pinmux。 请参阅应用手册:

    还有一个应用手册: https://www.ti.com/lit/pdf/sprad26
    [/quote]

    您将需要根据电路板正确设置 pinmux。

    -基尔西

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

    Luc 是我的客户。

    其他建议,检查正确的 pinmux 模式,地址如下。

    示例 MCU_SPI1

    0x4301C0C0

    0x4301C0C4

    0x4301C0C8

    0x4301C0CC (cs0)

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

    您好!

    我已将 dtsi 修改如下:

    &mcu_spi1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_spi1_pins_default>;
    	spi-slave;
    	dmas = <&mcu_udmap 0xf200>, <&mcu_udmap 0x7200>;
    	dma-names = "tx0", "rx0";
    
    	slave@0 {
    		spi-max-frequency = <24000000>;
    		reg = <0>;
    		compatible = "rohm,dh2228fv";
    	};
    };
    
    &wkup_pmx0 {
    	mcu_spi1_pins_default: mcu-spi1-pins-default {
    		pinctrl-single,pins = <
    			J721S2_WKUP_IOPAD(0x0c0, PIN_OUTPUT, 0) /* (D26) MCU_SPI1_CLK */
    			J721S2_WKUP_IOPAD(0x0cc, PIN_OUTPUT, 0) /* (C27) MCU_SPI1_CS0 */
    			J721S2_WKUP_IOPAD(0x0c4, PIN_INPUT, 0) /* (E24) MCU_SPI1_D0 */
    			J721S2_WKUP_IOPAD(0x0c8, PIN_INPUT, 0) /* (C28) MCU_SPI1_D1 */
    		>;
    	};
    };
    

    和在 K3-psil-j721s2.c 中为 MCU_SPI1添加了 PSIL 的 uDMA:

    当我运行 spidev_test 时、它会卡住、无法使用[Ctrl+c]退出。

    您能帮助检查我的修改是否正确吗?

    谢谢。

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

    您好!

    请将所有引脚设置为输入、然后尝试:

    MCU_SPI1_PINS_DEFAULT:MCU-SPI1-PINS-DEFAULT{
    PINCCTRL-SINGLE、PINS =<
    J721S2_WKUP_IOPAD (0x0c0、PIN_OUTPUT、0)/*(D26) MCU_SPI1_CLK */
    J721S2_WKUP_IOPAD (0x0cc、PIN_OUTPUT、0)/*(C27) MCU_SPI1_CS0 */
    J721S2_WKUP_IOPAD (0x0c4、PIN_OUTPUT、0)/*(E24) MCU_SPI1_D0 */
    J721S2_WKUP_IOPAD (0x0c8、PIN_OUTPUT、0)/*(C28) MCU_SPI1_D1 */
    >;

    -基尔西

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

    您好、 Keerthy:

    我将所有引脚修改为输入或输出、但症状未得到改善。

    spidev_test 命令仍然卡住、无法使用[Ctrl+C]退出。

    谢谢。

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

    您好!

    道歉。 我的意思是:

    &wkup_pmx0 {
    	mcu_spi1_pins_default: mcu-spi1-pins-default {
    		pinctrl-single,pins = <
    			J721S2_WKUP_IOPAD(0x0c0, PIN_INPUT, 0) /* (D26) MCU_SPI1_CLK */
    			J721S2_WKUP_IOPAD(0x0cc, PIN_INPUT, 0) /* (C27) MCU_SPI1_CS0 */
    			J721S2_WKUP_IOPAD(0x0c4, PIN_INPUT, 0) /* (E24) MCU_SPI1_D0 */
    			J721S2_WKUP_IOPAD(0x0c8, PIN_INPUT, 0) /* (C28) MCU_SPI1_D1 */
    		>;
    	};
    };

    您可以探测时钟信号吗? 您是否获得了 SPI_CLK?

    您是在 TI EVM 还是定制电路板上尝试过它?

    -基尔西

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

    您好、Keerthy:

    1.我们使用的是定制电路板、而不是 TI EVM。

    2.我测量了 MCU_SPI1_CS0、MCU_SPI1_CLK 和 MCU_SPI1_D0。 请参考下面的图片。

     spidev_test 仍然卡住 、无法使用[Ctrl+C]退出。

    我添加了一些调试消息,并且从日志中,  调用 omap2_mcspi_rx_dma ( )时它卡在 WAIT_FOR_COMPENSATION_interrupts ()中。

    root@j721s2-evm:~# ./spidev_test -D /dev/spidev3.0 -v -s 1000000 -p "12345678" -H
    [  136.028132] spidev spi3.0: speed_hz = 48000000
    [  136.032586] spidev spi3.0: omap2_mcspi_setup_transfer 2
    [  136.037814] spidev spi3.0: setup: speed 48000000, sample trailing edge, clk normal
    [  136.045394] spidev spi3.0: speed_hz = 48000000
    [  136.049832] spidev spi3.0: omap2_mcspi_setup_transfer 2
    [  136.055051] spidev spi3.0: setup: speed 48000000, sample trailing edge, clk normal
    [  136.062612] spidev spi3.0: speed_hz = 1000000
    [  136.066962] spidev spi3.0: omap2_mcspi_setup_transfer 2
    [  136.072179] spidev spi3.0: setup: speed 1000000, sample trailing edge, clk normal
    spi mode: 0x1
    bits per word: 8
    [  136.079838] omap2_mcspi_can_dma
    max speed: 1000000 Hz (1000 kHz)
    [  136.085826] omap2_mcspi_transfer_one
    [  136.092309] spidev spi3.0: speed_hz = 1000000
    [  136.096657] spidev spi3.0: omap2_mcspi_setup_transfer 2
    [  136.101876] spidev spi3.0: setup: speed 1000000, sample trailing edge, clk normal
    [  136.109345] omap2_mcspi_can_dma
    [  136.112473] omap2_mcspi_can_dma
    [  136.115607] omap2_mcspi_txrx_dma
    [  136.118848] omap2_mcspi_rx_dma
    [  136.121914] mcspi_wait_for_completion enter
    [  136.126090] mcspi_wait_for_completion, slave
    

     

    请帮助我们澄清此问题。

    谢谢。

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

    您好!

    MCU_spi0也是如此?

    你也试过那个吗?

    此致、

    基尔西  

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

    您好、Keerthy:

    是的、在将 MCU_spi0配置为从器件时、我得到了相同的结果。

    但是、 当 mcu_spi0配置为主器件时、它可以很好地工作。

    2. MCU_SPI1的 dtsi 配置如下:

    &mcu_spi1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_spi1_pins_default>;
    	spi-slave;
    	dmas = <&mcu_udmap 0xf200>, <&mcu_udmap 0x7200>;
    	dma-names = "tx0", "rx0";
    
    	slave@0 {
    		spi-max-frequency = <24000000>;
    		reg = <0>;
    		compatible = "rohm,dh2228fv";
    	};
    };
    
    &wkup_pmx0 {
    	mcu_spi1_pins_default: mcu-spi1-pins-default {
    		pinctrl-single,pins = <
    			J721S2_WKUP_IOPAD(0x0c0, PIN_INPUT, 0) /* (D26) MCU_SPI1_CLK */
    			J721S2_WKUP_IOPAD(0x0cc, PIN_INPUT, 0) /* (C27) MCU_SPI1_CS0 */
    			J721S2_WKUP_IOPAD(0x0c4, PIN_INPUT, 0) /* (E24) MCU_SPI1_D0 */
    			J721S2_WKUP_IOPAD(0x0c8, PIN_INPUT, 0) /* (C28) MCU_SPI1_D1 */
    		>;
    	};
    };
    

    3.运行 devmen2命令以读取 MCU_SPI1_CLK/MCU_SPI1_CS0/MCU_SPI1_D0/MCU_SPI1_D1的值。

    root@j721s2-evm:~# devmem2 0x4301c0c0
    /dev/mem opened.
    Memory mapped at address 0xffff802c3000.
    Read at address  0x4301C0C0 (0xffff802c30c0): 0x00050000
    
    root@j721s2-evm:~# devmem2 0x4301c0cc
    /dev/mem opened.
    Memory mapped at address 0xffff88220000.
    Read at address  0x4301C0CC (0xffff882200cc): 0x00050000
    
    root@j721s2-evm:~# devmem2 0x4301c0c4
    /dev/mem opened.
    Memory mapped at address 0xffff8b9e5000.
    Read at address  0x4301C0C4 (0xffff8b9e50c4): 0x00050000
    
    root@j721s2-evm:~# devmem2 0x4301c0c8
    /dev/mem opened.
    Memory mapped at address 0xffff9407f000.
    Read at address  0x4301C0C8 (0xffff9407f0c8): 0x00050000
    

    4.对于 MCU_SPI1、器件节点在 Linux 中是 spi3.0。

    root@j721s2-evm:~# ls -al /sys/class/spi*
    /sys/class/spi_master:
    total 0
    drwxr-xr-x  2 root root 0 Oct 20 05:26 .
    drwxr-xr-x 69 root root 0 Oct 20 05:26 ..
    lrwxrwxrwx  1 root root 0 Oct 20 05:26 spi0 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/47000000.syscon/47040000.spi/spi_master/spi0
    lrwxrwxrwx  1 root root 0 Oct 20 05:26 spi1 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/47000000.syscon/47050000.spi/spi_master/spi1
    
    /sys/class/spi_slave:
    total 0
    drwxr-xr-x  2 root root 0 Oct 20 05:26 .
    drwxr-xr-x 69 root root 0 Oct 20 05:26 ..
    lrwxrwxrwx  1 root root 0 Oct 20 05:26 spi2 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40300000.spi/spi_slave/spi2
    lrwxrwxrwx  1 root root 0 Oct 20 05:26 spi3 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40310000.spi/spi_slave/spi3
    
    /sys/class/spidev:
    total 0
    drwxr-xr-x  2 root root 0 Oct 20 05:26 .
    drwxr-xr-x 69 root root 0 Oct 20 05:26 ..
    lrwxrwxrwx  1 root root 0 Oct 20 05:26 spidev2.0 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40300000.spi/spi_slave/spi2/spi2.0/spidev/spidev2.0
    lrwxrwxrwx  1 root root 0 Oct 20 05:26 spidev3.0 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40310000.spi/spi_slave/spi3/spi3.0/spidev/spidev3.0

    	mcu_spi0: spi@40300000 {
    		compatible = "ti,am654-mcspi", "ti,omap4-mcspi";
    		reg = <0x00 0x040300000 0x00 0x400>;
    		interrupts = <GIC_SPI 848 IRQ_TYPE_LEVEL_HIGH>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    		power-domains = <&k3_pds 347 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 347 0>;
    	};
    
    	mcu_spi1: spi@40310000 {
    		compatible = "ti,am654-mcspi", "ti,omap4-mcspi";
    		reg = <0x00 0x040310000 0x00 0x400>;
    		interrupts = <GIC_SPI 849 IRQ_TYPE_LEVEL_HIGH>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    		power-domains = <&k3_pds 348 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 348 0>;
    	};
    

    5.由于与 MCU_SPI1连接的器件仅是主模式、因此我无法将 MCU_SPI1配置为主器件进行测试。

    谢谢。

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

    您好、Keerthy

    已在与客户进行讨论、下面我来总结讨论(MCU_SPI1)。

    检查1: 在 PADCONFIG 中找到不同内容

    引脚定义  

    D26、MCU_SPI1_CLK -> 0x4301C0C0、(WKUP_PADCONFIG_48)

    E24、MCU_SPI1_D0 -> 0x4301C0C4 、(WKUP_PADCONFIG_49)

    C28、MCU_SPI1_D1 -> 0x4301C0C8 、(WKUP_PADCONFIG_50)

    C27、MCU_SPI1_CS0 -> 0x4301C0CC 、(WKUP_PADCONFIG_51)

    我们尝试转储寄存器设置、如下所示。

    root@j721s2-evm:~# devmem2 0x4301c0c4
    /dev/mem opened.
    Memory mapped at address 0xffff8b9e5000.
    Read at address 0x4301C0C4 (0xffff8b9e50c4): 0x00050000
    
    root@j721s2-evm:~# devmem2 0x4301c0c0
    /dev/mem opened.
    Memory mapped at address 0xffff802c3000.
    Read at address 0x4301C0C0 (0xffff802c30c0): 0x00050000
    
    root@j721s2-evm:~# devmem2 0x4301c0c8
    /dev/mem opened.
    Memory mapped at address 0xffff9407f000.
    Read at address 0x4301C0C8 (0xffff9407f0c8): 0x00050000
    
    root@j721s2-evm:~# devmem2 0x4301c0cc
    /dev/mem opened.
    Memory mapped at address 0xffff88220000.
    Read at address 0x4301C0CC (0xffff882200cc): 0x00050000

    D26、E24、C28、C27的引脚模式正确、但    MCU_SPI1_D0或 MCU_SPI1_D1的"PADCONFIG5x_RXACTIVE"(位18)之一 应该错误

    例如、如果我们让 MCU_SPI1_D0作为 MISO、则返回值应为 0x00010000

    你同意吗?  

    检查2:检查硬件和原理图

    我们让  MCU_SPI1或 MCU_SPI0作为主模式工作、可以。  

    因此、我认为这不是硬件问题、 唯一的问题是为什么 MCU_SPI1不能在"更小的模式"下工作

    检查3:我们如何确保 MCU_SPIx 的工作模式

    如标题说明、我们如何确保 MCU_SPI1或 MCU_SPI0在平方模式下工作?

    转储寄存器没问题、需要您的建议。

    检查4: 已检查 MCU_SPI1地址

    我认为器件节点正确、记录消息如下所示。

    modprobe spidev
    root@j721s2-evm:~# ls -al /sys/class/spi*
    /sys/class/spi_master:
    total 0
    drwxr-xr-x 2 root root 0 Oct 20 05:26 .
    drwxr-xr-x 69 root root 0 Oct 20 05:26 ..
    lrwxrwxrwx 1 root root 0 Oct 20 05:26 spi0 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/47000000.syscon/47040000.s
    lrwxrwxrwx 1 root root 0 Oct 20 05:26 spi1 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/47000000.syscon/47050000.s
    /sys/class/spi_slave:
    total 0
    drwxr-xr-x 2 root root 0 Oct 20 05:26 .
    drwxr-xr-x 69 root root 0 Oct 20 05:26 ..
    lrwxrwxrwx 1 root root 0 Oct 20 05:26 spi2 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40300000.spi/spi_slave/spi
    lrwxrwxrwx 1 root root 0 Oct 20 05:26 spi3 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40310000.spi/spi_slave/spi
    
    /sys/class/spidev:
    total 0
    drwxr-xr-x 2 root root 0 Oct 20 05:26 .
    drwxr-xr-x 69 root root 0 Oct 20 05:26 ..
    lrwxrwxrwx 1 root root 0 Oct 20 05:26 spidev2.0 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40300000.spi/spi_slav
    lrwxrwxrwx 1 root root 0 Oct 20 05:26 spidev3.0 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40310000.spi/spi_slav

    映射

    mcu_spi0: spi@40300000 {
    compatible = "ti,am654-mcspi", "ti,omap4-mcspi";
    reg = <0x00 0x040300000 0x00 0x400>;
    interrupts = <GIC_SPI 848 IRQ_TYPE_LEVEL_HIGH>;
    #address-cells = <1>;
    #size-cells = <0>;
    power-domains = <&k3_pds 347 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 347 0>;
    };
    mcu_spi1: spi@40310000 {
    compatible = "ti,am654-mcspi", "ti,omap4-mcspi";
    reg = <0x00 0x040310000 0x00 0x400>;
    interrupts = <GIC_SPI 849 IRQ_TYPE_LEVEL_HIGH>;
    #address-cells = <1>;
    #size-cells = <0>;
    power-domains = <&k3_pds 348 TI_SCI_PD_EXCLUSIVE>;
    clocks = <&k3_clks 348 0>;
    };

    复选5:需要检查 uDMA 值

    DMACS =<&MCU_udmap 0xf200>、<&MCU_udmap 0x7200>;
    dma-names ="tx0"、"rx0";

    为什么 MCU_udmap = 0xf200?

    &mcu_spi1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_spi1_pins_default>;
    	spi-slave;
    	dmas = <&mcu_udmap 0xf200>, <&mcu_udmap 0x7200>;
    	dma-names = "tx0", "rx0";
    
    	slave@0 {
    		spi-max-frequency = <24000000>;
    		reg = <0>;
    		compatible = "rohm,dh2228fv";
    	};
    };

    非常感谢

    吉布斯

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

    D26、E24、C28、C27的引脚模式正确、但    MCU_SPI1_D0或 MCU_SPI1_D1的"PADCONFIG5x_RXACTIVE"(位18)之一 应该错误

    例如、如果我们让 MCU_SPI1_D0作为 MISO、则返回值应为 0x00010000

    [/报价]

    应该可以。 RX_ACTIVE 可以同时适用于这两者。

    有一些默认连接。

    请查看此处的帖子: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1276068/tda4vh-q1-j784s4xg01evm-internal-spi/4839600#4839600

    我们需要为 MCU_MCSPI1配置一些其他位以供外部使用。 请告诉我这是否有帮助。

    -基尔西

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

    感谢 Keerthy、

    我将跟踪客户反馈。

    让我来总结一下、如果您要将 MCU_SPI1或 MCU_SPI0用于更小的模式、您需要:

    1) 1)按照前面的讨论进行 操作、检查"PADS 配置模式"设置、它应该是模式0

    2) 2) MCU_SPI1默认情况下"内部连接"到主域 MCPSI3、因此需要设置外部焊盘引脚分配、如下所示进行检查

    (此检查仅适用于 MCU_SPI1)

    * MCU_SPI1_CTRL_SPI1_LINKDIS]-->  40F0 4060h、位0 = 1;

    * MCU_SPI1_CLKSEL [MSTR_LB_CLKSEL] --> 4300 8114h、位16 = 1

    * SPI3_CLKSEL[MSTR_LB_CLKSEL] --> 0010 819Ch、位16 = 1

    * MCSPI_MODULCTRL -> 4031 0128h、位2 = 0

    3) 3)检查寄存器 MCSPI_MODULCTRL 位2、它告诉您是在主/从模式下进行设置

    4) 4)检查寄存器 MCSPI_SYST 位8~10、它会设置 D0或 D1数据方向。 (MOSI/MISO)

    5) 5)检查寄存器 MCSPI_CH0CONF -->假设仅限 CH0

    6) 6)检查寄存器 MCSPI_CH0CTRL

    7) 7)检查寄存器 MCSPI_TX0 --> TX 数据缓冲器

    8) 8) 检查寄存器 MCSPI_RX0 --> RX 数据缓冲区

    9) 9)检查寄存器 MCSPI_CH1CONF

    吉布斯

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

    您好、Gibbs:

    我将 0x40f04060设置为0x1、MCU_SPI1可以接收来自连接主器件的数据。

    但对于其他寄存器、它们似乎不符合相关设置。

    * MCU_SPI1_CLKSEL [MSTR_LB_CLKSEL] --> 4300 8114h、位16 = 1

    * SPI3_CLKSEL[MSTR_LB_CLKSEL] --> 0010 819Ch、位16 = 1

    * MCSPI_MODULCTRL -> 4031 0128h、位2 = 0

    我们是否需要配置它们以符合您的描述?

    谢谢。

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

    尊敬的 Namic:

    那么、从模式现在可以正常工作了吗?

    我相信 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1276068/tda4vh-q1-j784s4xg01evm-internal-spi/4839600#4839600

    以上链接是否有用?

    -基尔西

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

    您好、Keerthy:

    是的、链接有用。

    我参考了 mcusw 的示例代码、通过设置 0x40f04060断开 MCU_MCSPI1和 MCSPI3的连接。

    >> mcusw/mcal_drv/mcal/examples/spi/mcspi_app/j721s2/mcu1_0/Mcproc.c soc App_Startup

    但现在、我们在接收消息方面遇到了另一个问题。

    我们可以收到前九次的正确消息、十次后、消息会损坏。

    我们想知道是否需要配置其他寄存器。

    谢谢。

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

    您好!

    关于 MCU_MCSPI1和 MCSPI3断开连接、您更改的任何寄存器都就足够了。

    您还可以在另一个已应答的 E2E 中看到这一点、

     https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1299960/sk-tda4vm-mcspi3-spi3_d1/4935867?tisearch=e2e-sitesearch&keymatch=MCU_SPI1_CLKSEL#4935867  

    但导致问题的原因可能是另一个问题、但与此配置问题无关。 如果您有问题、我请您再次提出另一个 E2E、但问题仍然存在、因为此 E2E 描述完全不同。

    此致

    M·塔伦