2012年1月6日 星期五

TI OMAP DM3730 PWM 控制

DM3730 TRM 的第 16.2.4.6 章節,參考 Figure 16-12 跟 16-13

1. GPTi.TCLR[7] 的 SCPWM 是 Set or Clear PWM,指 PWM 預設 high(Set) or low(Clear)

2. 先設定 GPTi.TLDR 暫存器給定
(0xFFFF FFFF - GPTi.TLDR[31:0] LOAD_VALUE + 1) overflow 觸發的頻率
3. 設定 GPTi.TMAR match 暫存器給定 match 觸發的頻率

overflow 跟 match 的 pulse 頻率設完之後

4. GPTi.TCLR[11:10] 的 TRG 控制 PWM 哪時候要變換 high/low
  TRG == 0x01 是只看 overflow
  TRG == 0x02 是看 overflow 跟 match 的 pulse

5. GPTi.TCLR[12] PT 位元設定 PWM 依 TRG 變換之後是一個 pulse 或維持新準位(high/low)
直到下一次依 TRG 設定的變換

實際的驅動程式範例可以參考:https://github.com/scottellis/omap3-pwm
裡面用到 TI Linux BSP 的 arch/arm/plat-omap/include/plat/dmtimer.h 介面,可以省去
看 datasheet 查暫存器定義的時間