2580|0

821

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【沁恒试用】六、PWM [复制链接]

        本次实验利用CH549的PWM模块,分别在P22、P23、P24、P25引脚上输出4路不同占空比PWM波,并利用逻辑分析仪对占空比进行检测。

一、实验资源
1、CH549EVT学习开发板;
2、Keil v5.28.0.0;
3、CH549开发资料汇总.rar;
4、WCHISPTool v2.70;

5、CH549EVT其它相关文档;

6、逻辑分析仪;

 

二、实验准备

1、CH549的PWM资源。CH549提供了8路可以动态修改输出占空比的PWM,通过P2[7:0]引脚对外输出。使用中要注意的是8路PWM输出的编号与P2端口号并不是“数值对应”关系。

2、与PWM相关的寄存器。寄存器看着比较多,但是应用还是比较简单的;

       在这8路PWM输出中的PWM1与PWM0还可以通过软件设置更改输出极性。通过PWM控制寄存器PWM_CTRL中的“bPWM1_POLAR ”和“bPWM0_POLAR ”进行设置,这两路输出使能控制也在此寄存器中;PWM控制寄存器PWM_CTRL2对其余6路PWM输出进行使能控制。PWM_CTRL中的“bPWM_MOD_6BIT”确定了PWM波型的周期值,可以选择8位数据或6位数据,8位数据精度相对于6位要高不少。PWM_DATAn中存放的数据决定了PWM输出的占空比。根据“bPWM_MOD_6BIT”的设置,占空比分别可以这样计算:PWM_DATAn/256(8位数据);PWM_DATAn/64(6位数据)。PWM时钟分频设置寄存器“PWM_CK_SE”中的数据决定了PWM输出频率,个人理解应该就是PWM输出频率的分频系数。

三、本次实验

       根据上述学习了解,为PWM配置了4路输出,分别是PWM3、PWM2、PWM1、PWM0,与接有LED的P22、P23、P24、P25对应。P2的这四个端口也同时被配置为推挽输出。

在实验程序中将Fsys时钟直接飙到了48MHz,并为这4路PWM输出配置了不同的占空比。主要测试代码如下:

void PWM_Config(void)
{	
	PWM_CTRL = 0x02;						//默认值。选择8位数据PWM周期为256;清空PWM计数和FIFO
	
	PWM_CK_SE = 1;							//设置PWM时钟分频除数Fsys/1=48M 
	
	/*使能PWM输出,注意PWM1、PWM0输出使能位在PWM_CTRL;其余在PWM_CTRL2*/
	PWM_CTRL2 |= bPWM3_OUT_EN;	//PWM3输出使能,该位为1使能 PWM3输出 P22
	PWM_CTRL2 |= bPWM2_OUT_EN;	//PWM2输出使能,该位为1使能 PWM2输出 P23
	PWM_CTRL |= bPWM1_OUT_EN;		//PWM1输出使能,该位为1使能 PWM1输出 P24
	PWM_CTRL |= bPWM0_OUT_EN;		//PWM0输出使能,该位为1使能 PWM0输出 P25
	
	/*预置PWM输出点空比,为便于观察预置了特殊数值*/
	PWM_DATA3 = 32; 						//P22 Duty = 12.5%
	PWM_DATA2 = 64;							//P23 Duty = 25%
	PWM_DATA1 = 128;						//P24 Duty = 50%
	PWM_DATA0 = 192;						//P25 Duty = 75%
	
	PWM_CTRL &= ~bPWM_CLR_ALL;  //清零,恢复PWM计数和FIFO
}

void CLK_Config(void)
{
	SAFE_MOD = 0x55;
	SAFE_MOD = 0xAA;					//进入安全模式
	CLOCK_CFG = 0X87;					//使能内部晶振,Fsys=48MHz
}

void main()
{
	CLK_Config();                          //CH549时钟配置48M
	mDelaymS(20);
	GPIO_Init(PORT2,PIN2|PIN3|PIN4|PIN5,1);//PWM输出口配置为推挽输出
	PWM_Config();
	while(1)
	{
	}
}

四、实验结果。

五、实验总结

       CH549的PWM模块使用很简单,也比较灵活。按照手册中的介绍,PWM输出还能通过简单RC电阻电容进行积分低通滤波,做为低速数模转换器DAC使用。真不错!

 


此内容由EEWORLD论坛网友lising原创,如需转载或用于商业用途需征得作者同意并注明出处
 

点赞 关注
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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