找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 11632|回复: 51

粒子云风扇调速原理

  [复制链接]
本帖最后由 rush 于 2019-9-13 14:20 编辑

粒子云风扇调速原理

原理就是先把gpio79拉高,然后再控制gpio70(PWM2)

反编译你现在用的dtb,随便什么系统都行,以armbian为例(假设dtb是rock64-rk3228.dtb):

dtc -I dtb -O dts -o source.dts rock64-rk3228.dtb

找到关于PWM2的部分(这部分来自rk3228.dtsi不可能没有,跟系统无关)


        pwm@ff1b0020 {
                compatible = "rockchip,rk3328-pwm";
                reg = <0x0 0xff1b0020 0x0 0x10>;
                #pwm-cells = <0x3>;
                pinctrl-names = "active";
                pinctrl-0 = <0x52>;
                clocks = <0x2 0x3c 0x2 0xd6>;
                clock-names = "pwm", "pclk";
                status = "okay";
                phandle = <0xb0>;
        };

在你的文件上是status = "disabled"; 改为像我这样  status = "okay";
以启用PWM2功能

然后回编译:

dtc -I dts -O dtb -o rock64-rk3228.dtb source.dts

替换,重启

设置79脚高电平输出:
echo 79 > /sys/class/gpio/export
echo high > /sys/class/gpio/gpio79/direction

设置70脚PWM(占空比应该在0-20000可调):
echo 0 > /sys/class/pwm/pwmchip0/export
echo 30000 > /sys/class/pwm/pwmchip0/pwm0/period
echo 10000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
echo normal > /sys/class/pwm/pwmchip0/pwm0/polarity
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable




菜鸟想变成高手,什么事情都要知道原理,远离什么OMV打包固件和WEB界面,难道以后买了台VPS你真的装个面板上去??apt下载来的软件包+SSH足够任何人用。
能看到这里的朋友,再来一段代码,将蓝色指示灯作为内置emmc读写指示,效果非常漂亮
我就不说替换到哪里了(根据上面内容做完实验,你大概已经知道了)

    gpio2@ff230000 {
        compatible = "rockchip,gpio-bank";
        reg = <0x0 0xff230000 0x0 0x100>;
        interrupts = <0x0 0x35 0x4>;
        clocks = <0x2 0xca>;
        gpio-controller;
        #gpio-cells = <0x2>;
        interrupt-controller;
        #interrupt-cells = <0x2>;
        phandle = <0x47>;   记住这里的0x47,我们不一样
    };


找到:

    leds {
        compatible = "gpio-leds";

        blue {
            linux,default-trigger = "mmc0";
            gpios = <0x47 0x15 0x0>;       记得改成你的
        };

最后还有个小礼物:开关机按键:GPIO2,本人首发,想拿去收费的自重!


点评

你说的很对,我赞同你的说法。: 5.0
你说的很对,我赞同你的说法。: 5
感谢分享  发表于 2019-9-23 21:16

评分

参与人数 5恩山币 +5 收起 理由
peng*** + 1 强大的恩山!(以下重复1万次)
take*** + 1 我太佩服楼主啦,居然跟着帖子也能进dts看一看勒
evern*** + 1 我太佩服你了,我尽管自己还没有搞明白,我先学习
noi*** + 1 这就是真的牛逼了啊
森林*** + 1 感谢你的分享,无论怎样,你都是最无私的人!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
我是板凳,楼主这个帖子是传授的真技术.
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

赞一个,,学习了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

支持楼主。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

  完全没看懂, 有懂的就是好事
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
高手,实现了调速,粒子云变废为宝。我的粒子云还有一个不足,就是联系ping时有丢包,不知是不是个案?

点评

我也是根据收费调速固件DTB反编译排除得出的结果,具体电路连接情况我也是很费解,需要两个IO控制,有可能是为了在某些情况能彻底关闭风扇,不让他失控(例如开关机时)。 ping丢包,我没有遇到,提醒下千M质量和交  详情 回复 发表于 2019-9-13 16:54
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
dbh 发表于 2019-9-13 16:47
高手,实现了调速,粒子云变废为宝。我的粒子云还有一个不足,就是联系ping时有丢包,不知是不是个案?

我也是根据收费调速固件DTB反编译排除得出的结果,具体电路连接情况我也是很费解,需要两个IO控制,有可能是为了在某些情况能彻底关闭风扇,不让他失控(例如开关机时)。
ping丢包,我没有遇到,提醒下千M质量和交换机及网线关系很大,我在网线投入的成本远大于机器本身。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
哈哈,本来我就想问一下为什么pwm还需要2个gpio呢。

点评

注意清理掉ROCK64原来一些regulator的定义,其中好像就有gpio2,所以你原来没有找到面板按键, 然后 fanpower { 好像不太正常,最好进了系统去export,(缺点是有时候开机风扇:呜~~~~~~~~~~~~) leds {  详情 回复 发表于 2019-9-13 17:05
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
还有,既然gpio2是开关,能不能从/sys/class/gpio 里面读到1/0,我之前好像没有试出来?(机器放单位了,否则都迫不及待想测试了)

点评

另外记住watch命令很好用 watch -n 0.1 cat /sys/class/gpio/gpio$1/value  详情 回复 发表于 2019-9-13 17:10
注意清理掉ROCK64原来一些regulator之类的定义,其中好像就有gpio2,所以你原来没有找到面板按键!我是系统精简出家的,首先清扫文件,强迫症,呵呵  发表于 2019-9-13 17:06
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 rush 于 2019-9-13 17:06 编辑
dbh 发表于 2019-9-13 16:59
哈哈,本来我就想问一下为什么pwm还需要2个gpio呢。

注意清理掉ROCK64原来一些regulator的定义,其中好像就有gpio2,所以你原来没有找到面板按键,(busy 被占用了)
然后 fanpower { 好像不太正常,最好进了系统去export,(缺点是有时候开机风扇:呜~~~~~~~~~~~~)


    leds {
        compatible = "gpio-leds";

        blue {
            linux,default-trigger = "mmc0";
            gpios = <0x47 0x15 0x0>;
        };
        
        fanpower {
            linux,default-trigger = "none";
            gpios = <0x47 0x0f 0x1>;
            status = "disabled";    删掉这行才起作用
        };

        satapower {
            linux,default-trigger = "none";
            gpios = <0x47 0x12 0x0>;
            default-state = "on";
        };


    };

    gpio-keys {
    compatible = "gpio-keys";
    power {
        label = "Power Button";
        gpios = <0x6d 0x2 0>;
        linux,code = <116>; /* KEY_POWER */
        debounce-interval = "50";
        /*gpio-key,wakeup;*/
        };
    };

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
dbh 发表于 2019-9-13 17:02
还有,既然gpio2是开关,能不能从/sys/class/gpio 里面读到1/0,我之前好像没有试出来?(机器放单位了,否 ...

另外记住watch命令很好用 watch -n 0.1 cat /sys/class/gpio/gpio$1/value
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
我还遇到另外几个问题,一是reboot或加电后偶尔会不能重新启动(armbian更明显,ayufan的系统会好点,这是通过每隔1分钟重启一次,重启约1000次得出来的结论)。 二是有是启动后硬盘没有加载(/dev下没有设备)。3是连续开机(比如2周)偶有死机(armbian和auyfan都出现过)。不知您是否遇到过?

点评

reboot以后如果黑屏你多等10分钟看看启动了吧?我偶尔剪了下指甲,才发现了这个事。。。 另外不止你内置硬盘没有加载,我是改过硬件用的H1硬盘,有时候也没有加载。我觉得这个跟他的辣鸡hub离不开关系。我认为,这  详情 回复 发表于 2019-9-13 17:23
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 rush 于 2019-9-13 17:25 编辑
dbh 发表于 2019-9-13 17:18
我还遇到另外几个问题,一是reboot或加电后偶尔会不能重新启动(armbian更明显,ayufan的系统会好点,这是 ...

reboot以后如果黑屏你多等10分钟看看启动了吧?我偶尔剪了下指甲,才发现了这个事。。。
另外不止你内置硬盘没有加载,我是改过硬件用的H1硬盘,有时候也没有加载。我觉得这个跟他的辣鸡hub离不开关系。我认为,这个机器有一个设计,本来很好,他自己做臭了,就是内置USB硬盘,没有从USB那部分开始断开电源。(意思就是把USB转SATA和硬盘电源共用,模拟真正的移动硬盘行为,毕竟真正的移动硬盘,不可能单独把硬盘拔了,留下硬盘盒还通电)
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

很强大很强大很强大
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
感谢大佬传授真技术.
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 01:42

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表