查看: 4263|回复: 12

YY3568 PWM的使用问题

[复制链接]

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
发表于 2023-10-11 16:30:53 | 显示全部楼层 |阅读模式
(为了高效,请按如下格式提问)

硬件主板型号:YY3568
固件名称/系统版本:自带 debian
自编的或固件下载地址:官方固件
Log日志: (可以导出,用TXT附件上传)

问题描述及复现步骤:

之前是做 mcu实时系统的嵌入式应用开发的,  最近公司项目需求,接手rk3568,  目前产品设计中有一个需求需要使用pwm驱动外部电路, 通过
YY3568 | 风火轮Wiki (youyeetoo.cn)中的资料查到GPIO0_C0具备pwm输出能力 ,但是按照资料包中的,Rockchip_Developer_Guide_Linux_PWM_CN.pdf文件 描述 想测试一下文档中的命令

  1. <div>cd /sys/class/pwm/pwmchip0/
  2. echo 0 > export
  3. cd pwm0
  4. echo 10000 > period
  5. echo 5000 > duty_cycle
  6. echo normal > polarity
  7. echo 1 > enable</div>
复制代码
结果发现提示无权限,   目前主要目的是为了启动GPIO0_C0的输出,但是对linux的设备树不是很理解, 对着文档看没到文档中提的dts文件何dtsi文件 在哪里(源代码中找到了,linux系统中find命令没看到),   主要想知道GPIO0_C0的pwm 使用c语言正确配置和启动过程.最好有个demo能学习一下,
回复

使用道具 举报

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
 楼主| 发表于 2023-10-11 16:35:21 | 显示全部楼层
youyeetoo@yy3568-alip:/sys/class/pwm/pwmchip0$ sudo sh -c "echo 0 > ./export"
sh: 1: echo: echo: I/O error
youyeetoo@yy3568-alip:/sys/class/pwm/pwmchip0$ echo 0 | sudo tee ./export
0
tee: ./export: Device or resource busy
回复 支持 反对

使用道具 举报

22

主题

352

回帖

1900

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1900
QQ
发表于 2023-10-12 15:48:24 | 显示全部楼层
风火轮用户aDbC0 发表于 2023-10-11 16:35
youyeetoo@yy3568-alip:/sys/class/pwm/pwmchip0$ sudo sh -c "echo 0 > ./export"
sh: 1: echo: echo: I/O ...

烧录这版固件可以使用gpio0_C0 做pwm
链接:https://pan.baidu.com/s/1h8Gh3mgqknfPwXQgXeuuvQ?pwd=g7ub
提取码:g7ub
回复 支持 反对

使用道具 举报

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
 楼主| 发表于 2023-10-12 15:58:49 | 显示全部楼层
风火轮用户68631 发表于 2023-10-12 15:48
烧录这版固件可以使用gpio0_C0 做pwm
链接:https://pan.baidu.com/s/1h8Gh3mgqknfPwXQgXeuuvQ?pwd=g7ub  ...

感谢管理大大,我试试看
回复 支持 反对

使用道具 举报

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
 楼主| 发表于 2023-10-12 16:58:56 | 显示全部楼层
风火轮用户68631 发表于 2023-10-12 15:48
烧录这版固件可以使用gpio0_C0 做pwm
链接:https://pan.baidu.com/s/1h8Gh3mgqknfPwXQgXeuuvQ?pwd=g7ub  ...




感谢管理大大的编译配置, 经过验证 你提供的固件确实可以输出pwm, 但是本着学习的目的,我想知道你那边是如何操作的,  我这边的18.04环境是搭建好了,经过验证可以编译整个固件; 经过昨天下午到今天,通过编译脚本有看到脚本中使用的是rk3568-evb1-ddr4-v10-linux.dts文件,其 包含了rk3568-evb1-ddr4-v10.dtsi文件,在这个文件中有一行

  1. &pwm2{
  2. <div><span style="white-space:pre">        </span>status = "disabled";
  3. };
  4. </div>
复制代码
不是很理解是 这个pwm2是否对应的是C0口的pwm, 我可以学习一下你修改的内容吗,谢谢你啦

pwm输出

pwm输出
回复 支持 反对

使用道具 举报

22

主题

352

回帖

1900

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1900
QQ
发表于 2023-10-12 18:11:41 | 显示全部楼层
风火轮用户aDbC0 发表于 2023-10-12 16:58
感谢管理大大的编译配置, 经过验证 你提供的固件确实可以输出pwm, 但是本着学习的目的,我想知道你那边 ...

gpio0_c0 对应的是pwm1,开启pwm1,pwm子系统就可以使用了。在rk3568.dtsi可以看到
回复 支持 反对

使用道具 举报

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
 楼主| 发表于 2023-10-12 18:28:22 | 显示全部楼层
风火轮用户68631 发表于 2023-10-12 18:11
gpio0_c0 对应的是pwm1,开启pwm1,pwm子系统就可以使用了。在rk3568.dtsi可以看到 ...

谢谢管理员回复, 我试了一下,

修改了rk3568.dtsi中的 status 由disabled改为okay, 但是在启动时仍然遇到了这个问题,  不过当我修改了这个配置后/sys/class/pwm/目录下确实增加了一个节点,

        pwm1: pwm@fdd70010 {
                compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
                reg = <0x0 0xfdd70010 0x0 0x10>;
                #pwm-cells = <3>;
                pinctrl-names = "active";
                pinctrl-0 = <&pwm1m0_pins>;
                clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>;
                clock-names = "pwm", "pclk";
                status = "okay";
        };

操作时遇到的问题

操作时遇到的问题

修改的位置

修改的位置
回复 支持 反对

使用道具 举报

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
 楼主| 发表于 2023-10-12 18:30:29 | 显示全部楼层
风火轮用户68631 发表于 2023-10-12 18:11
gpio0_c0 对应的是pwm1,开启pwm1,pwm子系统就可以使用了。在rk3568.dtsi可以看到 ...

请问是还有其他的地方需要设置吗?
回复 支持 反对

使用道具 举报

22

主题

352

回帖

1900

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1900
QQ
发表于 2023-10-12 18:34:54 | 显示全部楼层
风火轮用户aDbC0 发表于 2023-10-12 18:30
请问是还有其他的地方需要设置吗?

没了
回复 支持 反对

使用道具 举报

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
 楼主| 发表于 2023-10-12 19:13:43 | 显示全部楼层
本帖最后由 风火轮用户aDbC0 于 2023-10-12 19:20 编辑

虽然出现了pwm1,但是我仍然遇到了busy问题,下面是我打印的一些信息
回复 支持 反对

使用道具 举报

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
 楼主| 发表于 2023-10-12 19:19:31 | 显示全部楼层

通过lsof发现没有进程使用pwm
youyeetoo@youyeetoo-alip:/sys/class/pwm$ lsof +D /sys/class/pwm/pwmchip1
youyeetoo@youyeetoo-alip:/sys/class/pwm$ cd pwmchip1
youyeetoo@youyeetoo-alip:/sys/class/pwm/pwmchip1$ ls -la
total 0
drwxr-xr-x 3 root root    0 Feb 14  2019 .
drwxr-xr-x 3 root root    0 Feb 14  2019 ..
lrwxrwxrwx 1 root root    0 Oct 12 11:00 device -> ../../../fe6e0000.pwm
--w------- 1 root root 4096 Oct 12 11:00 export
-r--r--r-- 1 root root 4096 Oct 12 11:00 npwm
drwxr-xr-x 2 root root    0 Oct 12 11:00 power
lrwxrwxrwx 1 root root    0 Feb 14  2019 subsystem -> ../../../../../class/pwm
-rw-r--r-- 1 root root 4096 Feb 14  2019 uevent
--w------- 1 root root 4096 Oct 12 11:00 unexport
youyeetoo@youyeetoo-alip:/sys/class/pwm/pwmchip1$ sudo chmod 666 ./export
[sudo] password for youyeetoo:
youyeetoo@youyeetoo-alip:/sys/class/pwm/pwmchip1$ echo 0 > export
-bash: echo: write error: Device or resource busy
youyeetoo@youyeetoo-alip:/sys/class/pwm/pwmchip1$

但是仍然会出现 busy现象,于是我 使用dmesg

youyeetoo@youyeetoo-alip:/sys/class/pwm/pwmchip1$ dmesg | grep "pwm"
[    0.209964] pwm-backlight backlight: Looking up power-supply from device tree
[    0.209973] pwm-backlight backlight: Looking up power-supply property in node /backlight failed
[    0.209990] pwm-backlight backlight: backlight supply power not found, using dummy regulator
[    0.210064] pwm-backlight backlight: Linked as a consumer to regulator.0
[    0.885027] .. rk pwm remotectl v2.0 init
[    0.885296] input: fe6e0030.pwm as /devices/platform/fe6e0030.pwm/input/input0
[    0.885605] remotectl-pwm fe6e0030.pwm: pwm version is 0x2130000
[    0.885659] remotectl-pwm fe6e0030.pwm: Controller support pwrkey capture
[    2.476322] rockchip-pm rockchip-suspend: not set pwm-regulator-config
youyeetoo@youyeetoo-alip:/sys/class/pwm/pwmchip1$

现在我不是很清楚到底哪里占用了这个pwm1的资源,还是说我漏改了哪个地方
回复 支持 反对

使用道具 举报

22

主题

352

回帖

1900

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1900
QQ
发表于 2023-10-13 09:08:13 | 显示全部楼层
风火轮用户aDbC0 发表于 2023-10-12 19:19
通过lsof发现没有进程使用pwm
youyeetoo@youyeetoo-alip:/sys/class/pwm$ lsof +D /sys/class/pwm/pwmchi ...

cd /sys/class/pwm/pwmchip0/
sudo chmod 666 export
echo 0 > export
cd pwm0
sudo chmod 666 *
echo 10000 > period
echo 5000 > duty_cycle
echo 1 > enable
回复 支持 反对

使用道具 举报

5

主题

15

回帖

63

积分

注册会员

Rank: 2

积分
63
 楼主| 发表于 2023-10-13 09:52:15 | 显示全部楼层
风火轮用户68631 发表于 2023-10-13 09:08
cd /sys/class/pwm/pwmchip0/
sudo chmod 666 export
echo 0 > export

非常感谢管理大大回复,解决了 原来是pwmchip0,而不是 chip1
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|风火轮WIKI|手机版|小黑屋|深圳风火轮团队 ( 粤ICP备17095099号 )

GMT+8, 2024-11-21 20:03 , Processed in 0.106012 second(s), 23 queries .

快速回复 返回顶部 返回列表
 
【客服1】 商务合作 15289193
【客服2】 业务洽谈 13257599
【客服3】 售前咨询 510313198
【邮箱】
smartfire@smartfire.cn