0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

第三十一章 MCO——PA8从主频分频输出

W55MH32 来源:W55MH32 作者:W55MH32 2025-07-01 15:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单芯片解决方案,开启全新体验——W55MH32高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。

在封装规格上,W55MH32提供了两种选择:QFN100和QFN68。

W55MH32L采用QFN100封装版本,尺寸为12x12mm,其资源丰富,专为各种复杂工控场景设计。它拥有66个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、5个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN、1个USB2.0以及1个SDIO接口。如此丰富的外设资源,能够轻松应对工业控制中多样化的连接需求,无论是与各类传感器、执行器的通信,还是对复杂工业协议的支持,都能游刃有余,成为复杂工控领域的理想选择。同系列还有QFN68封装的W55MH32Q版本,该版本体积更小,仅为8x8mm,成本低,适合集成度高的网关模组等场景,软件使用方法一致。更多信息和资料请进入http://www.w5500.com/网站或者私信获取。

此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及 MQTT SSL等,为网络通信安全再添保障。

为助力开发者快速上手与深入开发,基于W55MH32L这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。

若您想获取芯片和开发板的更多详细信息,包括产品特性、技术参数以及价格等,欢迎访问官方网页:http://www.w5500.com/,我们期待与您共同探索W55MH32的无限可能。

wKgZPGhjkceAQighABA5X7BENG0290.png

第三十一章 MCO——PA8从主频分频输出

W55MH32的MCO(Microcontroller Clock Output)是一个重要的时钟输出功能,允许将内部时钟信号通过特定引脚输出到外部,供其他设备或系统同步使用。以下是关于MCO功能概述、应用场景及配置步骤的详细说明:

1MCO功能概述

1.1简介

W55MH32的MCO(Microcontroller Clock Output)是微控制器的时钟输出引脚,允许将内部时钟源(如HSI、HSE、PLL或系统时钟)输出到外部,主要用于系统调试、外部设备同步或时钟测量。

1.2基本概念

MCO引脚:通常为特定的GPIO(如W55MH32系列的PA8),需配置为复用功能(AF)模式。

时钟源:MCO的时钟源可来自W55MH32内部的多种时钟信号,例如:

HSI(内部高速时钟):默认8MHz(不同型号可能不同)。

HSE(外部高速时钟):外接晶振或时钟源(如8MHz)。

PLL输出:经过锁相环倍频后的系统时钟(SYSCLK)。

LSI/LSE(低速时钟):通常用于低功耗场景(如RTC),但较少用于MCO输出。

1.3分频原理

通过RCC时钟控制寄存器(如RCC_CFGR)中的MCO预分频器(MCO Prescaler),可对时钟源进行分频,输出频率公式为:

wKgZO2hjkceAWEBnAAAd19LHdp0561.png

(时钟源分频系数分频系数可选:1、2、4、8、16)

例如:若系统时钟(SYSCLK)为72MHz,分频系数设为4,则MCO输出频率为18MHz。

2应用场景

MCO的核心价值在于精准时钟输出和系统调试便利性,以下是其典型应用场景:

2.1为外部设备提供时钟源

场景:当外部传感器、ADC、DAC、通信模块(如WiFi/蓝牙芯片)需要精准时钟时,可直接使用MCO输出的时钟信号,避免额外时钟电路设计。

示例:为外部ADC芯片提供同步时钟,确保采样频率与W55MH32系统时钟同步。

2.2多芯片同步(主从模式)

场景:多个W55MH32或其他MCU协同工作时,通过MCO输出主芯片的时钟,使从芯片以相同频率运行,避免异步通信带来的时序问题。

示例:工业控制中多处理器同步执行任务,或分布式系统中的时钟同步。

2.3调试与测量

场景:开发阶段通过示波器测量MCO引脚,验证内部时钟配置是否正确(如PLL倍频、分频系数是否生效)。

用途:快速定位时钟配置错误(如系统时钟未按预期分频)。

2.4通信协议的时钟同步

场景:在需要精确时钟的通信协议中(如SPI、I2S、CAN),MCO可作为从设备的时钟参考,确保数据传输的稳定性。

示例:W55MH32作为SPI主机时,MCO输出时钟供从机(如Flash芯片)同步,避免因时钟偏差导致的数据错误。

2.5低功耗系统的时钟管理

场景:在电池供电系统中,通过MCO输出低频时钟(如将HSI分频至1MHz),供外部外设进入低功耗模式,同时保持系统部分功能运行。

3注意事项

引脚驱动能力:MCO输出频率不宜过高(需低于GPIO的最大可靠频率,通常建议不超过50MHz),高频时需考虑信号完整性(如阻抗匹配)。

时钟源使能顺序:配置MCO前需确保时钟源已稳定(如HSE起振完成),避免输出无效信号。

4程序设计

配置MCO需依次完成时钟源使能、GPIO功能设置、寄存器分频配置等步骤,具体如下:

4.1使能时钟源

若时钟源为PLL或HSE,需先通过RCC寄存器使能对应的时钟(如RCC_HSEConfig(RCC_HSE_ON))。

若选择SYSCLK(系统时钟)作为源,需确保系统时钟已正确配置(如PLL倍频完成)。

4.2配置GPIO为MCO复用功能

将MCO引脚(如PA8)设置为复用推挽输出,确保信号稳定输出:

void MCO_GpioConfig(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
 
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA,&GPIO_InitStructure);
}

选择引脚:确定使用PA8(GPIO_Pin_8)。

设置速度:因外设需要高频信号(如MCO输出几十MHz的时钟),所以选择50MHz高速模式。

配置模式:复用推挽输出模式使引脚可输出外设的专用信号(而非普通GPIO电平)。

寄存器写入:通过GPIO_Init()函数将配置写入硬件寄存器,使引脚按设定模式工作。

4.3选择时钟源并设置分频系数

通过RCC_CFGR寄存器的MCO位段选择时钟源,MCOPRE位段设置分频系数:

void RCC_MCOConfig(uint8_t RCC_MCO)
{
  /* Check the parameters */
  assert_param(IS_RCC_MCO(RCC_MCO));
 
  if(RCC_MCO<= RCC_MCO_PLLCLK_Div2)
          {
                    /* Perform Byte access to MCO bits to select the MCO source */
                    *(__IO uint8_t *) CFGR_BYTE4_ADDRESS = RCC_MCO;
          }
          else
          {
                    *(__IO uint8_t *) CFGR_BYTE4_ADDRESS = RCC_MCO_PLLCLK_Div2;
          }
          RCC- >RCC_MCO_VAL= RCC_MCO-6;
}

该函数主要实现的功能为:

参数校验:确保输入的 MCO配置是W55MH32支持的合法选项。

寄存器写入:通过字节访问 RCC_CFGR寄存器的特定位段,设置 MCO的时钟源和分频系数。

异常保护:若输入非法参数,强制使用安全的默认配置(RCC_MCO_PLLCLK_Div2)。

4.4主程序

主程序main()实现整体功能,验证时钟配置并提供时钟输出测试:

int main(void)
{
    RCC_ClocksTypeDef clocks;
 
    delay_init();
 
    RCC_ClkConfiguration();
 
    UART_Configuration(115200);
    printf("MCO Out Pll Div Test.n");
    RCC_GetClocksFreq(&clocks);
 
    printf("SYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhzn",
           (float)clocks.SYSCLK_Frequency /1000000,(float)clocks.HCLK_Frequency/1000000,
           (float)clocks.PCLK1_Frequency /1000000,(float)clocks.PCLK2_Frequency/1000000,(float)clocks.ADCCLK_Frequency/1000000);
 
    MCO_GpioConfig();
    RCC_MCOConfig(RCC_MCO_PLLCLK_Div16);
 
    while(1);
}

程序首先初始化延时函数和系统时钟,配置UART以115200波特率输出调试信息,然后获取并打印系统时钟、AHB总线、APB1/APB2总线及ADC时钟的频率。接着配置MCO引脚(PA8)并将PLL时钟除以16后通过该引脚输出。最后程序进入无限循环保持运行状态,

5下载验证

程序下载运行后,首先打印了示例名称和各系统时钟频率,然后PA8引脚持续输出波形:

wKgZPGhjkceAXbLAAAFz6WE9MtY026.png

wKgZO2hjkceAWH7_AAPTQNjMN4g055.png

6总结

MCO功能通过灵活配置时钟源和分频系数,为W55MH32提供了对外输出时钟的能力,简化了系统设计中的时钟同步问题。先理解其应用场景(如多芯片同步、调试测量),再掌握配置步骤(时钟源选择、GPIO设置、分频配置),可更高效地应用于实际项目中。

WIZnet是一家无晶圆厂半导体公司,成立于 1998年。产品包括互联网处理器 iMCU™,它采用 TOE(TCP/IP卸载引擎)技术,基于独特的专利全硬连线 TCP/IP。iMCU™面向各种应用中的嵌入式互联网设备。

WIZnet在全球拥有 70多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟同步
    +关注

    关注

    0

    文章

    127

    浏览量

    13512
  • 时钟输出
    +关注

    关注

    0

    文章

    11

    浏览量

    5811
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MCOPA8)在DEBUG的时候不输出波形会是什么原因?

    MCOPA8)在DEBUG的时候不输出波形,会是什么原因??
    发表于 04-22 07:43

    MCO输出的管脚是固定的PA8吗?

    在CUBEMX里可以配置时钟输出PA8上,请问这个是固定的吗,另外测得频率大概是20多NS,跟48MHZ到是不差,就是波形的幅度是1V,按说管脚复用推挽输出的高电平不是3.3V吗, 找到问题了,垃圾模拟示波器啊,幅频特性真差,
    发表于 05-15 07:16

    STM32 PA8 MCO输出32.768Khz频率

    请问用STM32 PA8脚如何输出32.768KHZ的频率,应该如何时钟分频。或者有没有其他方式可以输出32.768KHZ的频率。
    发表于 03-01 16:40

    MCOPA8)在DEBUG的时候不输出波形,会是什么原因??

    我把几个时钟源都打开了,PA8口也配置成辅助功能输出了,输出信号不论选择的是HSE,HSI,在DEBUG的时候,2个LED信号(PB0、PB5)能正常翻转,但是MCO
    发表于 04-19 20:15

    请问图中PA8是什么信号?

    纠结这个PA8是什么信号呢?芯片外围有用的只接了这三个口
    发表于 07-08 04:35

    「正点原子STM32Mini板资料连载」第三十一章 FLASH 模拟 实验

    号,获取更多资料:正点原子第三十一章 FLASH 模拟 EEPROM 实验STM32 本身没有自带 EEPROM,但是 STM32 具有 IAP(在应用编程)功能,所以我们可以把它的 FLASH 当成
    发表于 04-13 10:38

    「ALIENTEK 探索者 STM32F407 开发板资料连载」第三十一章 485 实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自《STM32F7 开发指南(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子第三十一章 485 实验本章我们将向
    发表于 06-10 11:46

    STM32配置MCO

    ,所以采用MCO将内部RC震荡频率输出接到示波器上查看,在此记录下STM32配置MCO(基于HAL库)。 STM32是通过PA8管脚输出
    发表于 08-20 07:31

    STM32F103 PA8不能输出PWM波是为什么?

    STM32F103 PA8不能输出PWM波是为什么?
    发表于 11-26 07:19

    STM32F103 PA8不能输出PWM波是为什么?

    STM32F103 PA8不能输出PWM波是为什么?
    发表于 01-27 07:27

    如何设置PA8作为MCO输出

    问题一、如何设置 PA8 作为 MCO 输出?问题二、startup 哪里设置堆栈?
    发表于 09-08 07:23

    为什么STM32G0B0VE的PA8引脚会反向输出信号呢

    ,我看到引脚 PA8 跟随引脚 PA9 但反向输出,所以当 PA9 上升时,PA8 下降到 400mV,当
    发表于 12-09 08:09

    第三十一讲 随机存取存储器

    第三十一讲 随机存取存储器 9.3 随机存取存储器9.3.1 RAM的基本结构和工作原理 9.3.2 RAM的存储单元一、
    发表于 03-30 16:36 1532次阅读
    <b class='flag-5'>第三十一</b>讲 随机存取存储器

    模拟电路网络课件 第三十一节:负反馈放大电路的四种类型

    模拟电路网络课件 第三十一节:负反馈放大电路的四种类型 7.2  负反馈放大电路的四种类型 一、电压串联负反馈
    发表于 09-17 11:56 1763次阅读
    模拟电路网络课件 <b class='flag-5'>第三十一</b>节:负反馈放大电路的四种类型

    STM32F103 PA8不能输出PWM波问题

    在调试STM32F103单片机输出PWM波时,单独测试PA8PA11输出PWM波(也就是TIM1_CH1和TIM1_CH4),输出PWM波
    发表于 12-02 19:36 19次下载
    STM32F103 <b class='flag-5'>PA8</b>不能<b class='flag-5'>输出</b>PWM波问题