Cypress单片机 CY8C4147AZI-S475频率捕获实验

该实验通过新建工程,添加输入引脚、TimerCounter、UART组件,配置组件参数来实现对外部PWM信号频率和占空比的检测。在代码中,利用Timer读取高电平和低电平持续时间,计算周期和频率。然而,实验存在上电初始值问题、中断PWM信号时的随机值以及采集频率范围限制。作者指出应寻求更好的中断方式来优化PWM信号采集。
摘要由CSDN通过智能技术生成

PWM捕获实验:用于检测外部PWM信号的频率与占空比

1.新建一个工程

根据开发板芯片型号新建一个工程,命名为Capture;
新建工程

2.在原理图中添加组件

首先添加一个引脚,用于外部PWM信号的输入;然后添加两个TimerCounter,分别用于记录单位周期内高电平持续时间与低电平持续时间;给TimerCounter添加合适的时钟Clock2;添加一个串口UART组件,用于打印数据;

添加组件

3.配置组件

3.1配置UART组件

UART组件

3.2分别配置Timer1和Timer2的属性

     配置基本相同,除了reload与capture的触发方式不同;

timer1配置
Time2配置

3.3 Timer1与Timer2的时钟配置

	两这的时钟源必须一致,此时钟的配置直接影响PWM信号采集的范围与精度;
	假设是时钟源配置为f,则最大捕获周期T与最小捕获周期t分别如下:
		T = 65525/f+65535/f.    
         t=1/f+1/f

Clock2时钟源配置

4.绑定MCU引脚

绑定芯片引脚

5.生成代码&移植

int main(void)
{
    char snum[50]={0};
    uint32_t highCaptureCount=0;
    uint32_t lowCaptureCount=0;
    uint32_t    period=0;
    uint32_t    Duty=0;
    CyGlobalIntEnable; /* Enable global interrupts. */

    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
     UART_Start();
    /*start timers*/
    Timer_1_Start();
    Timer_2_Start();
    
    for(;;)
    {
        /* Place your application code here. */
        CyDelay(2000);
        /*Get Capture num*/
        highCaptureCount =   Timer_1_ReadCapture();
        printf("The highCaptureCount : %d\r\n",highCaptureCount);
        lowCaptureCount  =   Timer_2_ReadCapture();
         printf("The lowCaptureCount : %d\r\n",lowCaptureCount);
        /*Period*/
        period=highCaptureCount+lowCaptureCount;
        printf("The period : %d\r\n",period);
        /*frequence count*/
        Capture_Fre= CAPTURECLOCK / period;
        Duty=(100*highCaptureCount/period);
        sprintf(snum,"\r\n Capture Frequence:%d Hz,Duty=%d\r\n",Capture_Fre,Duty);
        UART_UartPutString(snum);
        //printf("The function id starting : %d\r\n",666);
       // CyDelay(500);
    }
}



6.实验结果:

实验结果

7.总结

这样设置后就可以准确的测量出外部的PWM信号频率与占空比;
但是存在一下问题:
第一:一开始上电时,IO口并没有给定PWM信号,但是highCaptureCount与lowCaptureCount均为65535,最大值;
第二:采集过程中突然中断PWM信号,此时读到的highCaptureCount与lowCaptureCount是一个随机值,频率也为随机值;
第三:采集到的频率范围与CLOCK2的设置有关,对于几Hz与几KHz,并不能完全兼顾;
应该有更好的方式来采集PWM信号的频率与脉宽,最好中断形式;目前还在探索中;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值