差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
pwm [2022/02/23 14:17]
gongyusu [PWM(1)- 独臂神通]
pwm [2022/09/06 04:48] (当前版本)
gongyu [3. PWM的实现方式]
行 70: 行 70:
 #### 3.1 单片机(MCU)生成PWM #### 3.1 单片机(MCU)生成PWM
 使用MCU生成PWM是最简单的方式,PWM发生功能和定时器功能是一起的,一种方法是使用软件设置定时器的定时时间,定时时间到翻转IO的高低电平,由于是软件来翻转电平,因此精度不能做到非常精确;另一种是直接使用定时器中的PWM功能,在定时器模块中已经集成了专用的PWM发生电路,用户只需要配置一下该模块的寄存器,在寄存器中配置好PWM的频率和占空比,软件使能该功能后,就可以输出精准的PWM波形。 使用MCU生成PWM是最简单的方式,PWM发生功能和定时器功能是一起的,一种方法是使用软件设置定时器的定时时间,定时时间到翻转IO的高低电平,由于是软件来翻转电平,因此精度不能做到非常精确;另一种是直接使用定时器中的PWM功能,在定时器模块中已经集成了专用的PWM发生电路,用户只需要配置一下该模块的寄存器,在寄存器中配置好PWM的频率和占空比,软件使能该功能后,就可以输出精准的PWM波形。
-{{ :​contenteetimes-images-edn-design-ideas-make-dac-microcontroller-pwm-timer-figure1.png |}}<WRAP centeralign>​微控制器通过定时器输出PWM,再经过模拟低通滤波器得到模拟信号</​WRAP>​+{{drawio>​mcu_pwm_awg.png}} <WRAP centeralign>​微控制器通过定时器输出PWM,再经过模拟低通滤波器得到模拟信号</​WRAP>​
  
 {{ :​contenteetimes-images-edn-design-ideas-make-dac-microcontroller-pwm-timer-figure2.png |}}<WRAP centeralign>​每一路可以产生不同的信号</​WRAP>​ {{ :​contenteetimes-images-edn-design-ideas-make-dac-microcontroller-pwm-timer-figure2.png |}}<WRAP centeralign>​每一路可以产生不同的信号</​WRAP>​
行 89: 行 89:
  
 {{ :​dualpwmlpf.jpg |}}<WRAP centeralign>​ 双PWM的PCB 3D,用KiCad绘制</​WRAP>​ {{ :​dualpwmlpf.jpg |}}<WRAP centeralign>​ 双PWM的PCB 3D,用KiCad绘制</​WRAP>​
 +
 +下面是用树莓派RP2040微控制器,通过MicroPython混合汇编语言编程生成正弦波形的参考代码:
  
 <code python> <code python>
行 207: 行 209:
   * [[https://​www.edn.com/​swapping-bits-improves-performance-of-fpga-pwm-counter/​|在用FPGA产生PWM通过交换数据位提升性能]]   * [[https://​www.edn.com/​swapping-bits-improves-performance-of-fpga-pwm-counter/​|在用FPGA产生PWM通过交换数据位提升性能]]
   * [[https://​www.edn.com/​double-%c2%b5cs-pwm-frequency-resolution/​|Double µC’s PWM frequency & resolution]]   * [[https://​www.edn.com/​double-%c2%b5cs-pwm-frequency-resolution/​|Double µC’s PWM frequency & resolution]]
 +
 +
 +
 +以下为更多参考技术文章,有待整理。
  
 ### PWM(1)- 独臂神通 ### PWM(1)- 独臂神通