目的:实现由旋转电位器控制LED的亮度
基本原理
将旋转电位器的电压值做AD转换在根据AD转换的值控制PWM的输出从而控制LED的亮度。
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的亮度的实验。
|