linux用户空间使用pwm,关于 v831 linux sysfs 调用 pwm 的通用操作。

关于 v831 linux sysfs 调用 pwm 的通用操作。

该操作为 linux 用户空间通用操作,在 V831 tina 上也同理。

检查设备树与原理图的配置

一般 PWM 不需要特别去配置,拿原厂的定义对一遍 /linux-4.9/arch/arm/boot/dts/sun8iw19p1-pinctrl.dtsi,来看一下 pwm6 的情况。

pwm6_pins_a: pwm6@0 {

allwinner,pins = "PD7";

allwinner,pname = "pwm6_positive";

allwinner,function = "pwm6";

allwinner,muxsel = 3;

allwinner,drive = 1;

allwinner,pull = 0;

};

pwm6_pins_b: pwm6@1 {

allwinner,pins = "PD7";

allwinner,function = "io_disabled";

allwinner,muxsel = 7;

allwinner,drive = 1;

allwinner,pull = 0;

};

可以发现它(pwm6_pins_a 和 pwm6_pins_b)被链接到 /linux-4.9/arch/arm/boot/dts/sun8iw19p1.dtsi 的配置

pwm6: pwm6@0300a000 {

compatible = "allwinner,sunxi-pwm6";

pinctrl-names = "active", "sleep";

reg_base = 0x0300a000;

pinctrl-0 = pwm6_pins_a;

pinctrl-1 = pwm6_pins_b;

status = "okay";

};

然而与 M2DOCK 的原理图上 pwm6 (PH6) 是不匹配的。

可以看到它默认定义到 PD7 引脚去了,所以这时候要改到 PH6 去,所以在 device/config/chips/v831/configs/sipeed/m2dock-board.dts 重新配置 pwm0_pins_a 和 pwm0_pins_b 的引脚,从而让 pwm6: pwm6@0300a000 结点重新链接到新的 IO 上。

pwm6_pins_a: pwm6@0 {

allwinner,pins = "PH6";

allwinner,pname = "pwm6_positive";

allwinner,function = "pwm6";

allwinner,muxsel = 2;

allwinner,drive = 1;

allwinner,pull = 0;

};

pwm6_pins_b: pwm6@1 {

allwinner,pins = "PH6";

allwinner,function = "io_disabled";

allwinner,muxsel = 7;

allwinner,drive = 1;

allwinner,pull = 0;

};

现在我们在硬件上的测试已经准备就绪,开始软件调试吧。

使用 sysfs 将操作统一到 io 接口。

用 PWM 举例来说,如果我要用 pwm6 ,然后

echo 6 /sys/class/pwm/pwmchip0/export echo 100000 /sys/class/pwm/pwmchip0/pwm6/period echo 20000 /sys/class/pwm/pwmchip0/pwm6/duty_cycle echo 1 /sys/class/pwm/pwmchip0/pwm6/enable

echo 100000 /sys/class/pwm/pwmchip0/pwm6/duty_cycle

上文描述的 duty_cycle 的值限制在 0 ~ period 的范围内,其中 period 是周期,单位是 ns 。

(还未硬件量测具体数据,晚上再说)如果要设置为某频率,比如频率想改成 200Hz, 1/200Hz=0.005s=5000000ns 这里就要改成 5000000

可以看到两个相同 LED 的亮度不同啦~

接口配置实现的参考,看完你也能学会!

本质参考这个

https://blog.csdn.net/wangyijieonline/article/details/88710547

实例参考这个

https://blog.csdn.net/weixin_43094346/article/details/84338119

http://bbs.16rd.com/thread-567583-1-1.html

后记

在配置 pwm 的时候,需要注意的地方就是 pwm[0:3] 已经被我配置成 spi 了,想要使用这附近的 pwm 要更新设备树的配置,你在使用的时候它会提示你的。

root@sipeed:/# echo 0 /sys/class/pwm/pwmchip0/export echo 100000 /sys/cla

ss/pwm/pwmchip0/pwm0/period echo 20000 /sys/class/pwm/pwmchip0/pwm0/duty_cy

cle echo 1 /sys/class/pwm/pwmchip0/pwm0/enable

[ 4948.962630] sun8iw19p1-pinctrl pio: pin PH0 already requested by spi1; cannot claim for soc@03000000:pwm0@0300a000

[ 4948.974434] sun8iw19p1-pinctrl pio: pin-224 (soc@03000000:pwm0@0300a000) status -22

[ 4948.983108] sun8iw19p1-pinctrl pio: could not request pin 224 (PH0) from group PH0 on device pio

[ 4948.993135] platform soc@03000000:pwm0@0300a000: Error applying setting, reverse things back

[ 4949.002640] platform soc@03000000:pwm0@0300a000: pinctrl_select_state(active) failed!

root@sipeed:/#

关于 v831 linux sysfs 调用 pwm 的通用操作。 相关文章

linux系统中如何删除第一行、前两行,最后一行、最后两行

1、测试数据如下: [root@PC3 test]# cat a.txt1 Beijing 20032 Beijing 20043 Beijing 20054 Beijing 20065 Beijing 20076 Beijing 20087 Beijing 20078 Beijing 20059 Beijing 200610 Beijing 200711 Beijing 200812 Beijing 2007 2、删除第一行 [root@PC3

二十四、JMeter实战-Linux下搭建JMeter + Ant + Jenins自动化框架

前言 在Linux环境上搭建一套 JMeter + Ant + Jenkins环境。在JMeter中编写好脚本,Jenkins设置好构建触发器,比如上班前和下班前自动化跑一次自动化脚本。 环境信息: CentOS 7.7 JDK 1.8 JMeter 5.2 Ant 1.9.5 Jenkins 2.6 一、环境准备 (1)Linux上安装JD

linux 异步信号的同步处理方式

参考博客https://www.cnblogs.com/jiangzhaowei/p/4193283.html #include signal.h#include errno.h#include pthread.h#include unistd.h#include sys/types.h#include stdio.h#include stdlib.h#include string.hvoid sig_handler(int signum){ static int

linux怎么挂载

Linux的硬盘识别: 一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动服务器,以root用户登录 3.查看硬盘信息 #fdisk -l Disk /dev/sda: 42.9 GB, 42949672960

Linux Sheel学习笔记1:常用命令

基本操作介绍 tar 用法1 :打包 1 tar cvzf ets.tgz /etc View Code 这里的4个选项c代表建立tar文件,v代表详细显示过程,z代表使用gzip压缩tar文件,f指定文件名。这条指令是指打包/ets目录,并压缩成ets.tgz 另一种打包命令:tar cvf – test2 | gzip -9 s

linux部署带ssl的nginx

1.前期准备 1.1:下载nginx-1.12.2版本http://nginx.org/download/nginx-1.12.2.tar.gz 然后上传到服 务器/usr/local/src 目录下 1.2:安装编译工具及库文件 //一键安装四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 1.3:

Linux-AIDE入侵检测环境

介绍 AIDE(高级入侵检测环境)是一个入侵检测工具,主要用途是检查文本的副本。AIDE能够构造一个指定文档的数据库,使用aide.conf作为配置文档。AIDE数据库能够保存文档的各部分种属性,包括:权限(permission),索引序号(索引号),所属用户(user),

Linux expect 远程自动登录机器并执行命令

0 运行环境 两台虚拟机:Ubuntu 18 x64 Xshell 6 1 expect 介绍 expect 是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。 注意 expect 脚本能够执行的前提是本地机器安装了 expect 1.1 expect 安装 安

Linux搭建.net core CI/CD环境

一、简介# 微服务开发中自动化、持续化工程十分重要,在成熟的CI/CD环境中项目团队可以灵活分配,大大提供团队效率。如果还不了解什么是CI/CD,可以先查看相关文章,这里主要介绍环境的搭建,相关原理就不过多搬书了。 二、开始搭建# 准备# 目前主流的ci/cd

Linux更换镜像源

Linux镜像源 镜像源更换步骤 备份镜像源配置文件 /etc/apt/sources.list cp sources.list sources.list.bak 修改配置文件,选择镜像源并覆盖原镜像源 vim /etc/apt/sources.list 清理安装包 sudo apt-get cleansudo apt-get autoclean 更新源 sudo apt-get up

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值