打印

MCO输出失真,怎么办?

[复制链接]
4267|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
richardxwb|  楼主 | 2009-4-27 21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pi, gp, GPIO, IO, rc
// 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的时钟信号.
沙发
香水城| | 2009-4-27 21:44 | 只看该作者

MCO输出不应该有很大失真

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

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

最后一个问题,你用的什么芯片?

使用特权

评论回复
板凳
richardxwb|  楼主 | 2009-4-28 09:34 | 只看该作者

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

使用特权

评论回复
地板
richardxwb|  楼主 | 2009-4-28 09:35 | 只看该作者

屏蔽UART,也是失真

屏蔽UART,也是失真

使用特权

评论回复
5
香水城| | 2009-4-28 09:46 | 只看该作者

请把失真波形贴出来看看

如果定时器的时钟频率为48MHz,则可以产生24MHz占空比是1:1的方波。
如果定时器的时钟频率为72MHz,则可以产生24MHz占空比是1:2的方波。

使用特权

评论回复
6
ijk| | 2009-4-28 09:54 | 只看该作者

STM32的MCO输出

  STM32的MCO输出,我试过,24MHz应该失真不大,48MHz就象正弦波了,72MHz基本上是正弦波。

使用特权

评论回复
7
王紫豪| | 2009-4-29 03:02 | 只看该作者

re楼上的人

那是因为你的测试工具不够档次

使用特权

评论回复
8
ST_ARM| | 2009-4-29 09:48 | 只看该作者

STM32的MCO输出没有什么问题

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

使用特权

评论回复
9
lut1lut| | 2009-4-30 10:51 | 只看该作者

上图才是硬道理

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

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

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

使用特权

评论回复
10
lut1lut| | 2009-4-30 10:58 | 只看该作者

无图无真相

MCO输出8MHz


MCO输出8MHz放大


MCO输出36MHz


MCO输出36MHz放大


MCO输出72MHz

使用特权

评论回复
11
ijk| | 2009-4-30 11:33 | 只看该作者

看来我没记错

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

使用特权

评论回复
12
wangguanfu| | 2009-4-30 14:42 | 只看该作者

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

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

使用特权

评论回复
13
香水城| | 2009-4-30 15:16 | 只看该作者

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

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

请楼主贴出你的波形,比较一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

35

帖子

0

粉丝