当前位置: 首页 > news >正文

瑞芯微(EASY EAI)RV1126B PWM使用

1. PWM简介

1.1 开发板PWM资源

1.2 查找PWM节点

rv1126b的pwm资源表如下:

【PWM1 CH0】对应的是pwm1_4ch_0,寄存地址为20700000
【PWM1 CH1】对应的是pwm1_4ch_1,寄存地址为20710000

pwm驱动加载成功后,在文件系统/sys/class/pwm/下会产生pwm节点(pwmchip*),通过下方命令,可得知pwm节点与pwm资源的对应关系。

【PWM1 CH0】对应的节点为【pwmchip1】

【PWM1 CH1】对应的节点为【pwmchip2】

1.3 操作PWM节点

下方以操作【PWM1 CH0】为例:

首先通过命令进入到pwmchip1控制器(/sys/class/pwm/pwmchip1),能看到以下内容:

cd /sys/class/pwm/pwmchip1 ls

export:用于导出pwm定时器设备

unexport:用于释放pwm定时器设备

向export文件写入0,就会打开pwm定时器,会产生一个pwm0目录。

echo 0 > export

进入到pwm0定时器,就能设置它的各种属性,如周期、占空比等。

cd pwm0

echo 1000000 > period ##设置定时器1个周期内的脉冲个数 echo 500000 > duty_cycle ##设置定时器1个周期内低电平的脉冲个数 echo 1 > enable ##使能pwm定时器 echo 0 > enable ##禁能pwm定时器

相反往unexport文件写入0,就会关闭pwm定时器,同时pwm0目录会被删除。

cd .. echo 0 > unexport

2. 快速上手

2.1 开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh

2.2 源码下载以及例程编译

首先,在虚拟机后台终端,执行以下命令,创建外设单例源码管理目录:

首先,到【百度网盘】上下载相关的单例程序:

链接:https://pan.baidu.com/s/1Br608Hiff2Xs65PzWO_qWQ?pwd=1234

提取码:1234

比如把单例程序下载到:此电脑\D:\BaiduNetdisk(无规定,用户可自主选择),如下图所示。

再将下载好的单例复制进入虚拟机的文件系统,过程如下图所示。

最后,进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-Nano-TB/demo/10_PWM ./build.sh

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持/mnt挂载。

编译成功后,会生成1个叫test-pwm可执行程序在Release目录下,并会自动部署到开发板的/userdata/目录中。

2.3 例程运行

通过串口调试或ssh调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata

执行下方命令以运行PWM输出demo,如下所示。

sudo ./test-pwm

执行效果如下所示。

通过示波器抓取的波形,如下图所示:

3. C语言使用案例

PWM的C语言使用案例,代码地址为10_PWM/test-pwm/main.c,供用户编码参考。以下代码展示了pwm控制器的初始化,调整周期,占空比,资源释放的操作流程:

int main(int argc, const char** argv) { int ret; ret = pwm_init("pwmchip1", "0"); printf("export_ret:%d\n", ret); ret = pwm_set_attr("pwmchip1", "0", "period", "1000000"); printf("set_period_ret:%d\n", ret); ret = pwm_set_attr("pwmchip1", "0", "duty_cycle", "500000"); printf("set_duty_cycle_ret:%d\n", ret); ret = pwm_set_enable("pwmchip1", "0", "1"); printf("set_enable:%d\n", ret); ret = pwm_release("pwmchip1", "0"); printf("unexport_ret:%d\n", ret); //====================================================================== ret = pwm_init("pwmchip2", "0"); printf("export_ret:%d\n",ret); ret = pwm_set_attr("pwmchip2", "0", "period", "1000000"); printf("set_period_ret:%d\n",ret); ret = pwm_set_attr("pwmchip2", "0", "duty_cycle", "500000"); printf("set_duty_cycle_ret:%d\n",ret); ret = pwm_set_enable("pwmchip2", "0", "1"); printf("set_enable:%d\n",ret); ret = pwm_release("pwmchip2", "0"); printf("unexport_ret:%d\n",ret); //====================================================================== return 0; }

其中pwm_init(),pwm_set_attr(),pwm_set_enable(),pwm_release()是对系统调用的易用化封装。具体实现于10_PWM/test-pwm/main.c

http://www.gsyq.cn/news/175900.html

相关文章:

  • 2025年信息化基础设施维护品牌企业推荐:看哪家专业可靠? - mypinpai
  • Docker镜像分层原理:优化PyTorch环境构建速度
  • 实战化需求驱动:高精度大算力目标追踪无人机集群供应商全景评测 - 品牌2025
  • Markdown表情符号增强技术文章可读性
  • 新能源汽车分时租赁TBOX功能详解
  • 英伟达发布Nemotron 3开源模型助力可扩展多智能体系统
  • Conda create新建独立环境避免PyTorch依赖污染
  • 微信小程序适应机型布局
  • 高新技术企业申报服务哪家强?新测评精选服务公司推荐 - 工业品牌热点
  • 2025年江苏正规调查公司推荐榜:配偶行为调查/婚前背景调查/离婚综合调查/专业调查取证服务商精选 - 品牌推荐官
  • VS插件(颜色预览)
  • java计算机毕业设计校园外卖系统 高校即时配餐在线平台 校园点餐极速达系统
  • 采用SpringBoot+Vue等技术架构的云ERP系统源码,SaaS ERP管理系统
  • java计算机毕业设计校园物品交易系统 高校二手闲置物品置换平台 校园跳蚤市场数字化交易系统
  • 2026零基础如何参与护网行动?(非常详细)
  • 基于龙格-库塔方法与中心差分方法求解随机非线性薛定谔方程的数值实现
  • 2026年海外数字化营销公司TOP5推荐:涵盖 Facebook、Google、TikTok、 ins、LinkedIn 等海外营销主流平台 - 品牌2025
  • 2025年差压变送器厂家推荐:压力变送器厂家有哪些? - mypinpai
  • python招标投标文件在线制作系统vue
  • 别再犹豫了!网安 327 万缺口 + 越老越吃香,现在加入稳赚不亏!
  • 2026年苏州海外社媒运营推广服务商精选(涵盖 Facebook、LinkedIn 领英、TikTok 、Google营销推广获客解决方案) - 品牌2025
  • 年末大盘点!包装设计公司排名新鲜出炉 - 黑马榜单
  • 2025年压力变送器知名品牌排行榜,高性价比制造商研发能力测评推荐 - mypinpai
  • 如何在Windows和Linux上使用PyTorch-CUDA-v2.7镜像进行GPU训练
  • 2025 年国产斜轨数控车床哪家口碑好/销量高/稳定性好?广东博克斯为何脱颖而出 - 品牌推荐大师
  • AOSP 打包之如何新增预装应用
  • 哪个厂家可定制钻机配件?信誉好有实力的宣化钻机配件推荐厂家腾达钻孔 - 品牌推荐大师1
  • 2026 Deepseek知识库部署服务商深度盘点(实战落地版):企业级本地化部署一步收官实操方案全覆盖 - 品牌2026
  • 井下钻机推荐品牌哪家强?性能好质量优的宣化井下钻机标杆企业认准腾达 - 品牌推荐大师1
  • 永磁同步电机PMSM全速域无速度传感器控制探秘