站内搜索
发作品签到
基于CH32V003F4P6制作的WS2812灯珠控制器
专业版

基于CH32V003F4P6制作的WS2812灯珠控制器

简介

使用CH32V003F4P6制作的WS2812 5050灯珠控制器

简介:使用CH32V003F4P6制作的WS2812 5050灯珠控制器
复刻成本:5

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2026-05-16 16:23:17更新时间:2026-05-18 11:21:46

描述

# CH32V003F4P WS2812 灯控工程
 
##注意:烧录程序只需要接SWIO即可,使用单线调试

## 项目简介

本项目基于 `CH32V003F4P6`,通过 `USART1` 接收上位机发送的 `HEX` 控制帧,再将 `30` 字节的 `RGB` 数据转换后输出到 `SPI1_MOSI`,驱动 `10` 颗串联 `WS2812` 灯珠。

上电后默认进入流水灯效果;当收到第一帧有效控制命令后,系统切换到灯珠控制模式,并按 `50Hz` 周期回传当前运行状态。

## 引脚定义

- `PD5`:`USART1_TX`
- `PD6`:`USART1_RX`
- `PC6`:`SPI1_MOSI`,连接 `WS2812 DIN`
- `PC5`:`SPI1_SCK`
- `PD1`:`SWIO`

## 串口配置

- 串口:`USART1`
- 波特率:`115200`
- 数据位:`8`
- 停止位:`1`
- 校验位:`无`
- 接收脚:`PD6`
- 发送脚:`PD5`
- 若使用 `USB-TTL TX -> PD6`,请保持 `CTRL_UART_USE_PARTIAL_REMAP2 = 0`

## 通讯协议

说明:

- 发送内容必须是 `HEX` 原始字节
- `AA 55` 表示两个字节 `0xAA 0x55`
- 不能直接发送字符 `A`、`A`、空格、`5`、`5`

### 接收帧

格式:

```text
AA 55 + 30字节RGB + 55 AA
```

- `30` 字节表示 `10` 颗灯珠
- 每 `3` 字节对应 `1` 颗灯珠,顺序为 `R`、`G`、`B`
- 整帧长度为 `34` 字节

### 示例

```text
AA 55 FF 00 00 00 FF 00 00 00 FF FF FF FF 00 00 00 10 10 10 20 00 00 00 20 00 00 00 20 08 08 08 55 AA
```

含义:

- 第 1 颗:红色
- 第 2 颗:绿色
- 第 3 颗:蓝色
- 第 4 颗:白色
- 第 5 颗:熄灭
- 第 6 颗:暗白
- 第 7 颗:弱红
- 第 8 颗:弱绿
- 第 9 颗:弱蓝
- 第 10 颗:暗白

### 常用控制命令

- 第 1 颗红灯,其余熄灭

```text
AA 55 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
```

- 第 1 颗绿灯,第 2 颗蓝灯,其余熄灭

```text
AA 55 00 FF 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
```

- 全灯半亮白色

```text
AA 55 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 55 AA
```

- 全灯熄灭

```text
AA 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
```

字节位置说明:

- 第 1 颗:第 1 - 3 字节
- 第 2 颗:第 4 - 6 字节
- ...
- 第 10 颗:第 28 - 30 字节

## 回传帧

### ACK 帧

格式:

```text
AA 55 81 03 [status] [mode] [payload_len] 55 AA
```

- `status = 0`:执行成功
- `status = 1`:帧错误
- `mode = 0`:流水灯模式
- `mode = 1`:控制模式
- `payload_len = 30`

示例:

```text
AA 55 81 03 00 01 1E 55 AA
```

### RUN 帧

格式:

```text
AA 55 82 24 [mode] [led_count] [sysclk4] [rgb30] 55 AA
```

- `50Hz` 周期上报
- 收到有效命令后也会立即上报一次
- `sysclk4` 为 `SystemCoreClock` 的小端 `4` 字节
- `rgb30` 为当前 `10` 颗灯珠的 `RGB` 状态

示例:

```text
AA 55 82 24 01 0A 00 00 00 00 [30字节RGB] 55 AA
```

## 上电行为

- 上电后默认显示流水灯效果
- 收到第一帧有效命令后切换为控制模式
- 控制模式下由上位机下发 `RGB` 数据

## 故障排查

如果没有收到串口数据,请按顺序检查:

1. `PD5/PD6` 接线是否正确,共地是否可靠。
2. 串口参数是否为 `115200, 8N1`。
3. 是否发送的是原始 `HEX` 字节,而不是字符串。
4. `USB-TTL` 的 `TX` 是否真的接到了 `PD6`。
5. 如果板子是 `5V` 供电,转换器电平是否匹配。

## 源文件

- `User/main.c`
- `User/ws2812.c`
- `User/ch32v00x_it.c`
- `User/board_config.h`

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航