关于树莓派3:树莓派硬件PWM的使用方法
最近折腾一个调光显示屏,厂商把调光的编程接口裸露成了PWM,所以就折腾了一下树莓派的PWM输入能力。这外面有一些散落在不同文档中的内容,还有一些不晓得从什么文档里查到的货色,演绎在这里,以备后来者之需。 树莓派的40 pin通用引脚能够输入PWM信号,用于示意一个间断量以操作电机控制器、调光灯等设施。他的PWM输入有两种:软件PWM其实就是一般的GPIO输入,在一个线程里定时开关,长处是所有的GPIO引脚都能够做,毛病是工作频率、精度都比拟低(在新的pigpio库里应用高精度时钟改善了软件PWM的精度,以前老的python库实现超过几百Hz就齐全不准了)。而硬件PWM是应用树莓派CPU内置的PWM硬件,将它的信号导出到40 pin引脚,长处是精度和工作频率都很高,毛病是可用数量少,只有两路。 硬件PWM的配置想要应用硬件PWM,首先显然是确认有哪些引脚能够输入硬件PWM。参考/boot/overlays/README的内容,只有GPIO18是在全副树莓派平台上都能作为硬件PWM输入脚的。其它引脚是否可用于此,能够应用raspi-gpio程序,例如在我的树莓派3B下面: $ raspi-gpio funcs 12GPIO, DEFAULT PULL, ALT0, ALT1, ALT2, ALT3, ALT4, ALT512, DOWN, PWM0, SD4, DPI_D8, AVEOUT_VID8, AVEIN_VID8, ARM_TMS$ raspi-gpio funcs 41GPIO, DEFAULT PULL, ALT0, ALT1, ALT2, ALT3, ALT4, ALT541, DOWN, PWM1, SD5, TE0, SD1_DAT5, SPI2_MOSI, RXD1能够看到GPIO12的第零号代替性能是PWM0,而GPIO41的第零号代替性能是PWM1。 而后须要在树莓派的启动配置文件/boot/config.txt外面加载对应的设施树overlay,并设置参数,比方: dtoverlay=pwm,pin=12,func=4就会将PWM开启在12号GPIO上。留神此处的func号必须与引脚的alt性能序号匹配,有个很奇怪的程序: Func 0 = InputFunc 1 = OutputFunc 2 = Alt 5Func 3 = Alt 4Func 4 = Alt 0Func 5 = Alt 1Func 6 = Alt 2Func 7 = Alt 3所以这里func设为4,对应alt0,因为raspi-gpio通知咱们12号GPIO的PWM性能在alt0上。 ...