STM32F4-DiscoveryのPWM出力

Last-modified: 2014-10-21 (火) 23:47:57

PWM出力用端子

このボードは基板上に加速度センサやマイクロホン、DAコンバータ内蔵アンプなど盛りだくさんなため、使える端子とそうでない端子を確認する必要がある。
tim3_pins.PNG
ユーザマニュアル UM1472.pdf によれば、タイマ3の ch3, ch4 が未使用であり、自由に使えそう。

PWM用クロック

システムクロックは168MHzとして考える。原発振 8MHz を PLL で 21倍する設定。
タイマ用のプリスケーラは

  • AHB Prescaler /1, /2, /4,,,,/512
  • APBx Prescaler /1,/2,/4,/8,/16

従って、一番遅くするには (168MHz/512)/16 = 20507.8125 Hz = 20kHz。このときの1周期は 1/20k sec = 0.05 ms

ということは。RCサーボで必要な 1.5ms は 1.5ms/0.05ms = 30カウント。 2.5ms/0.05ms = 50カウント。

  • 90°~ +90°を(50-30)=20 というのは、分解能が低すぎる。

(AHB, APBx) = (/16,/16)⇒(168MHz/16)/16 = 656250 Hz = 656.25kHz ⇒周期は1.52us
1.5ms/1.52us = 1000, 2.5ms/1.52us = 1644.7, 1645-1000 = 645。180度を645カウントなので 0.28deg/count となる。

RCサーボのポテンショメータの精度はそんなに無いはずなので、十分な精度。プリスケーラの設定は

(AHB, APBx) = (/16,/16)

を採用。