这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 智能手环DIY活动过程帖【VSCode环境配置/烧录调试/RGB点灯】

共1条 1/1 1 跳转至

智能手环DIY活动过程帖【VSCode环境配置/烧录调试/RGB点灯】

菜鸟
2025-10-07 16:48:47     打赏

一、硬件介绍

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图像传感器

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

数字麦克风


硬件框图


硬件框图.jpg


系统框图


image-20250924223301534.png



2、功能引脚示意图 / 原理图

原理图


板载按钮

SW1:用户可编程功能按钮;

连接到 P0_2


SW2:用户可编程功能按钮;

连接到 P1_7


SW3:PMIC 电源按钮;

Power_Button:当电路板处于通电状态时,按住此按钮 12 秒将执行硬断电; 

当电路板处于断电状态时,按下此按钮可重新打开电路板电源。

该按钮可以被MAX78000读取,当按下按钮时,PMIC_PFN2(P3_0)信号进入逻辑低电平状态。


SW4:连接到 RSTN 的输入;

用于复位 MCU


SW5:DAPLink 固件更新按钮;

用于 DAPLINK 固件的更新; 当按下按钮上电时,将进入固件更新模式;


板载LED

D1: 该LED可由用户控制,连接到对应的GPIO端口;

LED_R:P2_0 LED_G:P2_1 LED_B:P2_2

D2:连接到MAX20303的PMIC_LEDx输出;

这些LED可以通过I2C命令进行控制; 还可以通过 I2C 命令配置为充电状态指示灯;

PMIC_LED1(Red) PMIC_LED2(Green) PMIC_LED0(Blue)

D3:DAPLink(MAX32625)状态指示灯;

由 DAPLink 控制


引脚图


image-20250923220205380.png

image-20250923220052647.png




脚序名称功能
1RST主复位引脚
23V33.3V 输出为外设提供 3.3V 电压
31V81.8V 输出为外设提供 1.8V 电压
4GND
5P2_3GPIO 或 模拟输入(AIN3 通道)
6P2_4GPIO 或 模拟输入(AIN4 通道)
7P1_1GPIO 或 UART2_Tx
8P1_0GPIO 或 UART2_Rx
9MPC1GPIO 由 PMIC 通过 I2C 接口控制开漏 或 推挽输出
10MPC2GPIO 由 PMIC 通过 I2C 接口控制开漏 或 推挽输出
11P0_7GPIO 或 QSPI0 时钟SD卡 和 板载 QSPI SRAM 共享
12P0_5GPIO 或 QSPI0 MOSISD卡 和 板载 QSPI SRAM 共享
13P0_6GPIO 或 QSPI0 MISOSD卡 和 板载 QSPI SRAM 共享
14P2_6GPIO 或 LPUART_Rx
15P2_7GPIO 或 LPUART_Tx
16GND
17SYS这是主系统电源,可在电池电压 和 USB电源 之间自动切换 (5V)
18PWR强制关机按钮对地短路 13 秒,则关闭 PMIC
19VBUSUSB_VBUS当连接到 USB 时,为外设提供 5V 电压在不使用 USB 连接时,也可以用作为电路的供电输入(最好不要,因为没有电路防止电流回流至USB)
20P1_6GPIO
21MPC3GPIO 由 PMIC 通过 I2C 接口控制开漏 或 推挽输出
22P0_9GPIO 或 QSPI0 SDIO3SD 卡和板载 QSPI SRAM 共享
23P0_8GPIO 或 QSPI0 SDIO2SD卡和板载 QSPI SRAM 共享
24P0_11GPIO 或 QSPI0_Slave
25P0_19GPIO
26P3_1GPIO 或 Wake-up该引脚为 3.3V
27P0_16GPIO 或 I2C1_SCL板载电平转换器允许通过 R15 或 R20 电阻器选择 1.8V 或 3.3V (详见原理图)
28P0_17GPIO 或 I2C1_SDA 板载电平转换器允许通过 R15 或 R20 电阻选择 1.8V 或 3.3V (详见原理图)

  


二、环境搭建

开发环境主要有【Eclipse】、【Visual Studio Code】等

在此,使用【Visual Studio Code】完成相关的开发;


1、VSCode配置

安装Cortex-Debug插件

用于调试程序

image-20250925213159448.png



配置文件

使用 CTRL + SHIFT + P打开命令面板,输入“用户设置”;

然后添加以下路径,到 settings.json 文件中,修改后保存;

"MAXIM_PATH": "MaximSDK的路径",

"update.mode": "manual",

"extensions.autoUpdate": false,

image-20250925213745365.png


2、打开工程项目

1、打开文件夹,SDK下的"GPIO"例程文件夹,进行后续相关代码的编写;

..\MaximSDK\Examples\MAX78000\GPIO

image-20250925222927238.png



2、将原来默认配置的"EvKit_V1"板卡,改成"FTHR_RevA”,修改后保存;

.vscode/settings.json

image-20250925215118834.png


三、代码编写

实现效果:板载的RGB_LED灯,实现交替呼吸灯的效果

D1: 该LED可由用户控制,连接到对应的GPIO端口;

LED_R:P2_0 

LED_G:P2_1

LED_B:P2_2


main.c

#include <stdio.h>
#include <string.h>
#include "mxc_device.h"
#include "mxc_delay.h"
#include "nvic_table.h"
#include "pb.h"
#include "board.h"
#include "gpio.h"

#ifdef BOARD_FTHR_REVA

#define LED_PORT      MXC_GPIO2
#define LED_R         MXC_GPIO_PIN_0
#define LED_G         MXC_GPIO_PIN_1
#define LED_B         MXC_GPIO_PIN_2

#define LED_ON(pins)  MXC_GPIO_OutClr(LED_PORT, (pins))
#define LED_OFF(pins) MXC_GPIO_OutSet(LED_PORT, (pins))

#endif

// 呼吸灯函数
void pwm_led(uint32_t led_pin)
{
    const int pwm_period = 20000; // 总周期(us)
    const int step       = 200;   // 每次变化的步长(us)
    int duty;

    // 渐亮
    for (duty = 0; duty < pwm_period; duty += step) {
        MXC_GPIO_OutSet(LED_PORT, led_pin);
        MXC_Delay(duty); // 亮灯时间us
        MXC_GPIO_OutClr(LED_PORT, led_pin);
        MXC_Delay(pwm_period - duty); // 灭灯时间
    }
    // 渐暗
    for (duty = pwm_period; duty > 0; duty -= step) {
        MXC_GPIO_OutSet(LED_PORT, led_pin);
        MXC_Delay(duty);
        MXC_GPIO_OutClr(LED_PORT, led_pin);
        MXC_Delay(pwm_period - duty);
    }

    MXC_GPIO_OutSet(LED_PORT, led_pin); // 关闭当前LED
}

int main(void)
{
    mxc_gpio_cfg_t gpio_out;
    /* Setup output pin. */
    gpio_out.port   = LED_PORT;
    gpio_out.mask   = LED_R | LED_G | LED_B;
    gpio_out.pad    = MXC_GPIO_PAD_NONE;
    gpio_out.func   = MXC_GPIO_FUNC_OUT;
    gpio_out.vssel  = MXC_GPIO_VSSEL_VDDIO;
    gpio_out.drvstr = MXC_GPIO_DRVSTR_0;
    MXC_GPIO_Config(&gpio_out);

    while (1) {
        pwm_led(LED_R);
        MXC_Delay(MXC_DELAY_MSEC(20));
        pwm_led(LED_G);
        MXC_Delay(MXC_DELAY_MSEC(20));
        pwm_led(LED_B);
        MXC_Delay(MXC_DELAY_MSEC(20));
    }
}



编译代码

使用CTRL + SHIFT + B 选择 Build 编译项目;

或使用终端 make -j16 PROJECT=GPIO,编译成 .elf 程序二进制文件;


四、程序烧录

1、用数据线连接开发板至电脑上;

2、程序烧录

使用CTRL + SHIFT + B 选择 flash & run 烧录并运行程序;

或在终端中运行

arm-none-eabi-gdb --cd="D:\MaximSDK\Examples\MAX78000\GPIO" ^ --se="build\max78000.elf" --symbols=build\GPIO.elf ^ -x=".vscode\flash.gdb" ^ --ex="flash_m4_run D:/MaximSDK/Tools/OpenOCD cmsis-dap.cfg max78000.cfg" ^ --batch



五、程序调试

选择GDB(Arm M4),并按 F5 启动调试器;

调试控制台会输出相关信息;


image-20250925232352456.png



六、演示效果


MAX8000_呼吸灯.gif














关键词: MAX78000FTHR    

共1条 1/1 1 跳转至

回复

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