news 2026/6/15 17:37:18

瑞芯微(EASY EAI)RV1126B PWM使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
瑞芯微(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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:13:17

新能源汽车租赁公司车辆经营方案

新能源汽车租赁公司的车辆经营方案核心在于通过合理的车型选择、灵活的租赁模式与完善的运维体系,实现环保效益与商业可持续性的双赢。 随着城市化进程加快和环保政策推动,新能源汽车租赁成为优化出行结构的重要方式。多地政府已出台政策支持新能源汽车…

作者头像 李华
网站建设 2026/6/15 14:11:26

大货车可通过加装手机智能控制系统使用APP实现手机远程启动

大货车司机常面临极端天气下冷车启动困难、驾驶舱温度不适等问题。手机远程启动升级能让司机在出发前提前启动车辆预热发动机、开启空调,提升舒适性与出车效率 。该功能不仅适用于新车原厂配置,也可通过对已有车辆进行无损改装实现 。包括卡车、货车在内…

作者头像 李华
网站建设 2026/6/10 16:37:45

必看!2025年单北斗GNSS变形监测最具性价比的8款高口碑产品推荐

在2025年,随着单北斗GNSS变形监测系统的技术不断成熟,市场上出现了一系列高性价比的产品。这些产品不仅适用于桥梁监测,还广泛应用于地质灾害预警等重要领域。各大厂家致力于提高设备性能,优化用户使用体验。通过快速简便的安装流…

作者头像 李华
网站建设 2026/6/15 16:29:22

从PyTorch官方文档高效获取信息的技巧分享

从 PyTorch 官方文档高效获取信息的技巧 在深度学习项目中,最让人头疼的往往不是模型设计本身,而是环境配置——明明代码没问题,却因为 CUDA 版本不匹配、PyTorch 编译错误或驱动缺失导致任务卡住。这种“环境地狱”不仅浪费时间&#xff0c…

作者头像 李华
网站建设 2026/6/9 20:59:20

Docker Compose编排多个PyTorch服务容器

Docker Compose编排多个PyTorch服务容器 在现代AI系统开发中,单个模型已经很难满足复杂的业务需求。比如一个智能客服平台,可能需要同时运行图像识别、语音转文字和自然语言理解等多个深度学习模型。这些模型往往基于PyTorch构建,并依赖GPU加…

作者头像 李华
网站建设 2026/6/15 15:48:02

AI Agent深度剖析:核心机制、7大平台对比与应用场景全揭秘!

2025 年,AI Agent 成了科技圈最热的关键词。它不再只是一个“聪明的聊天机器人”,而像是能自主思考、执行任务的数字分身。 它能感知环境、制定计划、执行行动、反思优化,让机器第一次真正具备了“主动性”。 简单说,它就像你的…

作者头像 李华