【经验分享】FRDM-KE02的Adc_demo例程的绿灯咋点不亮呢?
本帖最后由 FSL_TICS_Robin 于 2014-7-18 14:15 编辑手上有FRDM-KE02板子的童鞋们在调试Adc_demo例程时,是否发现绿灯始终点不亮,而换成蓝灯或红灯时,就又可以点亮啊。咋回事呢?在仔细检查核对绿灯点亮的操作代码后,又没有发觉有不对劲的地方,真是很抓狂啊!那到底是什么原因呢?首先,还是请出KE02的参考手册,在表10.1中列出引脚的各种复用功能,但有一点要引起注意,KE02的复用功能设置与K、L系列有本质的区别,没有相应的MUX位来进行设置,而是采用优先级分配的原则,如果优先级高的复用功能使能后,优先级低的复用功能就会被禁用(如图1所示)。根据这个提示,我们会发现PTH2有BUSOUT、FTM_CH0复用功能,是不是其中一个复用功能在例程代码中被使能了,从而导致PTH2不能作为GPIO工作啊?按照此猜测,我们可以重新检查一下例程,这时,我们会发现在sysint.c中,果然有使能BUSOUT功能的代码(如图2所示)。哈哈,问题解决啊,这也给了我们正确使用I/O复用功能很好的提示!!!
图1
图2
PS:本帖可从飞思卡尔版块置顶帖:飞思卡尔Kinetis资料大本营的飞思卡尔论坛支持小组【经验分享】帖汇总链接进入。 支持楼主,也欢迎大家分享调试经验! 版主,同样的问题,关于ADC中有两个寄存器,有一些疑问:
在寄存器AD_SC1中,ADCH(bit0~bit4)功能是选择一个通道作为ADC的输入通道。
寄存器ADC_APCTL1功能是disable/enable ADC Pin.而且是:
0 ADx pin I/O control enabled.
1 ADx pin I/O control disabled.
我在ADC的例程里面找到了对ADCH的操作,没有见到对ADC_APCTL1的操作。
问题1:在引脚图中,ADCx_SEn的优先级都是最高的(ALT 4),那么,在使能ADC模块的情况下(SIM->SCGC |= SIM_SCGC_ADC_MASK;),如果要使用FTM0_CH0(ADC0_SE0)功能,
是不是就要对ADC_APCTL1操作,disable AD0?
问题2:在AN4796这份文档中,有下面一段:
6.3.4 AD转换
ADC模块用来进行相反电动势,直流母线电压和直流母线电流的采样及转换,配置如下:
输入时钟为总线时钟
单次转换模式
转换结果12位,右对齐
ADC->SC3 = ADC_SC3_MODE(2) | ADC_SC3_ADIV(2);
使用外部PWM信号触发
ADC->SC2 |= ADC_SC2_ADTRG_MASK;
采样通道设置为:直流母线DC_Bus电压为通道AD11,直流母线DC_Bus电流为通道AD14,
A相反电势为通道AD10,B相反电势为通道AD3,C相反电势为通道AD7
ADC->APCTL1 = 0xC488;
这里面使能 AD3,AD7,AD11,AD14是通过对ADC->APCTL1 寄存器赋值0xC488;也就是置高bit3,bit7,bit14,bit15
这个操作好像和寄存器的说明矛盾,而且为什么通过置高bit15来使能AD11? 碰到过这个问题,当时调试到LED初始化时卡住了,原来是这样。 现在的MCU越来越复杂,不弄仔细点就容易遇到各种各样的问题,
感谢版主的经验分享呢。 看得云里雾里!! 在IAR里的话就是把#define OUTPUT_BUSCLK这个宏定义注释掉,
不要使能BUSOUT功能就好了。
支持楼主,也欢迎大家分享调试经验! 谢谢分享,先收了,板子快到了,呵呵 版主,我想说AD例程运行会卡在default_isr,进行不到下面,isr里有重定义的,是怎么回事啊 原来是KE02的复用功能设置与K、L系列有较大的区别。谢谢楼主的经验分享 Ray______ 发表于 2014-12-28 18:35
版主,我想说AD例程运行会卡在default_isr,进行不到下面,isr里有重定义的,是怎么回事啊 ...
这说明你的中断函数与中断向量没有对应起来,你再仔细检查一下吧! franki 发表于 2014-12-28 22:47
原来是KE02的复用功能设置与K、L系列有较大的区别。谢谢楼主的经验分享
是的,所以客户应用时,对于这一点还是需要注意的。 关注一下,空了慢慢看! 我去,还的确是 FSL_TICS_ZP 发表于 2014-12-29 08:50
是的,所以客户应用时,对于这一点还是需要注意的。
谢谢提醒 。 FSL_TICS_ZP 发表于 2014-12-29 08:48
这说明你的中断函数与中断向量没有对应起来,你再仔细检查一下吧!
那个有检查过的了,我发现是ADFIFO那段初始化导致的,我用循环外的初始化就正常。 Ray______ 发表于 2014-12-29 14:50
那个有检查过的了,我发现是ADFIFO那段初始化导致的,我用循环外的初始化就正常。 ...
找到原因就好! 想要板子下载 昨晚自己建工程也是点不亮,后来把BUSOUT禁止了就可以了 没示波器,BUSOUT输出的是什么呢。如果是方波,灯应该会亮才对 ijlc1314 发表于 2014-12-30 12:13
没示波器,BUSOUT输出的是什么呢。如果是方波,灯应该会亮才对
请参考此贴文章。
http://www.amobbs.com/thread-5569833-1-1.html?_dsign=2a2786f7 昨天也是奇怪了, LED1_On()点亮不了,还以为灯坏了。
后来下载demo,发现灯好使。 用LED_DriveByFtm()和SET_LED_GREEN(300),可以点亮。
一点一点看代码和用户手册,费了不少时间,才找到原因。
昨天看手册(P473- P475),关于PIT,定时器可以级联,手册里还举了个例子timer1和timer2。
这个timer1,timer2是怎么论的,Ke02不是只有一个timer(PIT)吗? 这个time1,2是指channel1,2?
中间还有个例子(27.5)更是提到time3,更糊涂了。
的确,亲测如此,感觉飞思的时钟种类好多好复杂,有没有对于这一方面的小教程 Ray______ 发表于 2015-1-8 13:08
的确,亲测如此,感觉飞思的时钟种类好多好复杂,有没有对于这一方面的小教程 ...
你是说MCG的时钟模式配置吗? FSL_TICS_ZP 发表于 2015-1-8 14:52
你是说MCG的时钟模式配置吗?
不知怎么表达,现在都是基于库开发,看到里面一些时钟分配,有MCG,有BUS,有FLASH~有点混乱 Ray______ 发表于 2015-1-8 15:04
不知怎么表达,现在都是基于库开发,看到里面一些时钟分配,有MCG,有BUS,有FLASH~有点混乱 ...
请参考Kinetis 系统时钟经验分享,链接如下
http://www.amobbs.com/thread-5557128-1-1.html?_dsign=15c6744f
如果复杂那他可能就强大了...... 都没注意,楼主说了才注意到。
页:
[1]