完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 suyong_yq 于 2015-1-26 23:50 编辑 LiteFwLib 固件库之PWM样例工程——电子调光灯 ——基于Keil5和FRDM-KL25板 suyong_yq@126.com 2015年1月 一点牢骚。累得终于病倒了,省略若干字的有病呻吟。。。 呵呵,其实样例工程的名字叫“电子调灯光”更合适,但总觉得太没有气势了,还是用个名词才能镇得住场子。 PWM是单片机应用中非常有用的一个功能,基于定时器,在设定的计数点(我自己喜欢用里程碑,mile stone来说明这个点的重要性)反转输出电平,周而复始,从而形成了方波输出信号。一般能够产生PWM波形的模块都是单片机中的定时器,而计数的周期和和计数里程碑都是可以编程的。因此,在程序中,可以通过编程调节PWM的频率和占空比这两个PWM输出信号的关键属性。 在KL25单片机中,TPM(timer/PWM Module)模块就是一个可以产生PWM的定时器模块。当然,我们也应该看到,TPM不仅能当PWM发生器用,还有输入捕捉、输出比较及基本的定时器功能。LiteFwLib固件库中TPM模块的驱动程序就提供了不同的API,用以将TPM配置成不同的工作模式。见图1。 图1 至于具体的实现方式,英文好的可以直接看原版手册,英文不好的可以看翻译的中文版手册,比较懒的可以等我有空把LiteFwLib用户手册写出来再看。当然,如果想尽快上手,并且体验PWM的编程乐趣,可以直接下载运行LiteFwLib固件库里的样例程序“tpm_pwm_led”。 样例程序“tpm_pwm_led”演示的是通过PWM控制FRDM-KL25开发板上的三色灯(实际只用到了红灯,控制其它颜色灯的控制同红灯相同)的亮度。手快的童鞋可能会先跑一下程序,好吧,大家随意。 老样子,我们大家先简单看一下样例工程的代码,熟悉一下基于LiteFwLib固件库使用PWM的流程。 1. 在init_board()函数中准备好使用TPM的系统及板级配置 首先要配置好TPM模块的时钟源,并将时钟信号灌入到TPM模块中。代码见图2。 图2 这里使用PLL输出的2分频作为TPM定时器的时钟源,即24MHz。 同时不要忘记配置连接小灯的引脚为TPM通道功能。 2. 在main()函数的开始配置TPM以PWM方式工作 在main()函数的开始部分配置TPM以PWM的方式工作。见图3。 图3 首先将TPM作为基本定时器的功能设定为:采用边界对齐的事件响应、对内部的时钟源信号进行计数、计数时钟源的16分频(即24MHz/16 = 1.5MHz)。从0开始递增计数,当记到2000的时候就返回0,周而复始。 然后调用函数“TPM_ConfigChn_PWM()”将TPM配置为PWM模式,并设置在电平翻转点(里程碑)前为高电平,后为低电平。调用函数“TPM_SetChnEventValue()”设定电平翻转点的位置,初始值为2000,也就是最开始一直都是高电平,最后一个点刚拉下来就复位计数器继续变高。 3. 在while(1)循环中更改PWM的占空比控制小灯亮度 接下来的程序中就通过改变这个翻转点的位置控制PWM输出信号占空比。见图4。 图4 在这里我们能够猜到程序的执行逻辑:通过在终端中按键触发PwmEventValue值的变化,而PwmEventValue值就是电平翻转点的位置。这样,通过调整电平翻转点的位置,可以控制在2000计数点的周期之内,高电平的时间(小灯灭)和低电平的时间(小灯亮)。小灯实际上是以非常快的频率闪烁的(1.5MHz/2000 = 750Hz),远远大于人眼能感知出来的变化频率上限(电影胶片的25Hz),所以人眼实际看到的是小灯的亮度变化,达到电子调光的效果。 这里贴出来串口终端的输出信息,作为一个运行的现象的说明,见图5。实际板子上的图片没啥好看的,用相机拍下来,要么是全亮,要么是全灭,聪明的童鞋们想想这是为什么呢? |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1907个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36358 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4396 浏览 0 评论
6050 浏览 1 评论
6763 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4213 浏览 0 评论
619浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
614浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
606浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
694浏览 2评论
798浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 07:31 , Processed in 1.014717 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号