1MHz:
8MHz:
12MHz:
20MHz:
输出的是MCLK,用的是F5529官方例程的库.
#include <msp430.h>
#include "F5xx_F6xx_Core_Lib/HAL_PMM.h"
#include "F5xx_F6xx_Core_Lib/HAL_UCS.h"
int main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW+WDTHOLD;
SetVCore(PMMCOREV_3);
P1DIR |= BIT1;
P1DIR |= BIT0;
P1SEL |= BIT0;
P3DIR |= BIT4;
P3SEL |= BIT4;
Init_FLL_Settle(20000, 610);
while(1)
{
P1OUT ^= BIT1; // Toggle P1.1
__delay_cycles(600000); // Delay
}
}
Triton Zhang:
你用2M采样率去采样8M,20M的频率?
根据采样定律你的采样率至少要是信号的2倍.
DeDeBug:
回复 Triton Zhang:
2M是采样深度,最大单通道48M采样率,显示是24M采样率(为实际采样率).
而且就算2M采样率不可能采到12M吧.
DeDeBug:
回复 Bruce Wei:
UcsInit 是怎么回事.
DeDeBug:
回复 Bruce Wei:
我有外部ACLK,32.768kHz,怎么参考这个来校准,会不会好一些.
Triton Zhang:
回复 DeDeBug:
你用一个好点的示波器在测试下呢?F55XX的的FLL的两个间隔周期能做到10%的误差。
楼上那个UCSINIT是用来设置FLL到目标频率的。那个函数是用来校准目标频率精度的。
你的问题是一个频率的波形中,两个相邻的周期相差较大。
DeDeBug:
回复 Triton Zhang:
用CX-117A晶振测试仪显示20.057MHz 114ppm,这样是不是已经超出系统频率,会不会有点什么问题.还是要把UCSCTL2 = FLLD_1 + 610中的610改小?走定时器好像有点担心.特别是系统异常复位,但是外部跑高速设备又麻烦.
(609+1)*32768Hz=19.988480MHz
(610+1)*32768Hz=20.021248MHz