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:Linux 无法控制计时器输出。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1528360/tda4vm-linux-cannot-control-timer-output

器件型号:TDA4VM

工具/软件:

你好  

我们使用 SDK 10、定制板。

我想使用 V5 作为解串器的 FSYNC 信号发生器 (30Hz)。 我做了以下修改。

diff --git a/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
index 575df6ca8..a948df9eb 100644
--- a/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
+++ b/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
@@ -407,6 +407,12 @@ J721E_IOPAD(0x1d4, PIN_INPUT, 3) /* (Y3) SPI1_CS0.UART5_RXD */
 			J721E_IOPAD(0x1d8, PIN_OUTPUT, 3) /* (W4) SPI1_CS1.UART5_TXD */
 		>;
 	};
+
+	mytimer1_pins_default: mytimer1-default-pins {
+		pinctrl-single,pins = <
+			J721E_IOPAD(0x23c, PIN_OUTPUT, 2) /* (V5) TIMER_IO1 */
+		>;
+	};
 };
 
 &wkup_pmx0 {
@@ -1037,6 +1043,14 @@ clk_sensor_fixed: sensor-xclk {
         #clock-cells = <0>;
         clock-frequency = <24000000>;
     };
+
+	main_pwm1: dmtimer-main-pwm-1 {
+		compatible = "ti,omap-dmtimer-pwm";
+		#pwm-cells = <3>;
+		ti,timers = <&main_timer1>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&mytimer1_pins_default>;
+	};
 };
 
 &main_i2c1 {
diff --git a/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi b/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
index de3541bd2..4f9d3cbbb 100644
--- a/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
+++ b/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
@@ -1129,7 +1129,7 @@ main_timer1: timer@2410000 {
 		assigned-clock-parents = <&k3_clks 50 2>, <&k3_clks 327 1>;
 		power-domains = <&k3_pds 50 TI_SCI_PD_EXCLUSIVE>;
 		ti,timer-pwm;
-		status = "reserved";
+		status = "okay";
 	};
 
 	main_timer2: timer@2420000 {
diff --git a/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/configs/defconfig b/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/configs/defconfig
index 05dce5a5b..74b25450f 100644
--- a/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/configs/defconfig
+++ b/psdkla/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/configs/defconfig
@@ -1451,7 +1451,7 @@ CONFIG_PWM_IMX27=m
 CONFIG_PWM_MESON=m
 CONFIG_PWM_MTK_DISP=m
 CONFIG_PWM_MEDIATEK=m
-CONFIG_PWM_OMAP_DMTIMER=m
+CONFIG_PWM_OMAP_DMTIMER=y
 CONFIG_PWM_RCAR=m
 CONFIG_PWM_RENESAS_TPU=m
 CONFIG_PWM_ROCKCHIP=y

然后添加

static pinmuxPerCfg_t gTimer1PinCfg[] =
{
    /* MyTIMER1 -> TIMER_IO1 -> V5 */
    {
        PIN_TIMER_IO1, PIN_MODE(0) | \
        ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    {PINMUX_END}
};

引脚功能

我在用户空间中使用了以下命令:

  1. 导出频道(仅首次需要):
    echo 0 > /sys/class/pwm/pwmchip0/export

  2. 设置 30Hz 周期:
    echo 33333333 > /sys/class/pwm/pwmchip0/pwm0/period

  3. 设置 50%占空比:
    echo 16666666 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle

  4. 启用输出:
    echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable

但是、V5 上的输出仍是 19.2MHz 并且没有变化。
我这样做的方式有什么问题吗?

BR

中断

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

    您好、

    您在 2 个位置配置 pinmux 的原因是什么?

    您还能详细解释一下该用例吗?  

    此致、

    Keerthy