树莓派的PWM模式介绍

树莓派可以同时产生两路独立的pwm。
每一路可以配置到规定的几个gpio上,而实际能用的只有12、13、18、19,其他都没有引出来。这里的gpio指的是bcm的。
在bcm2835 arm外设手册中对pwm做了详细的介绍。
树莓派的pwm有两种操作模式:pwm模式和serialiser模式。pwm模式又有两种模式:n/m模式和m/s模式。我们平时常用的那种固定频率改变占空比的操作是pwm模式的m/s模式。
pwm由8个寄存器控制,手册上给出的总线起始地址为0x7e20c000,对应的物理地址是0x3f20c000。
如果不使用fifo和dma,配置很简单,主要是设置ctl,使能对应的pwm控制器并设置模式,设置rng给定pwm的范围,就是上面图片的s,设置dat给定要输出的值,就是图片中的m。也就是说rng设置pwm的控制粒度,dat控制输出高低电平的时间,二者的比值就是占空比。
在设置pwm之前,还有一个重要的地方需要设置,就是pwm的时钟,外设手册只说了一下配置时钟的寄存器是cprman,没有其他信息。但是可以参考bcm2835库的设置方式。
总结一下,树莓派的pwm配置分这么几步:
1、设置对应的gpio为pwm复用功能;
2、设置pwm的时钟;
3、设置pwm的模式并使能;
4、设置pwm的range;
5、设置pwm的dat;
以后控制pwm就只需改变dat的值就可以改变pwm的占空比了。
linux系统下,使用内存映射mmap可以很方便的操控这些寄存器。pwm需要映射gpio寄存器、时钟寄存器和pwm寄存器,bcm2835的库就是使用的这种方式。
我用树莓派18、19获取的pwm波形。
网上有树莓派只提供了一个硬件pwm输出的说法,在我的3b上证明是错误的,我猜测这种说法应该是针对之前旧版本硬件的。
有这两路pwm做两轮平衡车刚刚好。

为什么要用电池管理系统?开发电池管理解决方案时注意事项
聊天机器人已经在Twitter上超过了人类
IC设计:常见的ram访问冲突
分频器介绍_分频器工作原理解析
酷睿i9-9980XE跑分曝光 一万六买个新的18核心效果到底如何
树莓派的PWM模式介绍
华为正式发布了MatePad Pro和MateBook D笔记本电脑等多款产品
基于单片机存储器的配置的详细分析
智能医疗有哪些?如何看待人工智能目前以及未来在医疗中的应用?
中东的区块链有什么特征
罗德与施瓦茨ZNB20矢量网络分析仪维修
2017最便宜的智能手机多少钱?杀价无下限 吓我一大跳
讯维远程会议中心案例分享
全球动力电池行业现状如何?谁将获得主导权?
长安汽车朱华荣:建议出台积极政策推动汽车芯片国产化
河南电信与华为签订了战略合作协议将共同推进5G+物流发展
牙医专业推荐水牙线,除了洁碧还有它
基于PLC和变频器实现石灰窑电气控制系统的改造设计
经典骁龙处理器-高通骁龙625,继经典后骁龙630横空问世,性能更优!
通鼎互联将收购UTS公司26.05%的股份来把握5G网络建设的市场机遇