# GD32 **Repository Path**: keNengbu/gd32 ## Basic Information - **Project Name**: GD32 - **Description**: 使用GD32C231C - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-19 - **Last Updated**: 2025-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GD32 ## 介绍 [DMX512解码写码器工程](GD32C231C_EVAL_Demo_Suites/Projects/16_SPI_LCD/main.c) 基于GD32C231C8T6芯片的DMX512解码写码器(SP201E+SP107E) ● DMX512协议解码: ○ 了解DMX512协议,成功发送、接收并解码DMX512数据。 ● 硬件与灯效控制: ○ 完成使用SPI+DMA驱动WS2812RGB灯珠芯片。 ○ 完成使用USART+DMA驱动DMX512灯珠芯片。 ○ 实现了11种灯效模式。 ○ 实现两个按键控制:切换灯效模式、灯带开关。 ○ LCD屏局部刷新显示对应效果名称。 ● 记忆功能: ○ 完成了Flash模拟EEPROM功能,使用轮换存储四页擦除算法实现上电恢复功能。 ## 技术特性 - 硬件配置 :使用USART1(PA2发送引脚)和PA1作为数据使能引脚 - 协议支持 :完全符合DMX512标准(250kbps波特率,2停止位) - 时序控制 :使用TIMER2精确控制Break和MAB信号时序 - 通道支持 :最多支持512个DMX512通道 - 效果丰富 :包含12种预定义灯带效果 - 自动刷新 :支持40Hz自动刷新频率 - 颜色算法 :实现了HSV到RGB转换和颜色混合 - 实现了手动Break信号发送:通过禁用UART发送功能,将TX引脚配置为普通输出并拉低来产生Break信号 - 在MAB阶段恢复TX引脚为UART复用功能 ## 使用说明 1. `dmx512.h` - DMX512驱动头文件 - 定义了DMX512协议常量和数据结构 - 包含RGB颜色结构体和控制句柄 - 声明了所有驱动函数和灯带效果函数 2. `dmx512.c` - DMX512驱动实现文件 - 实现了完整的DMX512协议栈 - 包含UART和定时器配置 - 实现了状态机控制数据发送时序 - 提供了多种灯带效果函数 3. `dmx512_test.h` - 测试函数头文件 - 支持12种不同的灯带效果:纯红色、纯绿色、纯蓝色、纯白色、彩虹效果、呼吸灯、流水灯、渐变效果、闪烁效果、波浪效果、火焰效果、警灯效果 - 包含测试配置结构体 - 使用 dmx512_test_set_effect() 和 dmx512_test_run() 统一管理效果 4. `dmx512_test.c` - 测试函数实现文件 - 实现了彩虹、呼吸灯、流水灯、火焰等多种效果 - 包含HSV到RGB转换和颜色混合算法 - 提供了正弦波计算用于动画效果 1. `ws2812.h` - WS2812驱动头文件 - 定义了WS2812协议时序参数 - 配置SPI0和DMA通道2 - 使用PB5引脚作为数据输出 - 提供完整的API接口 2. `ws2812.c` - WS2812驱动实现 - SPI+DMA核心驱动功能 - WS2812时序编码(逻辑0: 0xC0, 逻辑1: 0xF8) - 自动刷新和中断处理 - 颜色工具函数(HSV转RGB、亮度调节等) 3. `ws2812_test.h` - WS2812测试模块头文件 - 定义了12种灯效类型(与DMX512一致) - 测试配置结构体和API接口 4. `ws2812_test.c` - WS2812测试模块实现 - 复用DMX512的所有灯效算法 - 包括彩虹、呼吸灯、流水灯、渐变、闪烁、波浪、火焰、警灯等效果 ## 使用方法 1. 调用 dmx512_init(48) 初始化驱动(48通道控制16个RGB灯珠) 2. 使用 dmx512_set_rgb() 设置单个灯珠颜色 3. 使用 dmx512_set_all_color() 设置所有灯珠为同一颜色 4. 调用各种效果函数如 dmx512_rainbow_effect() 实现动态效果 5. 使用 dmx512_send_frame() 发送数据到灯带 系统现在可以驱动DMX512灯带,实现丰富的颜色变化和动态效果,适用于舞台灯光、装饰照明等应用场景。