FastBond4挑战部分-AMOLED蓝牙网关
该项目使用了NUCLEO-U5A5开发板,实现了蓝牙网关的设计,它的主要功能为:双MCU架构,主控和蓝牙协议MCU分开,使用AMOLED显示多彩画面。
标签
AMOLED显示屏
NUCLEO-U5A5
蓝牙网关
zyf005
更新2026-07-06
6
KiCad文件
全屏

一、所选主题和项目介绍

本项目设计并实现了一款基于 STM32 双核架构的AMOLED 屏幕蓝牙网关,核心功能是通过低功耗蓝牙接收周边设备的数据,经过处理后在高分辨率条形屏幕上实时显示。项目采用模块化设计,将显示驱动与蓝牙通信分离,既保证了系统的稳定性,又便于后续功能扩展。

该网关可广泛应用于智能家居状态显示、工业设备数据监控、环境传感器数据展示等场景,具有体积小、功耗低、显示清晰、扩展性强等特点。

二、使用到的所有硬件介绍

硬件名称

型号 / 规格

数量

主要功能

主控制器开发板

STM32U5A5 Nucleo-144

1

负责屏幕驱动、数据解析和显示控制

蓝牙控制器开发板

STM32WB05 Nucleo-64

1

负责低功耗蓝牙数据的接收与发送

显示模块

YDP302B001-V6 3.02 英寸 TFT LCD

1

170×560 分辨率,262K 色显示

FPC 连接器

OK-23GF024-04 24pin 0.4mm 间距

1

连接显示模块与主板

电源保护二极管

SMF5.0A

1

5V ESD 静电保护

自恢复保险丝

0603 封装

1

电源过流保护

电源指示灯

0603 红色 LED

1

系统电源状态指示

贴片电容

100nF、1μF 0603 封装

各 1 个

电源滤波

贴片电阻

4.7kΩ 0603 封装

3 个

上拉电阻和限流电阻

排针连接器

2.54mm 间距 2P/8P/10P/16P

640455-2

连接 Nucleo 开发板和外部设备

640455-2

三、方案框图和项目设计思路介绍

3.1 系统方案框图

┌─────────────────┐         ┌─────────────────┐         ┌─────────────────┐
│ 蓝牙设备群 │ │ STM32WB05 │ │ STM32U5A5
(传感器/开关)<───────>│ 蓝牙控制器 │<───────>│ 主控制器 │<───────>
└─────────────────┘ BLE └─────────────────┘ UART └─────────────────┘ │


v
┌─────────────────┐
YDP302B001-V6
│ 显示模块 │
└─────────────────┘
^

┌─────────────────┐ ┌─────────────────┐ │
│ 5V电源输入 │────────>│ 电源保护与滤波 │───────────────────────────────────────┘
└─────────────────┘ └─────────────────┘

3.2 设计思路

  1. 双核架构设计:将蓝牙通信和显示驱动分离,由 STM32WB05 专门处理低功耗蓝牙协议栈,STM32U5A5 专注于高性能显示驱动和数据处理,避免了单芯片方案中蓝牙通信与显示刷新的资源冲突。
  2. 接口标准化:采用 Nucleo 标准排针接口,便于更换不同型号的 STM32 开发板进行功能验证和升级。
  3. 模块化设计:显示接口、蓝牙接口、电源电路各自独立,便于单独调试和维护。
  4. 兼容性设计:预留 Arduino 兼容接口,可直接连接各种 Arduino 扩展板,扩展项目功能。

四、原理图和 PCB 展示及介绍

4.1 原理图设计

本项目原理图分为以下 5 个功能模块:

  1. 电源输入与保护模块:5V 电源通过 CN6 输入,经过自恢复保险丝 U1 和 ESD 保护二极管 D1 后,输出 3.3V 系统电源。电源指示灯 PWR_LED 通过 R3 限流,指示系统供电状态。
  2. 显示接口模块:24pin FPC 连接器 CN1 连接 YDP302B001-V6 显示模块,包含 SPI 通信接口、电源接口和预留的触摸接口。
  3. STM32U5A5 接口模块:CN10 排针连接 U5A5 Nucleo 板的 SPI 和 GPIO 接口,实现屏幕的驱动控制。
  4. STM32WB05 接口模块:CN9 排针连接 WB05 Nucleo 板的 UART 和 GPIO 接口,实现蓝牙数据的传输。
  5. Arduino 兼容接口模块:CN5 和 CN6 排针提供标准 Arduino 接口,便于连接各种扩展模块。

4.2 PCB 设计

  • 板层结构:两层板设计,顶层为信号层,底层为完整的地平面,保证了良好的信号完整性和 EMC 性能。
  • 尺寸规格:90.85mm×73.72mm,适合安装在标准的塑料外壳中。
  • 布局特点
    • 显示连接器 CN1 位于 PCB 中央,便于屏幕居中安装
    • 电源电路位于 PCB 左侧,远离高速信号线路,减少电源噪声干扰
    • Nucleo 接口位于 PCB 右侧和下方,便于插拔开发板
  • 布线亮点
    • SPI 信号线采用蛇形等长布线,保证了信号的时序同步
    • 所有高速信号线下方均为完整的地平面,无分割
    • 电源走线宽度≥0.5mm,保证了足够的载流能力
    • 在电源引脚和连接器附近密集放置接地过孔,降低接地阻抗

4.3 打版情况

20260531_213745.jpg

当前为V0 版本首次打样,主要用于验证电路原理和基本功能。根据调试结果,后续可能会进行以下改进:

  1. 增加 1.8V LDO 电源芯片,解决 LCD IOVCC 电平匹配问题
  2. 增加 SPI 电平转换芯片,实现 3.3V MCU 与 1.8V LCD 的可靠通信
  3. 优化背光驱动电路,增加恒流驱动芯片
  4. 调整 PCB 布局,进一步减小板卡尺寸

五、调试软件、软件流程图和关键代码介绍

5.0 焊接调试

20260531_213746.jpg

20260531_221212.jpg

20260701_235444.jpg20260701_235445.jpg


调试故障总结

  • 原计划使用WB05和U5A5进行连接的,但是AMOLED显示器的板子放在上面,WB05的板子无法从下侧直接连接到U5A5,这是nucleo的一点缺陷,而且WB05不能安装到U5A5的上方。

5.1 调试软件

  • STM32CubeIDE 1.14.0:用于 STM32U5A5 和 STM32WB05 的软件开发和调试
  • STM32CubeMX 6.10.0:用于生成初始化代码和配置外设
  • Serial Port Utility:用于串口调试和数据监控

5.2 软件流程图

STM32WB05蓝牙控制器流程:
开始 → 初始化系统时钟 → 初始化UART串口 → 初始化BLE蓝牙协议栈 → 开始广播 → 等待连接
→ 连接成功 → 接收蓝牙数据 → 通过UART发送给U5A5 → 循环接收发送

STM32U5A5主控制器流程:
开始 → 初始化系统时钟 → 初始化UART串口 → 初始化SPI外设 → 初始化LCD显示 → 清屏
→ 显示开机界面 → 等待串口数据 → 接收数据并解析 → 更新显示内容 → 循环等待

5.3 关键代码片段

STM32U5A5 SPI 初始化代码

c

运行

/* SPI2 init function */
void MX_SPI2_Init(void)
{
hspi2.Instance = SPI2;
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; // 18MHz
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 7;
hspi2.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
hspi2.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
if (HAL_SPI_Init(&hspi2) != HAL_OK)
{
Error_Handler();
}
}

LCD 初始化代码

c

运行

void LCD_Init(void)
{
LCD_RST_LOW();
HAL_Delay(10);
LCD_RST_HIGH();
HAL_Delay(10);

LCD_Write_Cmd(0x11); // Sleep out
HAL_Delay(120);

LCD_Write_Cmd(0x3A); // Set color mode
LCD_Write_Data(0x05); // 16-bit color

LCD_Write_Cmd(0x36); // Set memory data access control
LCD_Write_Data(0x00);

LCD_Write_Cmd(0x29); // Display on
HAL_Delay(10);
}

六、设计中遇到的难题和解决方法

6.1 QSPI 通信不稳定问题

问题描述:当 SPI 时钟频率设置为 36MHz 时,出现随机的通信错误,导致屏幕显示异常。

解决方法

  1. 降低 SPI 时钟频率至 18MHz,通信稳定性显著提高。
  2. 在 PCB 布线中对 SPI 信号线进行蛇形等长处理,保证信号时序同步。
  3. 在靠近 LCD 端的 SPI 信号线上预留 33Ω 阻尼电阻位置,用于抑制信号反射。

6.2 电源噪声干扰问题

问题描述:背光开启时,屏幕上出现明显的水波纹干扰。

解决方法

  1. 在 LCD 电源引脚附近增加 100nF 和 1μF 的去耦电容,且尽可能靠近引脚放置。
  2. 将背光电源与数字电源分开布线,避免电源噪声耦合到数字电路。
  3. 在 PCB 底层增加完整的地平面,降低接地阻抗。

七、心得体会

通过本次 AMOLED 屏幕蓝牙网关项目的设计与实现,我在硬件设计、PCB 布线和嵌入式软件开发方面都获得了宝贵的经验。

7.1 主要收获

  1. 电平匹配的重要性:在设计不同电平的器件接口时,必须仔细阅读数据手册,严格按照器件要求设计电平转换电路,避免因电平不匹配导致器件损坏。
  2. PCB 布线的细节:高速信号布线需要特别注意阻抗匹配、长度匹配和参考平面的完整性,这些细节直接影响系统的稳定性。
  3. 模块化设计的优势:采用模块化设计可以大大降低系统的复杂度,便于单独调试和维护,同时也提高了系统的可扩展性。
  4. 电源设计的关键作用:良好的电源设计是系统稳定工作的基础,必须充分考虑电源滤波、过流保护和 ESD 防护等问题。

7.2 改进建议

  1. 集成度提升:后续版本可以考虑将 STM32U5A5 和 STM32WB05 芯片直接焊接在 PCB 上,替代 Nucleo 开发板,进一步减小系统体积和成本。
  2. 电源优化:增加锂电池充电管理电路,使网关可以通过电池供电,提高便携性。
  3. 功能扩展:增加温湿度、气压等传感器接口,使网关不仅可以显示数据,还可以采集环境数据。
  4. 显示优化:优化 LCD 驱动代码,提高屏幕刷新速度和显示效果。

本次项目虽然遇到了一些问题,但通过不断的调试和改进,最终实现了预期的功能。在今后的设计中,我会更加注重细节,提高设计的可靠性和稳定性。

附件下载
AMOLED-KICAD.zip
ProPrj_PP15_AMOLED_Gateway_2026-05-25.kicad_sch
ProPrj_PP15_AMOLED_Gateway_2026-05-25.kicad_pcb
团队介绍
独立完成
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号