一、开发板简介
ADI(原Maxim Integrated)MAX78000FTHR是一款专为边缘AI应用设计的超低功耗开发板。其核心搭载了MAX78000微控制器,集成了ARM Cortex-M4F处理器(100MHz)、RISC-V协处理器(60MHz)以及专用的卷积神经网络(CNN)加速器。这款开发板支持电池供电,兼容Adafruit Feather Wing外设扩展,非常适合物联网边缘计算场景。
核心特性:
- 双核架构:Cortex-M4F + RISC-V协处理器
- 专用CNN加速器,支持1-bit/4-bit/8-bit权重
- 512KB Flash + 128KB SRAM
- 集成CMOS VGA摄像头、数字麦克风、音频Codec
- 1MB QSPI SRAM扩展
- Micro SD卡接口、RGB LED、按键等外设

二、开发环境搭建
1. 软件准备
- JDK 11+:Eclipse运行的基础环境
- Eclipse IDE for C/C++ Developers:从官网下载
- MAX78000 SDK:从ADI官网获取
- DAPLink驱动:用于程序烧录
2. 环境配置步骤
步骤1:安装JDK
# 下载JDK 11或更高版本
# 配置环境变量
JAVA_HOME = C:\Program Files\Java\jdk-11
Path = %JAVA_HOME%\bin
步骤2:安装Eclipse
- 从Eclipse官网下载"Eclipse IDE for C/C++ Developers"
- 解压到本地目录(如:C:\eclipse)
- 创建桌面快捷方式

步骤3:配置MAX78000 SDK
- 从ADI官网下载MAX78000 SDK
- 解压到工作目录(如:C:\MAX78000_SDK)
- 在Eclipse中导入SDK:
- File → Import → Existing Projects into Workspace
- 选择SDK目录下的
Examples文件夹 - 勾选要导入的示例项目
步骤4:安装DAPLink驱动
- 连接开发板到PC,按住SW5按钮重新上电
- 设备管理器中会显示MAINTENANCE磁盘
- 安装对应驱动程序
三、第一个项目:RGB LED控制
1. 硬件连接说明
MAX78000FTHR板载RGB LED(D1)连接到以下GPIO:
- 红色LED:P2.0(低电平点亮)
- 绿色LED:P2.1(低电平点亮)
- 蓝色LED:P2.2(低电平点亮)
2. 项目创建
- 在Eclipse中:File → New → C Project
- 选择"Maxim SDK Project"
- 项目名称:
LED_Blink - 选择基础模板:
Blinky或GPIO
3. 完整代码实现
/**
* @file main.c
* @brief MAX78000FTHR RGB LED控制示例
* @author ADI边缘AI开发入门
* @date 2026-04-18
*/
#include <stdio.h>
#include "mxc.h"
#include "board.h"
#include "led.h"
#include "tmr.h"
// LED配置
#define LED_RED_PORT MXC_GPIO2
#define LED_RED_PIN MXC_GPIO_PIN_0
#define LED_GREEN_PORT MXC_GPIO2
#define LED_GREEN_PIN MXC_GPIO_PIN_1
#define LED_BLUE_PORT MXC_GPIO2
#define LED_BLUE_PIN MXC_GPIO_PIN_2
// 延时函数
void delay_ms(uint32_t ms) {
uint32_t start = TMR_GetCount(MXC_TMR0);
while((TMR_GetCount(MXC_TMR0) - start) < ms);
}
// LED初始化
void led_init(void) {
// 配置GPIO为输出模式
MXC_GPIO_Config(&gpio_cfg_out);
// 红色LED
gpio_cfg_out.port = LED_RED_PORT;
gpio_cfg_out.mask = LED_RED_PIN;
gpio_cfg_out.pad = MXC_GPIO_PAD_PULL_UP;
gpio_cfg_out.func = MXC_GPIO_FUNC_OUT;
MXC_GPIO_Config(&gpio_cfg_out);
// 绿色LED
gpio_cfg_out.port = LED_GREEN_PORT;
gpio_cfg_out.mask = LED_GREEN_PIN;
MXC_GPIO_Config(&gpio_cfg_out);
// 蓝色LED
gpio_cfg_out.port = LED_BLUE_PORT;
gpio_cfg_out.mask = LED_BLUE_PIN;
MXC_GPIO_Config(&gpio_cfg_out);
// 初始状态:所有LED熄灭(高电平)
MXC_GPIO_OutSet(LED_RED_PORT, LED_RED_PIN);
MXC_GPIO_OutSet(LED_GREEN_PORT, LED_GREEN_PIN);
MXC_GPIO_OutSet(LED_BLUE_PORT, LED_BLUE_PIN);
}
// LED控制函数
void led_set_color(uint8_t red, uint8_t green, uint8_t blue) {
// 低电平点亮LED
if(red) MXC_GPIO_OutClr(LED_RED_PORT, LED_RED_PIN);
else MXC_GPIO_OutSet(LED_RED_PORT, LED_RED_PIN);
if(green) MXC_GPIO_OutClr(LED_GREEN_PORT, LED_GREEN_PIN);
else MXC_GPIO_OutSet(LED_GREEN_PORT, LED_GREEN_PIN);
if(blue) MXC_GPIO_OutClr(LED_BLUE_PORT, LED_BLUE_PIN);
else MXC_GPIO_OutSet(LED_BLUE_PORT, LED_BLUE_PIN);
}
int main(void) {
// 系统初始化
SystemCoreClockUpdate();
MXC_ICC_Enable(MXC_ICC0);
// 配置定时器用于延时
tmr_cfg_t tmr_cfg;
tmr_cfg.prescalar = TMR_PRESCALE_1;
tmr_cfg.mode = TMR_MODE_CONTINUOUS;
tmr_cfg.clock = MXC_TMR_APB_CLK;
tmr_cfg.cmp_cnt[0] = 0;
tmr_cfg.pol[0] = 0;
TMR_Init(MXC_TMR0, &tmr_cfg);
TMR_Start(MXC_TMR0);
// LED初始化
led_init();
printf("MAX78000FTHR RGB LED控制示例\n");
printf("红绿蓝三色LED交替闪烁...\n");
while(1) {
// 红色
led_set_color(1, 0, 0);
printf("LED: 红色\n");
delay_ms(500);
// 绿色
led_set_color(0, 1, 0);
printf("LED: 绿色\n");
delay_ms(500);
// 蓝色
led_set_color(0, 0, 1);
printf("LED: 蓝色\n");
delay_ms(500);
// 白色(三色全亮)
led_set_color(1, 1, 1);
printf("LED: 白色\n");
delay_ms(500);
// 熄灭
led_set_color(0, 0, 0);
printf("LED: 熄灭\n");
delay_ms(500);
}
return 0;
}
4. 编译与烧录
步骤1:编译项目
- 在Eclipse中右键项目 → Build Project
- 观察Console窗口输出,确认无编译错误
步骤2:连接硬件
- 用Micro USB线连接开发板到PC
- 确认设备管理器中识别到DAPLink设备
步骤3:烧录程序
- 在Eclipse中:Run → Debug Configurations
- 选择"GDB OpenOCD Debugging"
- 点击"Debug"按钮开始烧录
- 观察烧录进度,完成后程序自动运行
5. 预期效果
成功烧录后,开发板上的RGB LED将按照以下顺序循环闪烁:
- 红色(500ms)
- 绿色(500ms)
- 蓝色(500ms)
- 白色(500ms)
- 熄灭(500ms)
同时,串口调试工具(如Tera Term)会显示对应的LED状态信息。
四、调试与故障排除
常见问题解决方案:
1. LED不亮
- 检查GPIO配置是否正确(注意低电平点亮)
- 确认引脚定义是否匹配开发板版本
- 检查电源是否正常(开发板应有电源指示灯)
2. 烧录失败
- 重新安装DAPLink驱动
- 按住SW5按钮重新上电进入维护模式
- 检查USB连接是否稳定
3. 串口无输出
- 确认串口参数:115200, 8N1
- 检查跳线设置(部分版本需要配置串口跳线)
- 尝试不同的串口号
五、进阶:边缘AI应用入门
在掌握基础外设控制后,可以尝试MAX78000的AI功能。以下是一个简单的AI应用开发流程:
1. AI开发环境准备
# 安装AI训练工具
git clone https://github.com/MaximIntegratedAI/ai8x-training
cd ai8x-training
pip install -r requirements.txt
2. 简单AI模型部署框架
#include "ai.h"
#include "camera.h"
// AI模型初始化
void ai_init(void) {
// 加载预训练模型
ai_model_init(&model);
// 配置摄像头
camera_init();
}
// AI推理执行
void ai_inference(void) {
image_t image;
// 获取摄像头图像
camera_capture(&image);
// 执行AI推理
ai_result_t result = ai_run_inference(&model, &image);
// 根据结果控制LED
if(result.class_id == 0) {
led_set_color(1, 0, 0); // 类别0:红色
} else if(result.class_id == 1) {
led_set_color(0, 1, 0); // 类别1:绿色
}
}
3. 从基础到AI的学习路径
- 掌握基础外设:GPIO、UART、I2C、SPI
- 理解摄像头接口:OV7692摄像头驱动
- 学习AI模型训练:使用PyTorch训练简单CNN
- 模型量化与转换:8-bit/4-bit量化,模型转换
- 部署到边缘设备:集成到MAX78000应用
六、总结
通过本教程,我们完成了MAX78000FTHR开发板的基础开发环境搭建,并实现了第一个可执行的LED控制项目。这个看似简单的示例包含了嵌入式开发的核心要素:硬件抽象层使用、GPIO控制、定时器配置、串口调试等。
MAX78000FTHR作为一款边缘AI开发板,其真正的价值在于将AI能力带到资源受限的边缘设备。在掌握基础开发技能后,开发者可以逐步探索其CNN加速器的潜力,实现人脸识别、语音识别、异常检测等智能应用。