STM32 HSE不稳定频率

STM32 HSE不稳定频率,stm32,sampling,cmsis,Stm32,Sampling,Cmsis,我正试图在HSE的80mhz上运行我的核子f401re intf4xxx::clockInit(intpllm、intplln、intpllp、intpllq) { 使能HSE(); //闪光 清除位(闪存->ACR,闪存ACR); FLASH->ACR&=~ FLASH\u ACR\u延迟; FLASH->ACR |=FLASH | ACR | u延迟| 5WS | FLASH | ACR | ICEN | FLASH | ACR | DCEN | FLASH | ACR | PRFTEN;

我正试图在HSE的80mhz上运行我的核子f401re

intf4xxx::clockInit(intpllm、intplln、intpllp、intpllq)
{
使能HSE();
//闪光
清除位(闪存->ACR,闪存ACR);
FLASH->ACR&=~ FLASH\u ACR\u延迟;
FLASH->ACR |=FLASH | ACR | u延迟| 5WS | FLASH | ACR | ICEN | FLASH | ACR | DCEN | FLASH | ACR | PRFTEN;
//将HSE设置为PLL源
RCC->PLLCFGR=RCC\u PLLCFGR\u PLLSRC\u HSE;
//
RCC->CR&=~(RCC\U CR\U PLLON);//更改前禁用PLL
//
RCC->PLLCFGR=pllM |(pllN1)-1)CFGR |=RCC_CFGR_HPRE_DIV1;//AHB=SYSCLK/1
//APB2预分频器2
RCC->CFGR&=~(RCC\u CFGR\u PPRE2);
RCC->CFGR |=RCC_CFGR_PPRE2_DIV1;//APB2/1
RCC->CFGR&=~(RCC\u CFGR\u PPRE1);
RCC->CFGR |=RCC_CFGR_PPRE1_DIV1;//APB1/2
RCC->CFGR&=~RCC\u CFGR\u SW;//重置SW0,SW1。
RCC->CFGR |=RCC_CFGR_SW_PLL;
碾压混凝土->碾压混凝土=碾压混凝土;
while((RCC->CFGR&RCC\U CFGR\U SWS)!=RCC\U CFGR\U SWS\U PLL);//等待切换到PLL(而PLL不用作系统时钟)
//省电
碾压混凝土->碾压混凝土和碾压混凝土;
返回0;
}
void F4xxx::enableHse()
{
//对于控制MCO2(PC9):(频率=系统时钟/5)
RCC->AHB1ENR |=RCC_AHB1ENR_GPIOCEN;
GPIOC->MODER&=~GPIO\U MODER\U MODE9;
GPIOC->MODER |=GPIO_MODER_MODE9_1;
GPIOC->ospeder |=GPIO_ospeder_ospeder9;
RCC->CFGR |=RCC_CFGR_MCO2PRE;
RCC->CR |=(RCC_CR_HSEON);//启用HSE
而(!(RCC->CR&RCC_CR_HSERDY)){};//准备开始HSE
}
然后这样称呼它:

f4.clockInit(8336,2,7);
但我的逻辑分析仪显示频率不稳定

电平=1的峰值具有宽度^-1=16 mhz 但是,电平=0的峰值具有宽度^-1=8 mhz和5.33 mhz


是什么导致频率如此不稳定?

如果我没有弄错的话,您的逻辑分析仪屏幕截图来自Saleae软件。除非你有一个最新的型号使用USB 3,我猜你的采样频率限制在24兆赫最大。这也是基于FX2的廉价克隆的情况。基本上,您需要USB 3或内部缓冲内存,或者能够对减少的通道数进行采样,例如3个左右,以便采样速度超过24 MHz

你没有告诉我你的采样频率,但根据现有的信息,我假设它被限制在24兆赫。奈奎斯特采样定理规定,采样速度至少要比测量信号快2倍。因此,对于16MHz信号,您需要至少32MHz的采样率。在较低的采样频率下,您会观察到一种称为“混叠”的现象,即您测量的信号似乎具有较低的频率

请记住,32 MHz是理论上的最小值,您仍然可能(并且可能会)观察到信号中的失真。对于模拟信号,通常使用x10或x20采样率。对于像您测量的数字信号,x4可能很好

不久前,我不得不用Saleae克隆调试USB全速总线(12 MHz)。使用24 MHz采样率有时有效,有时无效。当它没有,我按下按钮,再次尝试我的机会


所以,你可能一点问题都没有。由于设备的限制,您无法正确测量信号。当您重复测量时,可能会不时出现相同的采样问题。

采样频率是多少?请使用一个好的示波器并进行测量。@Tagli重新运行干净的构建后,问题似乎消失了。很可能是新构建修复了此问题。这只能解释,如果它是一个软件问题摆在首位。然而,我无法想象任何与软件相关的原因,为什么它会显示所描述的行为您尚未回答有关采样频率的问题。我使用Salae clone。他们承诺捕获高达100MHz的信号