Linux AM437X timer产生PWM

step1:Enable timer4's clock in CM_PER 
 # devmem2 0x44DF8D40 w 0x2  
step2:select clock source in CM_DPLL (default 0x01 select CLK_M_OSC=24MHz)
 # devmem2 0x44df420c w 0x1    
step3:set the Pinmux for timer4
要加载驱动后才能使用。。。驱动会配置引脚
/*
设备树引脚配置:
infrared_pins:infrared_pins{
pinctrl-single,pins = <
0x270 ( INPUT_EN|MUX_MODE2)  /* D24=XDMA_EVENT_INTR0.timer4  */
>;
};


*/
step4:stop timer4
devmem2 0x48044038 w 0x1842
step5:calculate frequecy
Fs=24000000 Hz

Fd = Fs/(0x100000000-TLDR)
TLDR=0x100000000 -Fs/Fd
TLDR=TCRR
step6:calculate duty 
percent=<1~99>
TMAR=0x100000000-Fs/Fd*(100-percent)
step7:config&start timer4
# Auto-Reload
# Compare Mode Enabled
# Trigger set on overflow
# Toggle Mode
# start timer 
devmem2 0x48044038 w 0x1843

example:512Hz 20% Fs/Fd = 0xB71B
devmem2 0x44DF8D40 w 0x2         -->Enable clock(in CM_PER)
devmem2 0x44df420c w 0x1         -->select clock source in CM_DPLL (default 0x01 select CLK_M_OSC=24MHz)
devmem2 0x48044038 w 0x1842      -->stop timer
devmem2 0x44e00510 w 0x12        -->select the clk source for timer4 counter(CM_DPLL) 
devmem2 0x48044040 w 0xFFFF48E5  -->set TLDR(STEP5)
devmem2 0x4804403C w 0xFFFF48E5  -->set TCRR(STEP5)
devmem2 0x4804404C w 0xFFFF6D84  -->set TMAR(STEP6)

devmem2 0x48044038 w 0x1843      -->config&start timer4


参考: 

http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/p/59806/365348.aspx#365348

http://junkbox.wpblog.jp/2015/07/01/beaglebone-black%E3%81%AEdmtimer%E3%81%A7timer%E5%87%BA%E5%8A%9B%E3%82%92%E8%A1%8C%E3%81%86/

https://insight.io/github.com/torvalds/linux/commit/6604c6556db9e41c85f2839f66bd9d617bcf9f87#drivers/pwm/pwm-omap-dmtimer.c

上层应用直接操作物理地址(寄存器),可使用devmem2 :http://sources.buildroot.net/devmem2.c

http://d.hatena.ne.jp/rti7743/20131219/1387447643

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值