1、树莓派可以同时产生两路独立的pwm
2、每一路可以配置到规定的几个gpio上,而实际能用的只有12、13、18、19,其他都没有引出来。这里的gpio指的是bcm的。
3、树莓北贽倡豇派的PWM有两种操作模式:PWM模式和Serialiser模式。pwm模式又有两种模式:N/M模式和M/S模式。我们平时常用的那种固定频率改变占空比的操作是PWM模式的M/S模式。
4、PWM由8个寄存器控制,手册上给出的总线起始地址为0x7e20c000,对应的物理地址是0x3f20c000。
5、在设置PWM之前,还有一个重要的地方需要设置,就是PWM的时钟,外设手册只说了一下配置时钟的寄存器是CPRMAN,没有其他信息。但是可以参考bcm2835库的设置方式。
6、如果不使用FIFO和DMA,配置很简单,主要是设置CTL,使能对应的PWM控制器并设置模式,设置RNG给定PWM的范围,就是上面图片的S,设置DAT给定要输出的值,就是图片中的M。也就是说RNG设置PWM的控制粒度,DAT控制输出高低电平的时间,二者的比值就是占空比。
7、Linux系统下,使用内存映射mmap可以很方便的操控这些寄存器。PWM需要映射gpio寄存器、时钟寄存器和pwm寄存器,bcm2835的库就是使用的这种方式。
8、总结一下,树莓派的pwm洧粽袄淖配置分这么几步:1、设置对应的gpio为pwm复用功能;2、设置pwm的时钟;3、设置pwm的模式并使能;4、设置pwm的range;5、设置pwm的dat;以后控鲽判砦吟制pwm就只需改变dat的值就可以改变pwm的占空比了。