【AS32X601驱动系列教程】SMU_系统时钟详解

在现代嵌入式系统中,时钟与复位管理是确保系统稳定运行的关键。我们的SMU(系统管理单元)模块专注于此核心任务,通过精准的时钟配置和复位控制,为整个系统提供可靠的时序保障。

SMU模块的主要功能是完成时钟和复位的管理。在默认状态下SMU工作在IDLE状态。只有接收到PMU的使能信号后才开始工作。SMU模块会根据PMU的指令自动配置COR、AXIBUS0/1/2等总线的时钟和复位。

需要注意的是,MCU芯片AS32X601可通过BOOT选择从外部QSPI Flash启动和内部PFlash启动,外部Flash启动时,系统时钟最高90MHz,内部启动时,系统时钟可跑到180MHz。同时对于各总线时钟,同样存在具体要求,该部分在软件操作部分进行介绍。

硬件介绍

本章节只讨论SMU系统时钟配置,AS32x601系列总线以及外设时钟均由SMU模块进行配置,时钟树和总线架构可在设计手册中查到,同时,为了保证使用者可以更好理解系统时钟配置,芯片特意拉出来一个clk_out引脚以便测量,查询芯片引脚复用,该引脚位于芯片的第11管脚PB4得复用功能1。

软件设计

在本小节只针对实际操作部分代码进行讲解,其中所涉及到的工程、变量、头文件等不会涉及到,可以参考实际的demo工程。

操作流程

  1. 使能总线时钟以及clk_out所在GPIO时钟

  2. 配置SMU_PLL结构体(如果不使用PLL,可忽略此步骤)

  3. 配置EFLASH时钟同步(如果使用外部flash启动,可忽略此步骤)

  4. 配置系统时钟以及总线分频结构体

  5. 配置clk_out引脚复用

代码介绍

在芯片的所有使用过程中,主程序都应该在初始化的最开始部位首先完成此部分代码的编写,我们在此处封装成函数,在每个demo历程中均可以找到这个函数。

在这个函数中,我们把需要注意的事项以及总线时钟树和对应关系均以注释的形式贴在操作之前,在时钟使能过程中,还需要参考总线架构保证外设挂载在具体哪一条总线下,然后在此处根据注释打开相应总线时钟,具体接口的时钟使能可在接口初始化函数中进行使能。

在上述代码清单中,首先配置PLL结构体,采用外部晶振作为PLL的时钟源,开发板晶振频率为20MHz,那么根据上述公式计算可知系统时钟为20÷0x14*0xB4÷0x01 = 180M。

接下来,配置EFLASH时钟同步,此操作必须在切换系统时钟之前完成,将同步时间180写入同步配置。

之后配置总线时钟结构体,此处可设置系统时钟源是PLL、内部振荡器或者外部晶振,此外还可配置系统总线分频系数,具体参数已经在库中定义完成。

最后需要更新EFLASH时钟,强制操作,避免死机。

最后一步操作是获取所有总线时钟,此函数是为了保证部分自动计算波特率功能设定,建议最好不要删除。

至此系统时钟初始化完毕,为了验证功能,我们可以配置CLK_OUT引脚输出,代码如下:

由于此处全部都是初始化操作,完成之后,直接while(1)等待即可,编译此代码。另外,SMU_SetSysClockOut(CoreCLKDiv8Out);可以控制输出时钟来源于具体哪一路,形参已经定义好,直接选择切换即可。

烧录验证

上述代码编译烧录之后,用示波器连接PB4引脚,即可看到输出波形。

相关推荐
森利威尔电子-16 分钟前
森利威尔SL6129兼容 AL8805 / AL8806,输入电压 5.5V - 30V,最大输出电流 1.2A
单片机·嵌入式硬件·集成电路·芯片·电源芯片
FreakStudio16 分钟前
嘉立创开源:应该是全网MicroPython教程最多的开发板
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy
qq_441685751 小时前
CC26xx开发 第一节 前期准备
嵌入式硬件
史蒂芬_丁1 小时前
TI F28P65 使用 ePWM 模块模拟 SPI 时钟的详细方法
单片机·嵌入式硬件·fpga开发
LinuxRos1 小时前
I2C子系统与驱动开发:从协议到实战
linux·人工智能·驱动开发·嵌入式硬件·物联网
冷凝雨2 小时前
复旦微FM33 MCU 底层开发指南——UART
stm32·单片机·串口·uart·fm33lc0·复旦微电子
白掰虾3 小时前
STM32CubeMX2教程——STM32C5 UART
stm32·单片机·嵌入式硬件·mcu·usart·stm32cubemx2·stm32c542
lzx186488437023 小时前
AH1008:一款宽输入10-55V,输出5V/5A的高效同步整流降压DC-DC转换器
嵌入式硬件·集成测试·硬件工程·ic
清风6666663 小时前
基于单片机的无线遥控车库门控制
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
我不是程序猿儿4 小时前
【嵌入式】面向 STM32 的 ADC 与 DMA 学习路线
linux·stm32·单片机·嵌入式硬件·学习