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.

[参考译文] TDA4VM:如何配置引脚多路复用功能

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1518238/tda4vm-how-to-configure-the-pinmux-function

器件型号:TDA4VM

工具/软件:

尊敬的专家:

我对 TDA4VM GPIO 引脚多路复用有疑问:

  GPIO0[0:127]、  具有128个引脚

  GPIO1[0:35]、 具有36个引脚

  因此、 引脚总数(主域)为164。

  为什么 PADCONFIG 寄存器的总数  达到173?

         

    

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

    您好、

    您能给我们讲一讲您将用于工程的 TI SDK 吗?

    有关如何执行此操作的信息取决于您计划用于 GPIO 的 SDK 和 TDA4VM 内核。

    建议您了解此处提供的 TI SDK -> https://www.ti.com/tool/PROCESSOR-SDK-J721E

    Unknown 说:
    为什么 PADCONFIG 寄存器总数  达到173?

    请注意、引脚是多路复用的、并非所有引脚都可以配置为 GPIO。 请详细查看器件数据 表 TDA4VM 处理器数据表(修订版 K) 第5.4章中的所有引脚配置。

    谢谢。

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

    嗨、Praveen。

    我使用 TI Linux SDK:  TI-processor-sdk-linux-j7-evm-08_00_00_08

    然后 我按以下方式修改了器件树文件:

    &main_pmx0 {
        // ...
        deser0_ctrl_gpio_pins_default: deser0-gpio-pins-default {
    		pinctrl-single,pins = <
    			J721E_IOPAD(0x120, PIN_OUTPUT, 7)         /* (AA28) GPIO0_71 */
    			J721E_IOPAD(0x230, PIN_OUTPUT, 1)         /* (U2) GPIO1_11 */
    			J721E_IOPAD(0x188, PIN_INPUT | ST_EN, 7)  /* (Y28) GPIO0_97 */
    		>;
    	};
    	// ...
    	
    };
    
    // ...
    &main_i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    	#address-cells = <1>;
    	#size-cells = <0>;
    	
    	// ...
    	
        c3lync-deser@71 {
    		compatible = "meritech,m65q6x";
    		// ...
    		
    		pinctrl-names = "default";
    		pinctrl-0 = <&deser0_ctrl_gpio_pins_default>;
    		
    		powerdown-gpios = <&main_gpio0 71 GPIO_ACTIVE_HIGH>;
    		
    		// ...
    		};
    	};
    	
    	// ...
    };

    另一方面、 在驱动程序代码中:

    static int m65q6x_probe(struct i2c_client *client)
    {
        // ...
        
        /* get power-down pin from DT */
        priv->pd_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH);
    	if (IS_ERR(priv->pd_gpio)) {
    		ret = PTR_ERR(priv->pd_gpio);
    		if (ret != -EPROBE_DEFER)
    			dev_err(dev, "Cannot get powerdown GPIO (%d)", ret);
    		return ret;
    	}
    	
    	if (priv->pd_gpio) {
    		gpiod_set_value_cansleep(priv->pd_gpio, 1);
    		/* Wait at least 20ms before the I2C lines latch to the address */
    		usleep_range(20000, 25000);
    	}
    	
    	// ....
    }

    但我发现 GPIO0_71 (AA28)引脚的电平输出 一直处于低电平。

    所以, 我没有找到问题的原因。   请给我一些建议。 非常感谢。

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

    好的、感谢您让我们知道这是在 Linux 上实现的。 我们将让 Linux SDK 专家查看上述查询并提供反馈。

    谢谢。

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

    谢谢、

    为了进一步详细说明 、我发现 PADCONFIG72寄存器 对应于 GPIO0_71 (在器件数据表 TDA4VM 处理器数据表(修订版 K) 第5.4章)

    然后我通过  devmem2 0x0011c120读取 PADCONFIG72

        返回值为0x00010007、  表示引脚功能配置正确。

    不过、我通过 devmem2 0x00600060读取 GPIO_DIR45寄存器

        返回值为0xFFFFFFFF、表示 GPIO0_71已配置为输入功能。

    到目前为止、  我没有找到问题的原因。  

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

    您好、

    [报价 userid="655800" url="~/support/processors-group/processors/f/processors-forum/1518238/tda4vm-how-to-configure-the-pinmux-function

      为什么 PADCONFIG 寄存器的总数  达到173?

    [/报价]

    有些引脚可能不支持 GPIO 模式并与其他功能相关。 因此、我们可以拥有更多 PADCONFIGs。

    但我发现 GPIO0_71 (AA28)引脚的电平输出 一直保持在低电平。

    对于 GPIO、您需要在2个电平下处理引脚:

    1. PADCONFIG 电平:如果您希望 PIN 作为 GPIO 正常工作、则始终需要将其编程为 PIN_INPUT、而不是 PIN_OUTPUT。
      在焊盘级别、引脚*必须*配置为 PIN_INPUT。
    2. 在 GPIO 级别、您可以根据需要将其作为输出或输入。
    3. 始终确保 PADCONFIG 的位18 (即 RX_ACTIVE)设置为"1"。 (PIN_INPUT 配置会将其设置为0x1)

    - Keerthy