0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

树莓派的PWM模式介绍

CHANBAEK 来源:头条号科G栈 作者:头条号科G栈 2023-03-24 11:30 次阅读

树莓派可以同时产生两路独立的pwm。

poYBAGQdGV6Ad9qMAADfpzCvOxQ805.jpg

每一路可以配置到规定的几个gpio上,而实际能用的只有12、13、18、19,其他都没有引出来。这里的gpio指的是bcm的。

pYYBAGQdGV-AQnN5AAC4AeeB3Yo799.jpg

poYBAGQdGV-ANwYWAAKS5qQjWsM321.jpg

在BCM2835 ARM外设手册中对PWM做了详细的介绍。

pYYBAGQdGWCAdKvXAAHp3_VdzrE497.jpg

树莓派的PWM有两种操作模式:PWM模式和Serialiser模式。PWM模式又有两种模式:N/M模式和M/S模式。我们平时常用的那种固定频率改变占空比的操作是PWM模式的M/S模式。

pYYBAGQdGWGAWcfkAABAGzmifqs710.jpg

PWM由8个寄存器控制,手册上给出的总线起始地址为0x7e20c000,对应的物理地址是0x3f20c000。

poYBAGQdGWOAUbt5AAF9fadqnGg417.jpg

如果不使用FIFO和DMA,配置很简单,主要是设置CTL,使能对应的PWM控制器并设置模式,设置RNG给定PWM的范围,就是上面图片的S,设置DAT给定要输出的值,就是图片中的M。也就是说RNG设置PWM的控制粒度,DAT控制输出高低电平的时间,二者的比值就是占空比。

在设置PWM之前,还有一个重要的地方需要设置,就是PWM的时钟,外设手册只说了一下配置时钟的寄存器是CPRMAN,没有其他信息。但是可以参考bcm2835库的设置方式。

pYYBAGQdGWSAFXJdAADBcnALJDE046.jpg

pYYBAGQdGWWAfwkfAAOYz0ud3YI228.jpg

poYBAGQdGWeAUCbwAAJ99TKm-hM737.jpg

总结一下,树莓派的pwm配置分这么几步:

1、设置对应的gpio为pwm复用功能;

2、设置pwm的时钟;

3、设置pwm的模式并使能;

4、设置pwm的range;

5、设置pwm的dat;

以后控制pwm就只需改变dat的值就可以改变pwm的占空比了。

Linux系统下,使用内存映射mmap可以很方便的操控这些寄存器。PWM需要映射gpio寄存器、时钟寄存器和pwm寄存器,bcm2835的库就是使用的这种方式。

pYYBAGQdGWiAVnrRAAEskbaKrpk866.jpg

poYBAGQdGWmAW59iAAPobPZcNkc170.jpg

我用树莓派18、19获取的pwm波形。

pYYBAGQdGWqASNoWAAE6KLK6hKg259.jpg

网上有树莓派只提供了一个硬件pwm输出的说法,在我的3b上证明是错误的,我猜测这种说法应该是针对之前旧版本硬件的。

有这两路PWM做两轮平衡车刚刚好。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8647

    浏览量

    361743
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4888

    浏览量

    209870
  • Linux
    +关注

    关注

    87

    文章

    10986

    浏览量

    206713
  • GPIO
    +关注

    关注

    16

    文章

    1132

    浏览量

    50557
  • 树莓派
    +关注

    关注

    113

    文章

    1637

    浏览量

    104712
收藏 人收藏

    评论

    相关推荐

    树莓常用知识及问题介绍

    `树莓常用知识及问题介绍一、树莓简介树莓是什么
    发表于 07-01 00:00

    树莓权威用户指南

    。全书共4篇13章。第一篇包括第1章到第6章,分别介绍树莓的基础知识、linux系统的管理、故障排除、网络配置、分区管理和树莓的详细配
    发表于 07-01 00:23

    给新手们推荐几本关于树莓的好书。

    用上。顺带调皮一下,不要感谢我,请叫我雷锋。{:12:}1.《Raspberry Pi用户指南》《Raspberry Pi用户指南》全书共4篇13章。第一篇包括第1章到第6章,分别介绍树莓的基础知识
    发表于 09-03 11:00

    问一下大家树莓支持什么串口模式??

    大家知不知道如何测试树莓是否支持select, poll,epoll模式
    发表于 05-18 21:01

    树莓之鬼影实录(≖ ‿ ≖)✧

    如下:[hide][/hide]如上图组装,然后运行软件:将树莓连到USB键盘然后通过HDMI连到投影仪启动树莓按CTRL+ALT+F1进入单用户
    发表于 01-08 14:03

    简单介绍树莓

    本帖最后由 348081236 于 2016-1-8 17:44 编辑 看到个很有意思的动画片介绍什么是树莓
    发表于 01-08 17:44

    树莓入门套装

    ` 本帖最后由 goyuqinghua 于 2016-3-1 14:47 编辑 产品介绍 树莓是由"Raspberry Pi基金会"最新发布的开发板(卡片
    发表于 02-22 09:51

    请问树莓硬件PWM是什么输出?

    网上有很多树莓输出PWM的,但是都是通过GPIO模拟的,不是硬件PWM模块产生的。 因为软件模拟的频率上不去,周期好像是10ms,也就是频率才100Hz。
    发表于 11-04 02:33

    树莓学习笔记之PWM控制直流电机转速介绍 相关资料分享

    树莓控制PWM控制电机转速一、硬件二、连线三、树莓python库配置一、硬件树莓
    发表于 06-29 08:47

    树莓pwm是如何去控制无刷电机的?

    树莓pwm是如何去控制无刷电机的?其实现代码是怎样去编写的?
    发表于 07-21 06:46

    树莓能做什么

    回顾第二课介绍树莓经典的10个项目——树莓能做什么NO.1 树莓
    发表于 07-26 07:14

    树莓能做什么

    按键实验第八课:树莓Python开发 PWM实验第九课:树莓Python开发 电机实验视频链接我们要干什么在学一个知识点的时候,特别是
    发表于 09-10 07:28

    详细介绍树莓4B的配置流程

    还需要一个*读卡器*)2.连接电脑3.图形界面显示三、配置完成前言提示:本文详细介绍树莓4B的配置流程,适合刚入手树莓,而且手头没有
    发表于 01-12 06:24

    树莓Pico的相关资料推荐

    1月22日,树莓基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓体积更小,售价仅4美元,现已上市销售。据
    发表于 02-07 07:37

    讲述树莓主动模式的单计算棒部署流程

    什么是主动模式树莓主动模式的单计算棒是如何去部署的?
    发表于 02-16 08:07