MCO输出失真,怎么办?

lianyudandan   2009-4-27 21:26 楼主
// Enable GPIOA clock
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  // Output HSE or other clock on MCO pin PA8 (pin 67)
  gpio_init.GPIO_Pin = GPIO_Pin_8;
  gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
  gpio_init.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &gpio_init);
  // Output HSE or other clock on MCO pin
  RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);

PA8开漏或上拉输出,我想做为外设的时钟信号,可是失真严重.不知道上拉怎么样.没试.先请教一下.
有什么办法可以让MCO输出24MHz的时钟信号.

回复评论 (12)

MCO输出不应该有很大失真

请问你在MCO上接的负载有多大?

另外,你的USART1和TIM1怎么用的,是否与MCO有冲突?

最后一个问题,你用的什么芯片?
点赞  2009-4-27 21:44

mco

STM32F103VE
测试时没接负载
TM1未使用,UART配置如下
  usart_init.USART_BaudRate            = baud_rate;
    usart_init.USART_WordLength          = USART_WordLength_8b;
    usart_init.USART_StopBits            = USART_StopBits_1;
    usart_init.USART_Parity              = USART_Parity_No ;
    usart_init.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    usart_init.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;

    usart_clk_init.USART_Clock           = USART_Clock_Disable;
    usart_clk_init.USART_CPOL            = USART_CPOL_Low;
    usart_clk_init.USART_CPHA            = USART_CPHA_2Edge;
    usart_clk_init.USART_LastBit         = USART_LastBit_Disable;
  gpio_init.GPIO_Pin   = GPIO_Pin_9;
    gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
    gpio_init.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &gpio_init);
    /* Configure GPIOA.10 as input floating                 */
    gpio_init.GPIO_Pin   = GPIO_Pin_10;
    gpio_init.GPIO_Mode  = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &gpio_init);

请问斑竹,能用PWM输出24MHz的方波吗,占空比1:1
点赞  2009-4-28 09:34

屏蔽UART,也是失真

                                 屏蔽UART,也是失真
点赞  2009-4-28 09:35

请把失真波形贴出来看看

如果定时器的时钟频率为48MHz,则可以产生24MHz占空比是1:1的方波。
如果定时器的时钟频率为72MHz,则可以产生24MHz占空比是1:2的方波。
点赞  2009-4-28 09:46

STM32的MCO输出

                                   STM32的MCO输出,我试过,24MHz应该失真不大,48MHz就象正弦波了,72MHz基本上是正弦波。
点赞  2009-4-28 09:54

re楼上的人

                                 那是因为你的测试工具不够档次
点赞  2009-4-29 03:02

STM32的MCO输出没有什么问题

STM32的输出速度最快为50MHz,所以只要输出频率小于等于50MHz,输出的信号都不会失真,这一点勿庸置疑,我已经测试过;当输出频率超过50MHz时,频率有失真现象,但是更主要的时频率变小了,我测试输出72MHz时,输出的频率只有71.6MHz。
点赞  2009-4-29 09:48

上图才是硬道理

我的测试环境:
8MHz = HSE
PLL输出 = 72MHz, 作为SYSCLK

MCO输出8MHz
MCO输出PLL/2 = 36MHz
MCO输出SYSCLK = 72MHz

P.S 我用的示波器:
型号:Agilent infiniim 54831D MSO
特性:600MHz带宽,4G次采样/每秒

点赞  2009-4-30 10:51

无图无真相

MCO输出8MHz


MCO输出8MHz放大


MCO输出36MHz


MCO输出36MHz放大


MCO输出72MHz
点赞  2009-4-30 10:58

看来我没记错

                                 看来我没记错:“24MHz应该失真不大,48MHz就象正弦波了,72MHz基本上是正弦波。”跟上面的图比较符合。
点赞  2009-4-30 11:33

72MHZ,请不 要忽略PCB走线的影响

                                 72MHZ失真,请不要忽略PCB走线的影响,输出的频率只有71.6MHz。检测你 的晶体频率离8.000MHZ(9倍频)有多远。
点赞  2009-4-30 14:42

STM32 GPIO模块的最大带宽只有50MHz,不能输出72MHz方波

从10楼贴出的波形看,至少36MHz的输出波形是很好的,所以楼主要求输出24MHz应该是没有问题的。

请楼主贴出你的波形,比较一下。
点赞  2009-4-30 15:16
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复