查看: 2929|回复: 5

[分享] 【YL-KL26Z试用】+以YL-KL26Z为平台研制数字电路实验平台(3)

[复制链接]
  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7125
    最后登录
    2023-4-20
    发表于 2015-4-9 19:26:32 | 显示全部楼层 |阅读模式
    当然,为了便于调整频率,最好是添加数码显示功能。至于手动脉冲功能,可通过GPIO中的键入程序来改造,每按一次键就产生一个由高到底的电平跳变。
    此外,用示例程序Demo_LETMR_Interrupt也可以改造成,方法是用mkl_lptmr.c中的LPTMR0_CMR作为脉冲频率的调整变量。
    void  lptmrInit (void)
    {
        SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;       /*打开lptmr时钟    */
        LPTMR0_CSR |= LPTMR_CSR_TCF_MASK | LPTMR_CSR_TIE_MASK;               /* 清除标志位 开启中断        */
        LPTMR0_PSR |= LPTMR_PSR_PCS(1);             /* 使用1KHz时钟源 */
        LPTMR0_CMR = n;                              /* 默认2分频 n=500即为1s */
        LPTMR0_CSR |= LPTMR_CSR_TEN_MASK;         /* 开启LPTMR     */
    }
    n=500时,输出频率=1KHz时钟源/2分频*500=1hz
    n=5000时,输出频率=0.1 hz;
    n=5时,输出频率=100 hz
    5.译码器功能,它是视输入的情况,按照已规定好的对应关系来确定输出对应值。
    以3-8译码器74HC138为例,它有3个输入端ABC8个输出端Y0~Y7
    其程序结构如下:
    void ledSet()
    {
    INT8U ucMode;
        // Y0~Y7皆为“1”;
        // ucMode=C*4+B*2+A;
        switch(ucMode) {
            case 0: {
               //  Y0=0
                break;
            }
            case 1: {
                //  Y1=0
                break;
            }
            case 2: {
                //  Y2=0
                break;
            }
            case 3: {
                //  Y3=0
                break;
            }
            case 4: {
                //  Y4=0
                break;
            }
            case 5: {
                //  Y5=0
                break;
            }
            case 6: {
                //  Y6=0
                break;
            }
            case 7: {
                //  Y7=0
                break;
            }
        }
    }
    由于开发板上不能直接提供3个按键和8LED指示灯来模拟完成该实验,故这里只给出一个程序的结构以供参考。
    6.计数器与频率计的实现,由于示例程序中侧重于定时功能,没涉及脉冲计数,所以需要参考其它资料编写,相关内容如下:
    u16 LPT_Ctr;    // 用于存储脉冲数
    int main(void)
    {
            // 开启脉冲计数
            LPTM_Init();  // LPTM初始化 使用通道2
            // 开启PIT中断
            PIT_Init(1000);  // 开启一个1000MS中断 用于脉冲计数
            while(1)
      {
            // 显示LPT_Ctr 的计数值   
            }
    }
    //函数名:LPTM_Init
    //功  能:LPTM模块初始化
    //说  明:channel  计数端口号LPTM_CH2PORTC5
    //         计数范围为0~65535
    void LPTM_Init()
    {
    //开启模块时钟
    SIM->SCGC5|=SIM_SCGC5_PORTC_MASK;            //开启port口的模块时钟
    PORTC->PCR[5]&=~(PORT_PCR_MUX_MASK);
    PORTC->PCR[5]|=PORT_PCR_MUX(4);                 //配置io口为LPTM通道
    PORTC->PCR[5]|=PORT_PCR_PE_MASK;
    PORTC->PCR[5]&=~(PORT_PCR_PS_MASK);           //下拉电阻配置   
    SIM->SCGC5|=SIM_SCGC5_LPTIMER_MASK;                 //开启LPTM模块时钟
    LPTMR0->CSR|=LPTMR_CSR_TPS(Ch);                //选择输入通道
    LPTMR0->CSR&=~LPTMR_CSR_TPP_MASK;           //设置上升沿触发计数
    LPTMR0->CSR|=LPTMR_CSR_TFC_MASK;             //设置在自由运行模式下
    LPTMR0->CSR|=LPTMR_CSR_TMS_MASK;                       // 设置为计数模式
    LPTMR0->PSR|=LPTMR_PSR_PBYP_MASK;            // 忽略分频及滤波         LPTMR0->CSR|=LPTMR_CSR_TEN_MASK;             // 开启模块
    }
    //函数名:LPTM_Counter
    //功  能:LPTM模块计数器的计数值获取
    //说  明: 返回值为十六位的计数值
    u16 LPTM_Counter(void)
    {
            u16 ch;
            ch=(LPTMR0->CNR);                               //读取计数器的计数值
            LPTMR0->CSR&=~(LPTMR_CSR_TEN_MASK);       //关闭模块
            LPTMR0->CSR|=LPTMR_CSR_TEN_MASK;                         //开启模块,计数器清零
            return(ch);
    }
    // 函数名:PIT_Init
    // time   设置定时器的时间,单位ms
    void PIT_Init(u32 time)
    {         
            GetProcessorInfo();  //计算系统时钟
            time=time*(PInfo.BusClock/1000);
            //开始定时器配置
            SIM->SCGC6|=SIM_SCGC6_PIT_MASK;      //开启pit模块时钟
            PIT->MCR&=~PIT_MCR_MDIS_MASK;       //开启pit模块
            PIT->MCR|=PIT_MCR_FRZ_MASK;          //开启pit模块
            PIT->CHANNEL[pit].LDVAL=(uint32_t)time;   //设置延时时间
        NVIC_EnableIRQ(PIT0_IRQn);break;     //开启内核接受中断
            PIT->CHANNEL[pit].TFLG|=PIT_TFLG_TIF_MASK;  //清除标志位
            PIT->CHANNEL[pit].TCTRL|=(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//开启定时器及中断
    }
    //函数名:PIT0_IRQHandler
    //功  能:PIT中断通道0
    void PIT0_IRQHandler(void)
    {
            PIT->CHANNEL[0].TFLG|=PIT_TFLG_TIF_MASK;//清标志位
            LPT_Ctr=LPTM_Counter();
    }
    计数器与频率计的主要区别就是一个有计数时间的限制,而另一个却不用。当计数脉冲为单位时基脉冲时,通过进制处理就可形成计时器。
    7.串行通讯,在YL-KL26Z开发板上是以虚拟串口的方式由USB口来实现串行通讯的。借助串行通讯可在一定情况下替代数码显示缺失的不足,它是一种重要的程序调试和观察手段。此外,串行通讯也是连接上、下位机的桥梁,有了它就为自动测评提供了基础,通过读取下位机的实验数据就可分析出实验的成绩,为输出成绩报告予以有力的支持。
    当然该实验平台的功能不仅局限于此,因为YL-KL26Z开发板的模拟信号处理能力还没有很好的使用,发挥16位ADC和12位DAC的作用,则可以将实验平台的功能延伸到模拟电路实验,从而形成一个综合型的实验平台。
    当然YL-KL26Z开发板的潜力还很强大,还需近一步向前探索,以实现多媒体化的操作平台。
    回复

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13266
    最后登录
    2019-1-27
    发表于 2015-4-13 11:25:20 | 显示全部楼层
    楼主配点图片展示?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7125
    最后登录
    2023-4-20
     楼主| 发表于 2015-4-14 10:27:15 | 显示全部楼层
    好,时间拍一下.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-5-13 17:16:22 | 显示全部楼层
       非常感谢你关于Kinetis的经验分享!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7125
    最后登录
    2023-4-20
     楼主| 发表于 2015-5-14 22:57:56 | 显示全部楼层
    FSL_TICS_ZP 发表于 2015-5-13 17:16
    非常感谢你关于Kinetis的经验分享!

    谢谢给予的认可。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16860
    最后登录
    1970-1-1
    发表于 2015-8-4 23:29:26 | 显示全部楼层
    按顺序学习
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-4 06:13 , Processed in 0.097718 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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