3586|1

195

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

飞凌国产芯片系列干货|A40i开发板PWM的应用笔记全公开 [复制链接]

 

 

本文讲解了国产A40i 开发板PWM的应用,本篇文章主要适用于飞凌 OKA40i 平台 Linux3.10.65 操作系统,其他arm 平台也可以参考,但是不同平台之间会存在差异,请自行修改以适应自己的使用。 写本文章的主要目的是协助客户加速产品的研发速度,由于水平有限, 不提供任何的完整性、可靠性等保证,软件版本更新之后,有些位置名称等内容可能会及时更新,修改方法请参考使用。

一、PWM的应用

1、pwm的添加

 

 

增加一路 pwm,以 pwm4 为例说明,其他方法类似,只做为参考。

arch/arm/boot/dts/sun8iw11p1.dtsi

 

中添加

 

pwm = &pwm;
pwm0 = &pwm0;
pwm4 = &pwm4;
pwm: pwm@01c23400 {
 	compatible = "allwinner,sunxi-pwm";
	reg = <0x0 0x01c23400 0x0 0x154>;
	pwm-number = <1>;
 	pwm-base = <0x4>;
 	pwms = <&pwm4>;
 };
pwm4: pwm4@01c23400 {
	compatible = "allwinner,sunxi-pwm4";
 	pinctrl-names = "active", "sleep";
 	reg_base = <0x01c23400>;
	reg_peci_offset = <0x00>;
 	reg_peci_shift = <0x04>;
	reg_peci_width = <0x01>;
 	reg_pis_offset = <0x04>;
	reg_pis_shift = <0x04>;
	reg_pis_width = <0x01>;
	reg_crie_offset = <0x10>;
 	reg_crie_shift = <0x08>;
 	reg_crie_width = <0x01>;
	reg_cfie_offset = <0x10>;
 	reg_cfie_shift = <0x09>;
 	reg_cfie_width = <0x01>;
	reg_cris_offset = <0x14>;
	reg_cris_shift = <0x08>;
	reg_cris_width = <0x01>;
 	reg_cfis_offset = <0x14>;
	reg_cfis_shift = <0x09>;
	reg_cfis_width = <0x01>;
	reg_clk_src_offset = <0x28>;
	reg_clk_src_shift = <0x07>;
	reg_clk_src_width = <0x02>;
	reg_bypass_offset = <0x28>;
	reg_bypass_shift = <0x05>;
	reg_bypass_width = <0x01>;
 	reg_clk_gating_offset = <0x28>;
 	reg_clk_gating_shift = <0x04>;
 	reg_clk_gating_width = <0x01>;
 	reg_clk_div_m_offset = <0x28>;
	reg_clk_div_m_shift = <0x00>;
 	reg_clk_div_m_width = <0x04>;
	reg_pdzintv_offset = <0x38>;
 	reg_pdzintv_shift = <0x08>;
	reg_pdzintv_width = <0x08>;
 	reg_dz_en_offset = <0x38>;
	reg_dz_en_shift = <0x00>;
	reg_dz_en_width = <0x01>;
 	reg_enable_offset = <0x40>;
	reg_enable_shift = <0x04>;
	reg_enable_width = <0x01>;
 	reg_cap_en_offset = <0x44>;
 	reg_cap_en_shift = <0x04>;
 	reg_cap_en_width = <0x01>;
 	reg_period_rdy_offset = <0xe0>;
 	reg_period_rdy_shift = <0x0b>;
	reg_period_rdy_width = <0x01>;
	reg_pul_start_offset = <0xe0>;
 	reg_pul_start_shift = <0x0a>;
 	reg_pul_start_width = <0x01>;
 	reg_mode_offset = <0xe0>;
	reg_mode_shift = <0x09>;
 	reg_mode_width = <0x01>;
	reg_act_sta_offset = <0xe0>;
 	reg_act_sta_shift = <0x08>;
	reg_act_sta_width = <0x01>;
 	reg_prescal_offset = <0xe0>;
 	reg_prescal_shift = <0x00>;
 	reg_prescal_width = <0x08>;
	reg_entire_offset = <0xe4>;
	reg_entire_shift = <0x10>;
 	reg_entire_width = <0x10>;
 	reg_active_offset = <0xe4>;
 	reg_active_shift = <0x00>;
 	reg_active_width = <0x10>;
 }

 

按手册 PWM 修改对应的寄存器。

修改 sys_config.fex 中 twi2_used=0 且增加

 

[pwm4]
pwm_used = 1
pwm_positive = port:PB20<4><0><default><default>
[pwm4_suspend]
pwm_positive = port:PB20<7><0><default><default>

 

编译镜像并烧写

2、PWM的测试

 

 

echo 0 >/sys/class/pwm/pwmchip4/export
echo 1000000 > /sys/class/pwm/pwmchip4/pwm0/period
echo 500000 > /sys/class/pwm/pwmchip4/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip4/pwm0/enable

 

测量得到频率为 1K 方波

 

echo 0 > /sys/class/pwm/pwmchip4/pwm0/enable
echo 208333> /sys/class/pwm/pwmchip4/pwm0/duty_cycle
echo 416667 > /sys/class/pwm/pwmchip4/pwm0/period
echo 1 > /sys/class/pwm/pwmchip4/pwm0/enable

 

测量得到频率为 2.4K 方波

 

此帖出自ARM技术论坛

最新回复

感觉没头没脑的呀,看着就是一堆设置。   详情 回复 发表于 2022-5-11 20:05
点赞 关注
 

回复
举报

7608

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

感觉没头没脑的呀,看着就是一堆设置。

此帖出自ARM技术论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表