查看: 1558|回复: 2

[求助] MAPS四色板K64试用1:旋转电位器控制LED亮度

[复制链接]

该用户从未签到

10

主题

46

帖子

0

注册会员

Rank: 2

积分
108
最后登录
2018-5-24
发表于 2015-8-31 15:39:13 | 显示全部楼层 |阅读模式
原作者:ECBC_LYX
目的:实现由旋转电位器控制LED的亮度

基本原理

将旋转电位器的电压值做AD转换在根据AD转换的值控制PWM的输出从而控制LED的亮度。
旋转电位器控制LED亮度 1.png


1. MAPS 四色板AD的实现方法
K64的ADC模块具有多路查分输入和单端输入,每对差分输入需要两个输入引脚

在使用ADC时需要一般要使用到以下几个寄存器
  • ADC状态和控制寄存器1 ADC0_SC1A
  • ADC 状态和控制寄存器2 ADC0_SC1B
  • 配置寄存器1 ADC0_CFG1
  • 配置寄存器2 ADC0_CFG2
  • ADC数据结果寄存器ADC0_RA
  • ADC数据结果寄存器ADC0_RB
  • 比较值寄存器ADC0_CV1
  • 比较值寄存器ADC0_CV2
配置AD的模式,这里使用的是单通道使用模式

Freescale的官方库函数中提供了获得AD值得函数GetVoltage(),在函数内配置AD的模式,通道,使能AD,就可以读到AD的值,使用起来很方便,很适合初学者使用。

2. MAPS 四色板PWM的实现方法

MAPS的PWM是通过FTM来实现的,FTM模块具有两个8通道的定时器,支持输入输出捕捉,输出比较工功能,并且可是生成PWM信号。

与FTM相关的寄存器有
  • 状态控制寄存器 FTMx_SC
  • 计数器寄存器FTMx_CNT
  • 模寄存器 FTM_MOD
  • 通道状态和控制寄存器FTMx_CnSC
  • 通道值寄存器FTMx_CV

FTM功能
(1)计数器操作
(2).输入捕获模式
(3).输出比较模式
(4)边缘对齐PWM模式
在这里我们使用的是边缘对齐PWM模式
Freescale的官方库函数中提供了如下的函数
FTM的初始化函数FTM_DEV_Init(),在使用这个函数可以配置PWM的模式,接口等基本信息。
PWM的启动和停止函数FTM_DRV_PwmStart() 和FTM_DRV_PwmStop()

在本例程中将ADC配置成12位,这样AD转出的数值就在0-4095之间,接下来的工作就是将AD值对应到PWM的值,这样就对应到了LED的亮度。PWM的控制参数为占空比取值范围为0-100%。两个值得上下限对比,就得到了AD的0值对应PWM的0值,AD的最大值4095对应PWM的100%,这样就得到了公式advalve*100/4095,这样就将两个值对应起来了。(在调试的过程中公式中的100 是很容易被忽略的,需要引起大家的注意)
这样就完成了由旋转电位器控制LED的亮度的实验。

我知道答案 目前已有2人回答

评分

参与人数 1NXP金币 +20 收起 理由
小七 + 20

查看全部评分

回复

使用道具 举报

该用户从未签到

10

主题

40

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2018-5-8
发表于 2015-8-31 16:42:23 | 显示全部楼层
不错哦
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15255
    最后登录
    1970-1-1
    发表于 2015-8-31 16:50:03 | 显示全部楼层
    我看以为楼主从哪里搞来了个四色板
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 16:01 , Processed in 0.131878 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表