查看: 2555|回复: 2

[原创] 【疯狂的四驱车】实验三 ADC测试

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-7-19 08:50:59 | 显示全部楼层 |阅读模式
    本帖最后由 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

    LCD显示ADC
    回复

    使用道具 举报

  • TA的每日心情

    2019-9-17 13:22
  • 签到天数: 238 天

    连续签到: 1 天

    [LV.7]常住居民III

    30

    主题

    905

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    2251
    最后登录
    2024-10-8
    发表于 2016-7-19 11:23:34 | 显示全部楼层
    建议你把开发环境,思路介绍下。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-7-19 12:03:00 | 显示全部楼层
    very333 发表于 2016-7-19 11:23
    建议你把开发环境,思路介绍下。

    开发环境:IAR7.5.01板载J LINK仿真和下载
    SDK:2.0
    板子:FRDM_K64F
    思路在最先的文档中已介绍过,粘贴过来:
    K64小车计划
    一、实验1~n
    实验1~n仅仅作为测试K64F板子功能实验,需要完成的有:
    1. 板子不用的I/O口实现LCD驱动显示,初步设定为PTB2,3,10,11这4个I/O口实现模拟SPI。
    2. 实现PIT定时中断,初定0.01S为1个周期,实现将来的所有控制和测试,其周期可以在0.1uS~10uS之间。
    3. 1路外部计数,检测小车速度,时间间隔为PIT间隔——如果采用闭环速度控制,否则仅显示大致速度。
    4. 1~2路PWM,实现小车变速控制。
    5. 不少于3路I/O电平采样,实现IR避障测试。
    6. 实现不少于2路单端ADC测试,不低于12位ADC。作为学习,可以先用16位ADC。ADC用来测试:菲涅耳透镜两路测试人体[也可能是超高频雷达测试人体],判断如何跟踪。
    7. 不少于1路SPI用于wifi模块,实现无线测控小车。
    二、难点
    1~5已经实现过,没有难点,只要能准确实验找出对应的I/O口以及控制,编制模块就Ok了。
    6,7首次做此类实验难点不少,主要体现在菲涅耳透镜或超高频雷达测试运动人体并且实现跟踪,还需要IR避障——保持距离——需要策略和算法实现,目前仅仅在策划阶段,只能随遇而安。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-18 18:30 , Processed in 0.086095 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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