如题,需要使用PWM功能,按教程配置后,在进入用户态前管脚是高电平3.3v,怎么让它变低
离线
你这PWM这么久了还没搞定呀。试下在Uboot里将该PWM所处的引脚配置为输出并输出低电平,或者在Uboot里也配置为PWM但占空比设为0。
我已经试过在uboot里设置引脚了,现在发现是dts里配置pwm使能这里pinctrl-names = "default",pinctrl-0这里还是会配置pwm0引脚功能,我改成pinctrl-names = "sleep",pinctrl-1上电就不会输出,但是这是休眠了,不能输出PWM了,这个pinctrl在哪改
&pwm {
pinctrl-names = "default";
pinctrl-0 = <&pwm0_pins>, <&pwm1_pins>;
status = "okay";
};
离线
@游侠TT
linux dts 把pwm部分屏蔽,看进入linux之后是否一直保持uboot的pwm状态。
如果是,
则改下Linux里面PWM的驱动初始化代码,读出io寄存器复用状态,如果是pwm复用,继续读出pwm的频率与占空比。
离线
@游侠TT
linux dts 把pwm部分屏蔽,看进入linux之后是否一直保持uboot的pwm状态。
如果是,
则改下Linux里面PWM的驱动初始化代码,读出io寄存器复用状态,如果是pwm复用,继续读出pwm的频率与占空比。
已经试过修改u-boot文件夹下arch/arm/dts/sun8i-v3s.dtsi和sun8i-v3s-licheepi-zero.dts,将PWM驱动代码添加进去,屏蔽了linux的PWM部分,但是启动后在/sys/class/pwm下没有pwm的节点,pwm0引脚也没有高电平出来。如果配置了linux的PWM代码,系统启动后pwm0引脚默认配置成是reversed模式,所以一直是高电平,应该如何修改驱动初始化代码
离线
uboot初始化成 gpio低电平,进linux配置成pwm
昨天已经试过了,屏蔽了linux的pwm,pwm0的管脚PB4可以正常被Uboot设置成高或者低电平,设置成低后再加上linux的pwm,立马就变高了
离线
晕哥 说:uboot初始化成 gpio低电平,进linux配置成pwm
昨天已经试过了,屏蔽了linux的pwm,pwm0的管脚PB4可以正常被Uboot设置成高或者低电平,设置成低后再加上linux的pwm,立马就变高了
所以建议你改V3s 的 pwm 驱动,先把pwm寄存器值读出来,然后再写回去,或者可以用别的方法避免再次初始化。
离线