zoukankan      html  css  js  c++  java
  • 定时器67事——捕获比较通道

    1、最后老师说的PWM,上升沿比较、下降沿比较时,都是输入一个固定的值(?)

    上升沿比较时,小于n,则为高电平;下降沿比较时,大于n,则为高电平,追求某种统一。

    2、有4个不同的通道,比如说第一个通道可以设置为上升沿技术,第二个通道可以设置为上升沿和下降沿都计数,这样就可以通过第一个通道的值知道周期,通过第二个通道的值知道脉宽。

    3、我们调节ARR可以改变PWM的周期,改变比较的值可以改变PWM的脉宽。{那什么与相位有关系呢?}

    4、捕获、比较在大的电路中处于什么样的位置?捕获和比较为何不能同时启用,这个存在的意义是什么?

    5、上节课上0416的PPT中包含捕获/比较寄存器的部分:(有助于理解比较/捕获寄存器在整个定时器上的功能和用法)

    • 在用结构体来确定寄存器位置的阶段,有两个比较/捕获模式寄存器CCMR1,CCMR2
    • 在用结构体来确定寄存器位置的阶段,有四个比较/捕获寄存器CCR1,CCR2,CCR3,CCR4
    • 在状态寄存器SR中,有捕获/比较1234中断的标志位:TIM_SR_bCC1IF到TIM_SR_bCC4IF
    • 在状态寄存器SR中,有捕获/比较1234过捕获的标志位:TIM_SR_bCC1OF到TIM_SR_bCC4OF
    • 在控制寄存器CR2中,有TIM_CR2_bCCDS来进行选择{什么选择}    TIM_CR2_bMMS来进行主模式选择{什么叫做主模式选择?} 
    • 在事件发生寄存器EGR中,可设置更新事件、触发事件、和进行捕获通道的选择{更新、触发是我们上节课中了解到的更新事件和触发事件吗} 
    • 捕获/比较使能寄存器CCER,可在其中选择输出使能和输出极性

    另一个老师的扫盲PPT上的知识点

    1、输入捕获模式的作用:可以用来测量脉冲宽度或者测量频率,对应了上面的第2点。

    2、比较输出模式的作用:控制一个输出波形,或者指示一段给定的时间已经到了。

    3、

    4、

    PPT和笔记上的内容:

    1、每个捕获/比较通道由一下部分组成:

    • 一个捕获/比较寄存器(预装载和影子寄存器){这个寄存器是用来放什么值的?}
    • 一个用于捕获的输入段(带有数字滤波器、多路复用和预分频){这个在图里是如何表示的}
    • 一个输出段(带有比较器和输出控制)

    {这张图是一个用于捕获的输入段的电路图吗?}

    可以通过改变上面显示的一些寄存器的值,设置滤波器和捕获预分频。

    先滤波,再通过代极性选择的边沿检测器,再预分频,最后存入捕获寄存器ICxPS。

    2、捕获/比较通道的主电路{这个电路和上面电路的区别和联系?}

    {自己的理解:最左边是一个信号选择电路,选择合适的信号后输入给捕获通道。

    最右边的一堆电路是一个比较输出的模式控制电路。

    最中间的是最核心的部分:分为读和写两路

    • 读的一路是从经过捕获电路后进入影子寄存器再存入预装载寄存器,最后经过外设接口,传到系统总线上。
    • 写的一路是从总线上传到预装载寄存器,再到影子寄存器,最后经过比较器输出{总线传来的是什么东西?比较器为何只在大于和等于两类情况下有输出?compare_transfer里面传入的到底是个什么东西?}

    }

     捕获/比较模块由一个预装载寄存器和一个影子寄存器构成,读写总是访问预装载寄存器。

    • 在捕获模式下,捕获实际是在影子寄存器上进行,其内容复制到预装载寄存器;
    • 在比较模式下,预装载寄存器的内容复制到影子寄存器,它用于与计数器比较。

    设置TIMx_EGR寄存器中相应的CCxG位,可以通过软件产生出入捕获中断和/或DMA请求。

    3、输入捕获模式

    • 在输出捕获模式 下,在相应的ICx信号检测到跳变之后,捕获/比较寄存器CCRx用来锁存计数器的值(这也就是为何这四个通道要和计数器连在一起的原因)
    • 当捕获发生的时候,相应的CCxIF标志(在SR寄存器里面)置位
    • 如果还设置了使能的话,还可以发送中断和DMA请求
    • 当我们读取保存在CCRx中的值的话,CCxIF就会被清楚,或者直接用软件写0清除
    • 如果在发生一个捕获时,CCxIF标志位已经为高了,此时就会讲SR中的另外一个标志位CCxOF置高。
    • 所以,正常使用时要及时读取到CCRx里面的数值。

    4、捕获/比较模式寄存器CCMR1:2

    2个16位寄存器,低八位是CC1{CCMR1}和CC3的设置;高八位是CC2{CCMR1}和CC4的设置。

    {这里的输出比较快速使能是个什么?输出比较模式是个什么?比较清零使能是个什么?}

    {这个13是什么鬼?}

    5、捕获比较使能寄存器CCER

    {N是反向了吗?}   同样有两个16位的寄存器,第一个寄存器是关于CC1(低八位),CC2(高八位)的设置;第二个寄存器是关于CC3和CC4的设置。

    6、DMA/中断使能寄存器DIER

    这些个到底是干啥用的?

     7、关于输入捕获模式的步骤及其他一些说明

    • CCMR1里的输入选择和滤波器的设置:

    eg当TI1上升时将计数器的值捕获到CCR1

    • CCR1必须连接到TI1输入,为此CCMR1寄存器中CC1S位组写为01(当CC1S不为00,通道就设置为输入了,CCR1寄存器就变为只读的{意思是:当CC1S为00时,CCR1可写吗?CCR1里面是些什么东西}
    • 写入CCMRx寄存器中ICxF位,表示滤波器持续时间{我不写这个值的话会咋样,默认值是个啥}
    • 对于这里的滤波器的理解:有一个采样频率,在N次连续采样都为高电平时,才确认是捕获到了一个高电平。如采样频率是18MHz,N=6,所以频率大于3MHz的信号就会被滤除。
    • 由于我们在捕获的时候是对输入信号进行离散取样,如果信号不稳定,取到的5个点中有0有1,我们必须编程使得滤波器持续时间长于这5个时钟周期(应该也就是是说要大于5的意思),可以在检测新的电平时,用最快的采样频率fDTS,如果8次连续都是高电平的话,就可以确认跳变。{到底是要放宽选择线还是增大啊?}

    •  在CCER寄存器的CC1P位写入0来选择TI1通道上的有效跳变沿。
    • 如果希望对每个有效跳变进行捕获,可以禁用预分频器,就是在CCMR1寄存器中的IC1PS位组写入00。
    • 通过设置CCER寄存器中的CC1E位,可以打开对计数器进行捕获的使能。
    • 如果需要的话,可以设置中断使能寄存器中的CC1IE位,使能相应的中断请求;可以设置中断使能寄存器中的CC1DE位,使能DMA请求。
    • 当输入捕获发生时,CCR1寄存器得到有效跳变发生时计数器的值,这时就置为CC1F标志,如果出现至少两次相继的捕获而标志为清除时,则置位CC1OF标志。
    • 按照CC1IE位产生中断,CC1DE位产生DMA请求。
    • 为了处理过捕获,推荐在读取过捕获标志之前读取数据。

    8、PWM input mode脉宽调制输入模式

    是利用微处理器的数字输出对模拟电路进行控制的一种非常有效的技术,简单来说就是对脉冲款对和频率的控制。

    这个模式是输入捕获模式的特例,和其他模式的区别为以下几个部分

    • 两个ICx信号映射到相同的TIx输入{意思是同一个信号接到两个不同的channel上面吗?}
    • 这两个ICx信号由相反极性的边沿激活
    • 两个TIxFP信号之一选作触发器输入,从模式控制器配置为复位模式。{???}

    例题:测量施加在TI1上的PWM周期(在CCR1寄存器)和脉宽(在CCR2寄存器)

    • 为CCR1选择激活输入——在CCMR1寄存器中CC1S位组写入01(选择TI1){这个是怎么进行选择的}
    • 为TI1FP1选择激活极性(用于CCR1捕获和计数器清除)——CCER寄存器中的CC1P位写入0(上升沿激活)
    • 为CCR2选择激活输入——在CCMR1寄存器中CC2S位组写入10(选择TI1)
    • 为TI1FP2选择激活极性(用于CCR2捕获和计数器清除)——CCER寄存器中的CC2P位写入1(下降沿激活)
    • 选择有效触发器输入——SMCR寄存器TS位组写入101(选择TI1FP1){TI1FP2为啥不用选}
    • 配置从模式控制器为复位模式——SMCR寄存器中的SMS位组写入100{什么东西}
    • 使能捕获——CCER寄存器中的CC1E和 CC2E写入1

     9、输出比较模式    

    用于控制输出波形或指示时间周期已经终结,当发现捕获/比较寄存器与计数器之间出现匹配时没执行输出比较功能。

    • 将相应的输出引脚赋值为可编程的值{也就是根据自己的需要选择对于的模式}——这个值有输出比较模式CCMR寄存器中的OCxM位组和输出极性CCER寄存器中的CCxP位指定
    • 匹配时引脚可以——保持其电平OCxM=000;置为活动=001;不活动OCxM=010;翻转OCxM=011  {这里的活动、非活动是什么意思}    
    • 在状态寄存器中置位标志(SR寄存器中CCxIF位) {这置位说明已经计数了吗?}        
    • 如果某些中断的使能打开了的话,就产生了该种中断。(对于DMA也同理)
    • CCMRx寄存器中的OCxPE位,可以置为0或者1,表面CCRx寄存器不用还是用预装载寄存器(预装载寄存器只有在更新事件发生时才会进入影子寄存器)

     

    10、脉宽调制方式

      ARR确定周期,CCRx确定脉宽*任务周期*

      

    CCMRx寄存器中OCxM位组写入110(PWM模式1)或111(PWM模式2),每个通道可以独立选择PWM方式
    每个OCx输出一个PWM
    必须使能相应的预装载寄存器和预装载自动重装载寄存器
    OCx的极性是软件可编程的,用CCER寄存器的CCxP位,可编程为高有效或低有效。OCx输出由CCER寄存器的CCxE位使能
    由于预装载寄存器只有在发生更新事件时才传送到影子寄存器,启动定时器之前,必须在EGR寄存器中置位UG位来初始化所有寄存器
  • 相关阅读:
    JavaScript日期处理类库momentjs
    sublime text 2 学习
    node.js代理设置
    使用nodejs将html5 canvas base64编码图片保存为文件
    Sublime Text 2 常用插件介绍
    把silverlight treeview 节点前面的小三角换成自定义的图片
    文件监控
    linux内核中的红黑树代码解析
    static关键字
    红黑树的实现(二)
  • 原文地址:https://www.cnblogs.com/dadidelearning/p/9926299.html
Copyright © 2011-2022 走看看