1. 程式人生 > >i.MX6UL -- PWM配置方法,並在使用者空間使用---基於4.1.15核心

i.MX6UL -- PWM配置方法,並在使用者空間使用---基於4.1.15核心

博主使用的是天嵌的板子imx6ul_corb。

核心版本為4.1.15。

這裡會談到如何修改相關裝置樹使其pwm可用。

現在以PWM4為例。

增加GPIO1_IO05複用為PWM4。 天嵌的PWM 驅動預設已經載入,驅動路徑為drivers/pwm/pwm-imx.c。

一,核心層修改

1.修改arch/arm/boot/dts/imx6ul.dtsi,在其中搜索pwm4並修改

    pwm4: [email protected] {
                                compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
                                reg = <0x0208c000 0x4000>;
                                interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&clks IMX6UL_CLK_PWM4

>,
                                         <&clks IMX6UL_CLK_PWM4>;
                                clock-names = "ipg", "per";
                                #pwm-cells = <2>;
                        };

2.修改arch/arm/boot/dts/tq-imx6ul.dts

    在&pwm1{
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_pwm1>;
    status = "okay";
    };

    後新增:

        &pwm4 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pwm4>;
        status = "okay";

        };

    在pinctrl_pwm1: pwm1grp

    後面新增:

    pinctrl_pwm4: pwm4grp {
            fsl,pins = <
                MX6UL_PAD_GPIO1_IO05__PWM4_OUT   0x110b0
            >;

        };  


3.GPIO1_IO05其他複用的地方取消或者註釋掉:

    在tq-imx6ul.dts搜尋GPIO1_IO05,註釋掉相關定義部分:

            //MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT        0x17059 /* SD1 VSELECT */

二,使用者層使用:

1.echo 0 > /sys/class/pwm/pwmchip3/export/*設定PWM4輸出,調出pwm0目錄下裝置節點,用於以下配置 */

2.echo 1 >/sys/class/pwm/pwmchip3/pwm0/enable/*設定PWM4使能 */

3.echo 1000000 >/sys/class/pwm/pwmchip3/pwm0/period/*設定PWM4一個週期的持續時間,單位為ns,即1K Hz */

4.echo 500000 >/sys/class/pwm/pwmchip3/pwm0/duty_cycle/*設定一個週期中的”ON”時間,單位為ns,即佔空比=duty_cycle/period=50% */

檢視現象:

        1.示波器檢視

        2.LED亮度現象檢視