历史上的今天
返回首页

历史上的今天

今天是:2024年10月08日(星期二)

正在发生

2018年10月08日 | stm32PWM输入模式测量脉冲速度和占空比

2018-10-08 来源:eefocus

一、概念理解

PWM输入捕获模式是输入捕获模式的特例。

1. 每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。且IC1 IC2一组,IC3 IC4一组。并且可是设置管脚和寄存器的对应关系。

2. 同一个TIx输入映射了两个ICx信号。

3. 这两个ICx信号分别在相反的极性边沿有效。

4. 两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。

5. 当触发信号来临时,被设置成触发输入信号的捕获寄存器,捕获“一个PWM周期(即连续的两个上升沿或下降沿)”,它等于包含TIM

时钟周期的个数(即捕获寄存器中捕获的为TIM的计数个数n)。

6. 同样另一个捕获通道捕获触发信号和下一个相反极性的边沿信号的计数个数m,即(即高电平的周期或低电平的周期)

7. 由此可以计算出PWM的时钟周期和占空比了

frequency=f(TIM时钟频率)/n。

duty cycle=(高电平计数个数/n),

若m为高电平计数个数,则duty cycle=m/n

若m为高电平计数个数,则duty cycle=(n-m)/n

注:因为计数器为16位,所以一个周期最多技术65535个,所以测得的 最小频率= TIM时钟频率/65535。

二,TIM配置

脉冲信号接入到TIM3_CH1上,定时器内部将TI1映射到IC1,IC2上,当上升沿到来时,将TIM3_CNT清零,等待下降沿到来时,将此时CNT值存入CCR1中(即为占空比),

当下一个上升沿到来时,将此时CNT存入CCR2中(脉冲周期),同时复位CNT。

static void tim3Ch1CapInit()

{

    TIM_ICInitTypeDef TIM_ICInitStructure;

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);        

    TIM_DeInit(TIM3);

    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);

    TIM_TimeBaseStructure.TIM_Period=65535;                    

    TIM_TimeBaseStructure.TIM_Prescaler=35999;                  

    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;  

    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);            

   

    TIM_ICStructInit(&TIM_ICInitStructure);

    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;                    

    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;        

    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

       

    TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;          

    TIM_ICInitStructure.TIM_ICFilter = 0x04;                        

    TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);

    TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);                    

    TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);                  

    TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);    

    TIM_Cmd(TIM3, ENABLE);      

}

三,获取脉冲频率

从TIM3_CCR1中获取占空比,TIM3_CCR2获取周期,此过程由CPU硬件完成

uint16_t DcMotorSpeedGet()

{

    uint32_t temp;

   

    if(!(TIM3->SR & 0x0004)){

        TIM3->SR &= 0xf9f9;

        return 0;

    }

    else

    {

        if(TIM3->CCR2 == 0)

        {

            return 0;

        }

        temp = (uint32_t)2826/(TIM3->CCR2);

        return (uint16_t)temp;

    }

}


推荐阅读

史海拾趣

Greenwich Instruments Ltd公司的发展小趣事

Greenconn Corp自创立之初便致力于连接器技术的研发与创新。在20世纪末,随着电子产品的普及和通讯技术的飞速发展,连接器作为电子设备间的桥梁,其重要性日益凸显。Greenconn Corp凭借其敏锐的市场洞察力和强大的研发实力,成功研发出了一系列高性能、高可靠性的连接器产品,迅速在汽车电子、通信设备等领域占据了一席之地。这些创新产品不仅满足了市场对连接器高质量、高效率的需求,还推动了整个电子行业的发展。

CQR SECURITY公司的发展小趣事

在激烈的市场竞争中,CQR SECURITY公司不断探索创新服务模式。公司推出了基于云计算的安全服务平台,为客户提供更加便捷、高效的安全服务。同时,CQR还加强了对客户需求的深入了解,量身定制安全解决方案,满足客户的个性化需求。这种创新服务模式不仅提升了客户满意度,还为CQR带来了更多的商业机会。

FOX [Fox Electronics]公司的发展小趣事

为了进一步扩大市场份额和增强技术实力,Fox Electronics在近年来进行了多起战略并购和合作。公司通过收购具有核心竞争力的中小型企业,快速获取了新技术、新产品和客户资源。同时,Fox Electronics还与行业内的知名企业和研究机构建立了长期合作关系,共同开展技术研发和市场推广。这些并购与合作不仅加速了公司的业务扩张,还提升了其在全球电子行业的影响力。

Faraday Electronics Inc公司的发展小趣事

在电子通信领域,Faraday Electronics Inc一直以其卓越的技术创新能力著称。公司自创立之初,就专注于研发高性能的通信芯片。经过多年的技术积累,终于在XXXX年成功推出了一款具有划时代意义的5G通信芯片。这款芯片不仅性能卓越,而且功耗极低,一经推出便迅速占领了市场,为公司带来了可观的利润。

ACCUTEK公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,ACCUTEK公司开始将目光投向国际市场。公司积极参加国际电子展会和技术交流活动,与全球多家知名企业建立了合作关系。同时,公司还在海外设立了多个分支机构,以便更好地服务当地客户。这些举措不仅提升了公司的国际影响力,也为公司的长远发展注入了新的活力。

Anaren公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,ACCUTEK公司开始将目光投向国际市场。公司积极参加国际电子展会和技术交流活动,与全球多家知名企业建立了合作关系。同时,公司还在海外设立了多个分支机构,以便更好地服务当地客户。这些举措不仅提升了公司的国际影响力,也为公司的长远发展注入了新的活力。

问答坊 | AI 解惑

哥们今天刚画的16口以太网交换机的原理图(改进过)

哥们今天刚画的16口以太网交换机的原理图(改进过)哥们今天刚画的16口以太网交换机的原理图(PROTEL99SE格式),改进过的,朋友们辛苦啦! [ 本帖最后由 西门 于 2009-5-12 18:50 编辑 ]…

查看全部问答>

华为PCB规范

希望对你有用…

查看全部问答>

只要懂C语言就能轻松玩转Luminary ARM ?

LM3S系列单片机采用的是结构简单、性能出众的ARM Cortex-M3处理器内核。Luminary官方(已被TI收购)免费公开地提供了基于C语言(符合ANSI C标准)的驱动库软件包,并且源代码是公开的。因此用户完全可以摒弃晦涩难懂的汇编语言,也不需要掌握底层寄 ...…

查看全部问答>

【藏书阁】C51 用户手册

这是一本关于Intel 80C51 以及广大的51 系列单片机的书 这本书介绍给读者一些新的技术使你的8051 工程和开发过程变得简单 请注意这本书的目的可不是教你各种8051 嵌入式系统的解决方法。 周立功…

查看全部问答>

想用2262,2272做遥控小车,怎样才能使小车前进的同时转弯?

想用2262,2272做个遥控小车,可这个芯片在同一时段只能有一个端口输出,前进时就不能转弯了,不知道该怎样解决,请大家想想,给点思路,用单片机控制也行。…

查看全部问答>

请教如何在Win CE 下开发Driver【或寻北京兼职人员】

想请教一下如何开发Win CE 下的Dirver。 开发流程,用到的技术,是怎么样子的。 希望能帮忙找点例子和相关的文档。 我这边有个嵌入式的项目,目前准备自学后再做。 也希望能得到嵌入式工程师的帮助,大家一起接下这个单子。 如果有兴趣的可以 ...…

查看全部问答>

GPRS开发扫盲

目前手里有个项目要用到GPRS进行大数据量的传输。因为对这个没什么概念,想请各位扫一下盲。 1. DTU和开发板有什么区别? 2. 我要着手进行开发的话,是买市面上现成的DTU还是开发板进行开发呢?如果是在开发板开发好了以后,市面上的成品能用么? ...…

查看全部问答>

小女子罗玉凤求助-_-!

我把nboot烧写到FLASH的BL0块中,然后把EBOOT烧写到BL2块中,然后通过EBOOT把NK.BIN再下载到FLASH中, 问题一: 那么这个NK.BIN是被EBOOT下载到FLASH哪个地方的呢?是不是代码在EBOOT哪个地方?还是在别的地方?能否告诉下小弟! 问题二: 为什么EBOOT非 ...…

查看全部问答>

捕捉的脉冲可以大于65535么?

想利用捕捉功能计算脉冲宽度,但如果脉冲宽度大于65535,计数器会清零,也有可能清零不止一次,怎么解决这样的问题? 谢谢…

查看全部问答>

LM3S9B92板子少了个作键盘的程序和PC连接

连接之后PC机没有反映,驱动怎么装? 各位赐教!谢谢!…

查看全部问答>