查看: 3795|回复: 4

[原创] 【KL27 mini Board开发】3.SDK之AD转换

[复制链接]
  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    110

    主题

    3404

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    9004
    最后登录
    2025-7-20
    发表于 2016-3-30 22:37:37 | 显示全部楼层 |阅读模式
    本帖最后由 jundao721 于 2016-3-30 22:41 编辑

    KL27 mini板子上有个可调电阻接AD端口,可以练习一下AD转换。A0口连接到A023端口,即AD0的23通道。知道这些就足够了,再对照datasheet熟悉一下这款芯片的AD,然后开始调试了。还是一贯作风,配置环境,编译没错误,开始写AD的代码。首先比原来的文件需要加入这两个头文件,一个是AD驱动文件,一个和外部参考电压有关系。
    1. #include "fsl_adc16_driver.h"
    2. #include "fsl_pmc_hal.h"
    复制代码
    宏定义通道端口:


    1. #define ADC_CHN         (kAdc16Chn23) //ADC channel
    复制代码
    在main函数中配置AD
    1. ADC16_DRV_StructInitUserConfigDefault(&adcUserConfig);
    2. #if  (FSL_FEATURE_ADC16_MAX_RESOLUTION >=16)
    3.      adcUserConfig.resolution = kAdc16ResolutionBitOf16;
    4. #endif        
    5.         
    6. #if BOARD_ADC_USE_ALT_VREF
    7.           adcUserConfig.refVoltSrc = kAdc16RefVoltSrcOfValt;
    8. #endif
    9.         ADC16_DRV_Init(0,&adcUserConfig);
    复制代码
    然后就是在while循环中调用转换函数,下面是转换函数的配置和转换代码。将Value值放入watch1窗口中,转动电电位器,观察AD转换值的变化。
    1. adc16_chn_config_t  adcChnConfig;
    2. #if FSL_FEATURE_ADC16_HAS_HW_AVERAGE
    3.         adc16_hw_average_config_t userHwAverageConfig;
    4.         #endif
    5.         pmc_bandgap_buffer_config_t  pmcBandgapConfig = {
    6.           .enable = true,
    7. #if FSL_FEATURE_PMC_HAS_BGEN
    8.                 .enableInLowPower = false,
    9. #endif
    10. #if FSL_FEATURE_PMC_HAS_BGBDS
    11.     .driver = kPmcBandgapBufferDriveLow,
    12. #endif               
    13.         };
    14. //  uint32_t Value =0;
    15. //  uint32_t vdd =0;

    16. #if FSL_FEATURE_ADC16_HAS_CALIBRATION
    17.            //auto calibration
    18.           adc16_calibration_param_t  adcCalibrationParam;
    19.           ADC16_DRV_GetAutoCalibrationParam(0,&adcCalibrationParam);
    20.           ADC16_DRV_SetCalibrationParam(0,&adcCalibrationParam);
    21. #endif
    22.         
    23.          //Enable reference voltage
    24.         PMC_HAL_BandgapBufferConfig(PMC_BASE_PTR,&pmcBandgapConfig);

    25. #if FSL_FEATURE_ADC16_HAS_HW_AVERAGE
    26.          // Use hardware average to increase stability of the measurement.
    27.         userHwAverageConfig.hwAverageEnable = true;
    28.         userHwAverageConfig.hwAverageCountMode= kAdc16HwAverageCountOf32;
    29.         ADC16_DRV_ConfigHwAverage(0,&userHwAverageConfig);
    30. #endif
    31.         
    32.    // Configure the conversion channel
    33.     // differential and interrupt mode disable.
    34. adcChnConfig.chnIdx = (adc16_chn_t)ADC_CHN;
    35. #if FSL_FEATURE_ADC16_HAS_DIFF_MODE
    36.    adcChnConfig.diffConvEnable  = false;
    37. #endif
    38. adcChnConfig.convCompletedIntEnable = false;
    39. ADC16_DRV_ConfigConvChn(0,0,&adcChnConfig);

    40. // Wait for the conversion to be done
    41. ADC16_DRV_WaitConvDone(0,0);


    42. // Get current ADC BANDGAP value and format it.
    43. Value = ADC16_DRV_GetConvValueSigned(0,0);

    44.     // Calculates bandgapValue in 16bit resolution
    45.     // from 12bit resolution to calibrate.
    46. #if (FSL_FEATURE_ADC16_MAX_RESOLUTION<16)
    47.    Value = Value <<4;
    48. #endif

    49. // ADC stop conversion
    50. ADC16_DRV_PauseConv(0,0);
    复制代码
    我比较赞成自己敲一遍代码,会有很多和看代码不一样的收获,很多不明白的忽然就明白了,这是我的感觉。
    AD.png

    评分

    参与人数 1NXP金币 +15 收起 理由
    小七 + 15 打赏!

    查看全部评分

    加油哦
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2016-3-31 09:07:37 | 显示全部楼层
    thanks for your share. 0.png 1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13127
    最后登录
    2019-1-27
    发表于 2016-3-31 09:23:05 | 显示全部楼层

    开始用英语交流了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    110

    主题

    3404

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    9004
    最后登录
    2025-7-20
     楼主| 发表于 2016-3-31 09:53:23 | 显示全部楼层

    My pleasure! We always learn each other.
    加油哦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40

    主题

    500

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1089
    最后登录
    2025-1-13
    发表于 2016-3-31 12:45:36 | 显示全部楼层
    写的挺详细的!!!
    xingying75@gmail.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 23:29 , Processed in 0.095939 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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