Linux AM437X timer产生PWM
来源:互联网 发布:vue push数组 编辑:程序博客网 时间:2024/06/05 04:51
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 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 0
- Linux AM437X timer产生PWM
- mtk pwm&&linux timer
- mtk pwm&&linux timer
- CC2530 timer pwm
- STM32 timer PWM
- 定时器产生PWM
- MSP430产生PWM波
- 单片机定时器产生pwm
- dsPIC33F产生PWM
- 通用定时器产生PWM
- AVR产生多种PWM
- 32 timer pwm input capture
- timer输出pwm不稳定解决办法
- cc2530 timer 1 PWM 输出
- linux系统时间对java.Timer执行产生的影响
- 【ARM-Linux开发】TI AM437x调试WEB CAM
- TMS320F2812产生PWM波程序
- 用 STC12C5A60S2 产生PWM波
- VC维简单介绍
- qt中出现对构造函数和析构函数未定义的引用
- 谈谈java中的行为型模式:责任链模式
- mysql一些常用语法
- 【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
- Linux AM437X timer产生PWM
- Win7下mysql5.5安装教程
- js 图片延迟加载echo.min.js
- Linux中的一些命令
- java正则表达式
- Information Graph CodeForces
- 利用Intent.ACTION_SEND进行分享
- error LINK2019及动态链接库的隐式调用
- [问题]python内部os.system输出中文乱码