查看: 2250|回复: 1

[分享] 恩智浦MAPS四色板体验(二)

[复制链接]
  • TA的每日心情
    奋斗
    2017-2-13 08:29
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    531

    主题

    2048

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    210
    最后登录
    2018-8-14
    发表于 2016-6-29 09:47:47 | 显示全部楼层 |阅读模式
    实验一

    实验目标:利用板载电位器控制LED的亮度变化。


    实验原理:


    (1)FTM(弹性定时器模块)是一个支持输入捕捉、输出比较、产生可用来控制电机的PWM信号和电源管理应用的通道定时器。
    每一个通道都可配置为输入捕捉、输出比较或者边缘对齐的PWM模式。

    (2)K60的ADC模块支持差分模拟输入和单端输入模式。其中单端支持16位、12位、10位以及8位模式。

    知识点1:ADC部分
    (1)SIM_SCGC6使能ADC的时钟:这里选择第27位ADC0=1


    (2)配置ADC配置寄存器(CFG)


    7.ADLPC: 低功耗选择;
    6-5.ADIV: 时钟分频选择,1/2/4/8分频;
    4.ADLSMP:采样时间配置;
    3-2.MODE:转换模式选择,单端或差分,不同的精度选择
    1-0.ADICLK:输入时钟选择,总线时钟或交替时钟等;
    (3)配置ADC状态和控制寄存器(SC1n)



    7.COCO:转换完成标志
    6.AIEN:中断使能
    5.DIFF:差分输入使能
    4-0.ADCH:输入通道选择
    知识点2:FTM的PWM部分
    (1)状态和控制寄存器(FTMx_SC)



    7.TOF:定时器溢出标志
    6.TOIE:定时器溢出中断使能
    5.CPWMSWM中间对齐选择
    4-3.CLKS:时钟源选择
    2-0.PS:预分频系数选择
    (2)计数器寄存器(FTMx_CNT)



    15-0.COUNT:16位计数器,主要由向上计数和向上向下计数
    (3)通道n控制和状态寄存器(FTMx_CnSC)



      (4)模寄存器(FTMx_MOD)



    实验步骤:
    1.电路图引脚
    飞思卡尔四色板板载两个可调电位器用来模拟ADC输入信号,我们选择其中的RV1来作为信号源:


    另外我们选择PORTA7作为FTM控制输出边缘对齐的PWM波形的引脚。

    2软件编程
    主要分为两个部分,分别是ADC采样可调电位器电压部分和FTM受控制输出PWM波形
    (1)ADC部分
    ADC配置与初始化:采用ADC0通道单端模式,12位分辨率,其他参数采用默认设置
    adc_calibration_param_t MyAdcCalibraitionParam;//calibration parameters
    adc_user_config_t MyAdcUserConfig;//ADC parameters
    adc_state_t MyAdcState;
    volatile int32_t adcValue;//the value we get
    /* Auto calibration.自动校准 */
    ADC_DRV_GetAutoCalibrationParam(HW_ADC0, &MyAdcCalibraitionParam);
    ADC_DRV_SetCalibrationParam(HW_ADC0, &MyAdcCalibraitionParam);
    /* Initialization for interrupt mode.中断模式初始化 */
    ADC_DRV_StructInitUserConfigForOneTimeTriggerMode(&MyAdcUserConfig);//set as one time trigger mode
    MyAdcUserConfig.resolutionMode = kAdcResolutionBitOf12or13;//12位单端分辨率,13位为差分模式
    ADC_DRV_Init(HW_ADC0, &MyAdcUserConfig, &MyAdcState);
    (2)FLM的PWM模式
    配置:
    ftm_pwm_param_t ftmParam = {
    .mode = kFtmEdgeAlignedPWM,//边沿对齐PWM模式
    .edgeMode = kFtmLowTrue,
    .uFrequencyHZ = 240000,
    .uDutyCyclePercent = 50,//占空比
    .uFirstEdgeDelayPercent = 0,
    };
    configure_ftm_pins(BOARD_FTM_INSTANCE);//FTM0通道输出
    ftm_user_config_t ftmInfo;
    memset(&ftmInfo, 0, sizeof(ftmInfo));
    FTM_DRV_Init(BOARD_FTM_INSTANCE, &ftmInfo);//初始化
    (3)主循环
    //获取AD值
    adcValue = getVoltage(0, false, MyAdcUserConfig.resolutionMode);
    //PWM输出
    FTM_DRV_PwmStart(BOARD_FTM_INSTANCE, &ftmParam, BOARD_FTM_CHANNEL);
    OSA_TimeDelay(50); //delay 50ms
    FTM_DRV_PwmStop(BOARD_FTM_INSTANCE, &ftmParam, BOARD_FTM_CHANNEL);
    //AD转换值作为PWM占空比输出
    float a=adcValue;
    float b= a/4095;
    ftmParam.uDutyCyclePercent =(b*100);
    实验现象:
    如下图所示
    (1)RV2电位器调到最小的时候,LD1灯不亮




    (2)RV2逐渐调大至最大值,LD1灯的逐渐变亮




    恩智浦MAPS四色板体验(一)
    https://www.nxpic.org.cn/module/forum/thread-605169-1-1.html
    恩智浦MAPS四色板体验(三)
    https://www.nxpic.org.cn/module/forum/thread-605171-1-1.html

    签到 签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-5-9 08:12
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    34

    主题

    801

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2364
    最后登录
    2021-8-11
    发表于 2016-6-29 13:32:26 | 显示全部楼层
    mark              
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-19 05:06 , Processed in 0.088095 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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