这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【分享开发笔记,赚取电动螺丝刀】MAX78000FTHR开发板,切换到最高时钟频

共2条 1/1 1 跳转至

【分享开发笔记,赚取电动螺丝刀】MAX78000FTHR开发板,切换到最高时钟频率100Mhz方法!

菜鸟
2025-09-26 23:42:46     打赏

一、硬件介绍

1、产品特点

MAX78000FTHR 开发板集成卷积神经网络加速器,将ARM Cortex-M4处理器与浮点单元 (FPU)、卷积神经网络 (CNN) 加速器和 RISC-V 内核组合在一起,包括MAX20303 PMIC,用于电池和电源管理,兼容Adafruit Feather Wing外设扩展板。评估板包括各种外设,例如CMOS VGA图像传感器、数字麦克风、低功耗立体声音频CODEC、1MB QSPI SRAM、micro SD存储卡连接器、RGB指示LED和按键。



max78000fthr.jpg


板载的MAX32625微控制器已预先编程有 DAPLink 固件,可通过 USB 对 MAX78000 Arm 内核进行调试和编程

标准10pin引脚JTAG接口,可调试和编程MAX78000的RISC-V内核


特性

双核:Arm Cortex-M4 FPU处理器,100MHz;RISC-V协处理器,60MHz

512KB闪存

128KB SRAM

16KB 缓存

卷积神经网络加速器

12位并行摄像头接口

MAX20303可穿戴PMIC,带电量计

Micro SD卡连接器

CMOS VGA图像传感器

低功耗、立体声音频编解码器

数字麦克风


系统框图


image-20250924223301534.png



二、频率设置方法


系统初始化时钟默认为SystemCoreClock = 60Mhz,其中外设时钟PeripheralClock = SystemCoreClock  / 2 = 30Mhz;

  具体实现方法在 ..\MaximSDK\Libraries\CMSIS\Device\Maxim\MAX78000\Source


相关时钟源选择定义 (mxc_sys.h)

  • MXC_SYS_CLOCK_IPO = 100MHz 内部主振荡 (性能最高)

  • MXC_SYS_CLOCK_ISO = 60MHz 内部振荡(低功耗)

  • MXC_SYS_CLOCK_IBRO = 7.3728MHz

  • MXC_SYS_CLOCK_INRO = 30kHz 低速

  • MXC_SYS_CLOCK_ERTCO= 32.768kHz

  • MXC_SYS_CLOCK_EXTCLK = 外部输入(需实际提供 EXTCLK)


代码实现方法

#include "mxc_sys.h"

static void SetSystemClock(mxc_sys_clock_t src)
{
    // 使能目标时钟源
    MXC_SYS_ClockSourceEnable(src);
    
    // IPO 就绪位:MXC_F_GCR_CLKCTRL_IPO_RDY
    // ISO 就绪位:MXC_F_GCR_CLKCTRL_ISO_RDY
    // IBRO / INRO / ERTCO 可直接选择
    volatile uint32_t *clk = &MXC_GCR->clkctrl;
    if (src == MXC_SYS_CLOCK_IPO) {
        while(!(*clk & MXC_F_GCR_CLKCTRL_IPO_RDY)) {}
    } else if (src == MXC_SYS_CLOCK_ISO) {
        while(!(*clk & MXC_F_GCR_CLKCTRL_ISO_RDY)) {}
    }

    // 选择系统时钟
    MXC_SYS_Clock_Select(src);

    // 设置分频:0=不分频
    uint32_t reg = *clk;
    reg &= ~MXC_F_GCR_CLKCTRL_SYSCLK_DIV;  // 清除分频
    reg |= (0u << MXC_F_GCR_CLKCTRL_SYSCLK_DIV_POS); // 分频=0
    MXC_GCR->clkctrl = reg;

    // 更新
    SystemCoreClockUpdate();
}


int main(void)
{
    // 使能 IPO 100MHz
    SetSystemClock(MXC_SYS_CLOCK_IPO);

    printf("系统时钟频率 = %lu MHz, 外设时钟频率 = %lu MHz\n", SystemCoreClock / 1000000, PeripheralClock / 1000000);

    uint32_t sel = (MXC_GCR->clkctrl & MXC_F_GCR_CLKCTRL_SYSCLK_SEL) >> MXC_F_GCR_CLKCTRL_SYSCLK_SEL_POS;
    uint32_t div = (MXC_GCR->clkctrl & MXC_F_GCR_CLKCTRL_SYSCLK_DIV) >> MXC_F_GCR_CLKCTRL_SYSCLK_DIV_POS;
    
   //  具体含义详见mxc_sys.h (0:MXC_S_GCR_CLKCTRL_SYSCLK_DIV_DIV1  4:MXC_V_GCR_CLKCTRL_SYSCLK_SEL_IPO)

    printf("时钟选择模式 = %lu, 分频系数模式 = %lu\n", sel, div);

    while (1) {
    }
}


image-20250926230521518.png











关键词: MAX78000FTHR    

专家
2025-09-27 08:11:00     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]