我在使用MSP430f5172 HPWM的过程中,// SMCLK = MCLK = DCOclock = default DCO; TDCLK(TLV Cal Data)= 64Mhz
也就是我现在我把PWM模块的频率变为了64M,
TD0CCR0 = 581; // PWM Period/2
TD0CCTL1 = OUTMOD_6; // CCR1 toggle/set
TD0CCR1 = TD0CCR0/2; // CCR1 PWM duty cycle
打算输出113.8KHz的频率,发现,我不断变化TD0CCR0的值从581变为576,在变化过程频率基本都没变化,但是当我把TD0CCR0的值变为575时,频率突然变为115KhZ左右了,整个过程我是用示波器查看的,怎么感觉和不是高分辨率一样呢
Bruce Wei:
两个问题请帮确认:
1)楼主手上有没有计数器/频率计,能否使用频率计重新测量一次?
2)另外Timer D的时钟源是怎么获得的?
hua liu:
回复 Bruce Wei:
我们这里没有计数器/频率计,#include "msp430f5172.h"#include "hal_tlv.h"void main(void){ struct s_TLV_Timer_D_Cal_Data * pTD0CAL; // Structure initialized in tlv.h unsigned char bTD0CAL_bytes; WDTCTL = WDTPW + WDTHOLD; // Stop WDT Get_TLV_Info(TLV_TIMER_D_CAL, 0, &bTD0CAL_bytes, (unsigned int **) &pTD0CAL); //Get TimerD0 Cal Values (instance 0) if(bTD0CAL_bytes == 0x0) { while(1); // Loop here } TD0HCTL1 = pTD0CAL->TDH0CTL1_64; // Read the 64Mhz TimerD TLV Data TD0CTL1 |= TDCLKM_1; // Select Hi-res local clock TD0HCTL0 = TDHEN + TDHM_0; // CALEN=0 => free running mode; enable Hi-res mode P1SEL |= BIT6 + BIT7; // P1.6,7 option select P1DIR |= BIT6 + BIT7; // P1.6,7 output // P2.0 output P2SEL |= BIT0; // P2.0 options select P2DIR |= BIT0; // P2.0 output TD0CCR0 = 576; // PWM Period/2 TD0CCTL1 = OUTMOD_6; // CCR1 toggle/set TD0CCR1 = TD0CCR0/2; // CCR1 PWM duty cycle TD0CCTL2 = OUTMOD_6; // CCR2 toggle/set TD0CCR2 = TD0CCR0/2; // CCR2 PWM duty cycle TD0CTL0 |= MC_1 + TDCLR; // up-mode, clear TDR, Start timer __bis_SR_register(LPM0_bits + GIE); // Enter LPM0 __no_operation(); // For debugger }其实就是在你们给的例程里面修改的
Bruce Wei:
回复 hua liu:
因为时间有限,只有在必要的时候才会阅读客户的代码。为了提高效率,建议楼主按照TI技术支持工程师引导提出的问题点,参考用户指南进行问题查找。
解释一下两个问题:
1)大多数示波器的频率测量功能,仅仅是示意性质的,精度并不高;建议楼主使用频率计/计数器测量;
2)时钟的频率精度直接和频率基准源相关,建议使用外部的晶体振荡器作为频率基准源;
hua liu:
回复 Bruce Wei:
我看了用户手册,对照了你们给的历程,实在没办法了才找你们帮忙解决的,说句真心话,也许我愚钝,但是真的没办法解决,我对比过用C2000跑60M的主频去看示波器的频率,基本感觉示波器是没有问题的
Liu Kissn:
回复 Bruce Wei:
我也遇到同样的问题:
使用F5132的TimerD做高精度的PWM输出,使用Freerunning/regulator 模式,TimerD的时钟频率为256M,CCR0 = 255,当CCR1 <16 or CCR1 > 247时,PWM波无输出,怎么解决的?????
Liu Kissn:
回复 Liu Kissn:
Hi-res对CCRx的值是有限制的,即PWM波不可能到达100% 或 0%,只能无限接近
Liu Kissn:
回复 Liu Kissn:
已找到答案