在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
本帖最后由 zhjb1 于 2016-7-19 08:53 编辑
按照以前的GPIO、PIT的测试方法,总算可以将ADC输出显示到LCD了。
在改名的ioCar.c中加入#include "fsl_adc16.h"
在ioInit()中添加了: //Initial ADC GPIO PTB2, ADC1_SE12
PORT_SetPinMux(PORTB,2U,kPORT_PinDisabledOrAnalog);
在board.h添加了:
//Definitions ADC0 //PTB2, ADC0_SE12,ADC0_SE13
#define DEMO_ADC16_BASE ADC0
#define DEMO_ADC16_CHANNEL_GROUP 0U
#define DEMO_ADC16_USER_CHANNEL 12U
将adc16_polling.c中的ADC初始化拷贝到main中
将获得ADC数据的PRINTF赋值到adcAvl从LCD显示出来,至此,LCD就可以显示采样数据了。范围是0~4095[12位ADC],为了连续自动采样,将原来获得按键的代码去掉,添加了printf("");语句[此语句会产生警告,但可以使用完成触发],照片如下:SPD后的数值为t计数,最大到200后清除。
如法炮制,将LPTMR也复制到ioCar.c中,lptmr的时间为20mS中断1次,tip位10mS中断1次;lptmr诊断程序中增加了t计数器;tip中断程序中为js计数器,两者都显示在LCD上,并且以t计数到200——4秒控制3色LED闪烁一次。
实验出现的问题是:如果想两路ADC,设置为PTB2、PTB3分别对应ADC0_SE12、ADC0_SE13,但只有一个口的数据可以读出,在#define DEMO_ADC16_USER_CHANNEL 12U定义中增加了13U成为:#define DEMO_ADC16_USER_CHANNEL 12U,13U
实际运行中那个在前测出的就是那个。如果采用如下语句:
PRINTF(" adcVal: %d value: %d",ADC16_GetChannelConversionValue(DEMO_ADC16_BASE,DEMO_ADC16_CHANNEL_GROUP));
输出的结果在PC串口看到的是:adcVal: 2002 value: 537067496
第二个数永远是537067496,无法理解作为Group读取的数据是这样——实际上用过多种方法,都无法读出13U的ADC数值
希望高手帮忙提出思路,先谢谢。
|
-
LCD显示ADC
|