Funpack4-3 - 用MAX32655FTHR实现流水灯效果
该项目使用了GPIO 端口外置的RGB灯,实现了流水灯的设计,它的主要功能为:基于MAX32655FTHR,利用板载RGB灯实现流水灯功能。
标签
Funpack活动
Max32655THR
RGB LED
qiuxx
更新2026-02-25
16

Funpack4-3 - MAX32655FTHR实现流水灯效果

  1. 项目描述

本项目基于MAX32655FTHR,利用板载RGB灯实现流水灯功能。

1.1         硬件介绍

MAX32655FTHR 是一款快速开发平台,可帮助工程师使用MAX32655 Arm© Cortex®-M4FBluetooth® 5.2低功耗(LE)快速实施超低功耗无线解决方案。该电路板还包括MAX20303 PMIC以实现电池和电源管理。0.9 x 2.6英寸小尺寸双排接头与Adafruit Feather Wing外设扩展板兼容。该电路板包括各种外设,如数字麦克风、低功耗立体声音频编解码器、128MB QSPI闪存、micro SD卡连接器、RGB指示器LED和按钮。MAX32655FTHR提供功率优化的灵活平台,以便进行快速概念验证和早期软件开发,从而加快产品上市。

板卡优势与特点:

ARM Cortex-M4F100MHz

32RISC-V协处理器,可减轻时序关键型蓝牙处理负荷

512KB闪存

128KB SRAM

16KB缓存

蓝牙5.2 LE无线电

带电量计的MAX20303可穿戴PMIC

通过USB充电

用于Arm Cortex-M4F的板载DAPLink调试和编程接口

试验板兼容接头

Micro USB连接器

Micro SD卡连接器

集成外设

RGB指示灯LED

用户按钮

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

数字麦克风

SWD调试器

虚拟UART控制台

 

微控制器:MAX32655

MAX32655微控制器(MCU)是一款先进的片上系统(SoC),采用Arm® Cortex®-M4F CPU,可高效执行复杂的函数和算法计算,额定温度范围为-40°C+105°C。该SoC将功率调节和管理功能与单电感多输出(SIMO)降压稳压器系统集成于一体。板载新一代蓝牙® 5.2低功耗(LE)无线电,支持远程(编码)和高吞吐量模式以及医疗身体区域网络(MBAN)。该器件提供具有512KB闪存和128KB SRAM的大型板载存储器,并在一个32KB SRAM存储区上提供可选的纠错编码(ECC)功能。该32KB存储区也可保留在BACKUP模式中。提供8KB用户OTP区域。



MAX32655采用81 CTBGA封装(8mm x 8mm0.8mm间距),支持多种高速外设,例如I2C50MHz SPIUART,以及一个用于连接音频编解码器的I2S端口。八路输入、10ADC可用于监测来自外部模拟源的模拟输入。此外,低功耗UART (LPUART)支持在超低功耗的睡眠模式下工作,有助于在不发生任何数据丢失的情况下进行唤醒。总共提供了六个具有I/O功能的定时器,包括两个低功耗定时器,即使在超低功耗的睡眠模式下也能实现脉冲计数、捕获/比较和脉宽调制(PWM)生成。

 

特性:

超低功耗无线微控制器

内置100MHz振荡器

具有7.3728MHz系统时钟选项的灵活低功耗模式

512KB闪存和128KB SRAM

一个32KB SRAM存储区上提供可选ECC

16KB指令缓存

蓝牙5.2 LE无线电

专用的超低功耗32RISC-V协处理器,可减轻时序关键型蓝牙处理负荷

提供完全开源的蓝牙5.2协议栈

支持医疗身体区域网络(MBAN)Mesh

高吞吐量(2Mbps)模式

远程(125kbps500kbps)模式

Rx灵敏度:-97dBmTx功率:+5.5dBm

单端天线连接(50Ω)

提供电源管理充分延长电池寿命

电源电压范围:2.0V3.6V

集成SIMO功率调节器

3.0V时的有源电流为12.9μA/MHz

对于32KB3.0V时的保持电流为1.53μA

低功耗模式下可选择SRAM数据保留功能+RTC

多个外设,用于实施系统控制

多达两个高速SPI控制器/目标

多达三个I2C控制器/目标

多达四个UART

一个I2S控制器/目标

多达8路输入、10Σ-Δ ADC 7.8ksps

多达四个微功耗比较器

定时器:四个32位、两个低功耗、一个看门狗、一个低功耗看门狗

1-Wire®控制器

多达四个脉冲序列(PWM)引擎

带唤醒定时器的RTC

多达52GPIO

安全性和完整性

可选安全引导

TRNG Seed发生器

AES 128/192/256硬件加速引擎

 

板卡引脚图:

 

 

 

 

板卡框图:



MAX32655FTHR 顶部组件:



MAX32655FTHR 底部组件:



 

1.2         功能概览

利用MCUGPIO端口P0.18,P0.19,P0.26控制外围D3 RGB 灯顺序开关,形成流水灯效果。


image.png



1.3         设计思路

先套用MAX32655 GPIO官方例程,在此基础上增加流水灯效果:RGB LED引脚定义, RGB_LED引脚,定义RGB颜色控制函数, 定义RGB_流水灯函数,使用板载LED驱动函数 运行流水灯1 启动RGB流水灯2


2.    功能实现

2.1         软件流程


2.2          实现过程

主要程序代码如下:

//    RGB LED引脚定义。
#define RGB_LED_RED_PIN MXC_GPIO_PIN_18
#define RGB_LED_GREEN_PIN MXC_GPIO_PIN_19
#define RGB_LED_BLUE_PIN MXC_GPIO_PIN_26//  RGB_LED引脚初始化定义

void RGB_LED_Init(void) {
// 配置红色LED引脚
mxc_gpio_cfg_t led_red = {
.port = MXC_GPIO0,
.mask = RGB_LED_RED_PIN,
.func = MXC_GPIO_FUNC_OUT,
.pad = MXC_GPIO_PAD_NONE,
.vssel = MXC_GPIO_VSSEL_VDDIO
};

MXC_GPIO_Config(&led_red);
// 配置绿色LED引脚
mxc_gpio_cfg_t led_green = {
.port = MXC_GPIO0,
.mask = RGB_LED_GREEN_PIN,
.func = MXC_GPIO_FUNC_OUT,
.pad = MXC_GPIO_PAD_NONE,
.vssel = MXC_GPIO_VSSEL_VDDIO
};

MXC_GPIO_Config(&led_green);
// 配置蓝色LED引脚
mxc_gpio_cfg_t led_blue = {
.port = MXC_GPIO0,
.mask = RGB_LED_BLUE_PIN,
.func = MXC_GPIO_FUNC_OUT,
.pad = MXC_GPIO_PAD_NONE,
.vssel = MXC_GPIO_VSSEL_VDDIO
};

MXC_GPIO_Config(&led_blue);
// 初始状态:所有LED熄灭
MXC_GPIO_OutSet(led_red.port, led_red.mask);
MXC_GPIO_OutSet(led_green.port, led_green.mask);
MXC_GPIO_OutSet(led_blue.port, led_blue.mask);
}

//控制单个LED
void RGB_LED_On(mxc_gpio_regs_t* port, uint32_t mask) {
MXC_GPIO_OutClr(port, mask); // 低电平点亮
}

void RGB_LED_Off(mxc_gpio_regs_t* port, uint32_t mask) {
MXC_GPIO_OutSet(port, mask); // 高电平熄灭
}
 
// RGB颜色控制1
void Set_RGB_Color(uint8_t red, uint8_t green, uint8_t blue) {
if(red)
RGB_LED_On(MXC_GPIO0, RGB_LED_RED_PIN);
else
RGB_LED_Off(MXC_GPIO0, RGB_LED_RED_PIN);

if(green)
RGB_LED_On(MXC_GPIO0, RGB_LED_GREEN_PIN);
else
RGB_LED_Off(MXC_GPIO0, RGB_LED_GREEN_PIN);

if(blue)
RGB_LED_On(MXC_GPIO0, RGB_LED_BLUE_PIN);
else
RGB_LED_Off(MXC_GPIO0, RGB_LED_BLUE_PIN);

}

//  RGB流水灯2
void RGB_Flow_LED(void) {
while(1) {
// 红色亮
Set_RGB_Color(1, 0, 0);
printf(" Red LED on.\n");
delay_ms(3000);

// 绿色亮
Set_RGB_Color(0, 1, 0);
printf(" Green LED on.\n");
delay_ms(3000);

// 蓝色亮
Set_RGB_Color(0, 0, 1);
printf(" Blue LED on.\n");
delay_ms(3000);

// 黄色 (红+绿)
Set_RGB_Color(1, 1, 0);
printf(" Yellow LED on.\n");
delay_ms(3000);

// 青色 (绿+蓝)
Set_RGB_Color(0, 1, 1);
printf(" Indigo LED on .\n");
delay_ms(3000);

// 紫色 (红+蓝)
Set_RGB_Color(1, 0, 1);
printf(" Purple LED on.\n");
delay_ms(3000);

// 白色 (全亮)
Set_RGB_Color(1, 1, 1);
printf(" White LED.\n");
delay_ms(3000);

// 全灭

Set_RGB_Color(0, 0, 0);
printf(" LED off.\n");
delay_ms(3000);
}

}

// main主程序
int main(void)
{
printf("\n\n************************* MAX32655 GPIO and RGB LED ***********************\n\n");

// 初始化GPIO功能
mxc_gpio_cfg_t gpio_in, gpio_out, gpio_interrupt, gpio_interrupt_status;
int counter = 0;

/* Setup input pin. */
gpio_in.port = MXC_GPIO_PORT_IN;
gpio_in.mask = MXC_GPIO_PIN_IN;
gpio_in.pad = MXC_GPIO_PAD_PULL_UP;
gpio_in.func = MXC_GPIO_FUNC_IN;
gpio_in.vssel = MXC_GPIO_VSSEL_VDDIO;
gpio_in.drvstr = MXC_GPIO_DRVSTR_0;
MXC_GPIO_Config(&gpio_in);

/* Setup output pin. */
gpio_out.port = MXC_GPIO_PORT_OUT;
gpio_out.mask = MXC_GPIO_PIN_OUT;
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 (counter<5) {
/* Read state of the input pin. */
if (MXC_GPIO_InGet(gpio_in.port, gpio_in.mask)) {
/* Input pin was high, set the output pin. */
MXC_GPIO_OutSet(gpio_out.port, gpio_out.mask);
} else {
/* Input pin was low, clear the output pin. */
MXC_GPIO_OutClr(gpio_out.port, gpio_out.mask);
}
counter++;
printf("Counter is %d\n",counter);
delay_ms(1000);
}

// 初始化RGB LED
RGB_LED_Init();
printf("Test R\G\B LED one time..\n");

// 使用板载LED驱动函数
LED_On(0); // 红色
LED_Off(1); // 绿色
LED_Off(2); // 蓝色
printf(" R LED on one time\n");
MXC_Delay(2000000);

LED_Off(0); // 红色
LED_On(2); // 蓝色
LED_Off(1); // 绿色
printf("B LED on one time..\n");
MXC_Delay(2000000);

LED_Off(0); // 红色
LED_Off(2); // 蓝色
LED_On(1); // 绿色
printf("G LED one time..\n");
MXC_Delay(2000000);

// 关闭所有LED

LED_Off(0);
LED_Off(1);
LED_Off(2);
printf(" LED off time..\n");
MXC_Delay(2000000);
printf("GPIO demo completed. Starting RGB LED flow pattern...\n");

// 初始化RGB LED
RGB_LED_Init();

// 启动RGB流水灯2
RGB_Flow_LED();
// 程序不会执行到这里,因为RGB_Flow_LED是无限循环
return 0;
}


  1. 功能展示.






以上是·SSCOM 串口助手上显示RGB LED闪亮状态,以及开发板LED 实拍图片。


  1. 项目总结

在电子森林这个项目活动中初步学习了maxium SDK 软件的使用,MCU编程方法和步骤,还需要努力学习更多的知识去深入了解MCU编程。



附件下载
max32655led.7z
MAX32655FTHR RGB LED 流水灯程序
团队介绍
团队成员
qiuxx
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号