跳到主要内容

NM-Display-2.8

产品概述​

NM-Display-2.8 是一款基于 ESP32-S3 的低成本物联网显示开发板,板载 2.8 寸 TFT 触摸屏、6 轴 IMU、RTC、音频编解码器和电源管理芯片,适用于智能家居控制面板、物联网人机界面(HMI)和边缘 AI Agent 显示终端等场景。

NM-Display-2.8

硬件规格​

核心配置​

项目规格
MCUESP32-S3 Dual-core Xtensa LX7, 240MHz
SRAM512KB + 8MB PSRAM
Flash16MB SPI Flash
无线Wi-Fi 4 (802.11 b/g/n) + Bluetooth 5.0 LE
显示屏2.8" ST7789, 320×240 像素
触摸屏FT6336 电容触控 (I2C)
分辨率320 × RGB × 240
接口USB Type-C (供电/下载)

板载资源​

器件型号通信总线
IMUQMI8658 (6轴加速度计/陀螺仪)I2C
RTCPCF85063 (实时时钟)I2C
音频编解码ES8311 (I2S)I2C 控制 + I2S 数据
电源管理AXP2101I2C
IO 扩展器TCA9554I2C
摄像头OV 系列 DVP 接口 (可选)DVP
SD 卡槽SDMMC 1-bit 模式SDMMC
背光驱动LEDC PWM 调光GPIO

引脚定义​

NM-Display-2.8 引脚图

电源与调试​

GPIO功能说明
GNDGround接地
3V33.3V 输出外部 3.3V 输出 (最大 500mA)
TXDUART TX (GPIO43)串口发送 / 通用 GPIO
RXDUART RX (GPIO44)串口接收 / 通用 GPIO

I2C 总线 (共享)​

GPIO功能说明
IO7I2C SCL公共 I2C 时钟线 (不可复用为普通 GPIO)
IO8I2C SDA公共 I2C 数据线 (不可复用为普通 GPIO)
注意

以下所有外设共用一条 I2C 总线 (I2C_NUM_0):TCA9554、FT6336、AXP2101、ES8311(控制)、QMI8658、PCF85063。

显示屏 (ST7789)​

GPIO功能
IO1SPI MOSI
IO5SPI SCLK
IO3LCD DC
IO6背光 BL (PWM)
NCSPI CS
NCLCD RESET
  • 接口: SPI,时钟 80 MHz,SPI 模式 3
  • 驱动: ST7789
  • 分辨率: 320×240 (逻辑宽高,270° 旋转)

触摸屏 (FT6336, I2C)​

GPIO功能说明
IO7I2C SCL触摸控制器时钟
IO8I2C SDA触摸控制器数据
NCTP INT触摸中断 (未连接)
NCTP RESET触摸复位 (未连接)

音频编解码 (ES8311)​

GPIO功能说明
IO7I2C SCLES8311 控制总线
IO8I2C SDAES8311 控制数据
IO12I2S MCLKI2S 主时钟
IO13I2S BCLKI2S 位时钟
IO15I2S LRCKI2S 左/右声道时钟
IO14I2S DIN录音数据输入
IO16I2S DOUT播放数据输出

摄像头 (DVP 接口)​

GPIO功能说明
IO38XCLK摄像头时钟输出
IO17VSYNC垂直同步信号
IO18HREF水平参考信号
IO41PCLK像素时钟
IO45D0 (Y2)数据位 0
IO47D1 (Y3)数据位 1
IO48D2 (Y4)数据位 2
IO46D3 (Y5)数据位 3
IO42D4 (Y6)数据位 4
IO40D5 (Y7)数据位 5
IO39D6 (Y8)数据位 6
IO21D7 (Y9)数据位 7
IO8SCCB SDA(共享 I2C 总线)
IO7SCCB SCL(共享 I2C 总线)
  • XCLK 频率: 20 MHz
  • 帧格式: RGB565, 320×480

SD 卡 (SDMMC 1-bit)​

GPIO功能说明
IO9SDMMC D0数据位 0
IO10SDMMC CMD命令线
IO11SDMMC CLK时钟线
  • 挂载点: /sdcard
  • 模式: 1-bit SDMMC

按键​

GPIO功能说明
IO0BOOT 按钮启动引导按钮 (低电平有效)

其他​

GPIO功能说明
IO1Debug TX调试串口发送
IO2Debug RX调试串口接收
IO3Touch INT / GPIO触摸中断或通用 GPIO
IO4Battery ADC电池电压检测 (可选)

快速入门​

1. 硬件准备​

项目数量
NM-Display-2.8 开发板×1
USB-C 数据线×1
(可选) 电池 (3.7V LiPo)×1

2. 开发环境搭建​

推荐使用 ESP-IDF v5.3+ 进行开发。

# 1. 安装 ESP-IDF (Linux/macOS)
bash -c "$(curl -fsSL https://espressif.github.io/esp-idf/install.sh)"

# 2. 激活环境
source ~/esp-idf/export.sh

# 3. 克隆示例代码
git clone https://github.com/RockBase-lab/NM-Display-28inch.git
cd NM-Display-28inch

# 4. 配置项目
idf.py set-target esp32s3
idf.py menuconfig

# 5. 编译并烧录
idf.py build
idf.py flash monitor

3. 首次烧录​

# 使用 esptool 烧录
esptool.py --chip esp32s3 --port /dev/ttyUSB0 write_flash 0x1000 bootloader.bin 0x8000 partition-table.bin 0x10000 app.bin

4. 串口监视​

idf.py monitor
# 波特率: 115200

板载外设驱动​

IMU 驱动 (QMI8658)​

#include "qmi8658.h"

i2c_dev_t qmi8658;
esp_err_t ret = qmi8658_init(&qmi8658, I2C_NUM_0);

qmi8658_val mag;
ret = qmi8658_read_mag(&qmi8658, &mag);
// mag.x, mag.y, mag.z

RTC 驱动 (PCF85063)​

#include "pcf85063.h"

pcf85063_set_time(&i2c_dev, 2026, 5, 19, 16, 56, 0);
pcf85063_get_time(&i2c_dev, &datetime);

音频播放 (ES8311)​

#include "es8311.h"

es8311_init(I2C_NUM_0);
es8311_set_volume(80); // 0-100

// 播放 PCM 数据流
es8311_play(audio_buffer, length);

触摸屏 (FT6336)​

#include "ft6336.h"

ft6336_init(I2C_NUM_0);
touch_point_t point;
if (ft6336_read_touch(&point)) {
printf("Touch: x=%d, y=%d\n", point.x, point.y);
}

常见问题​

Q1: 触摸屏无响应怎么办?​

A1: 检查 IO7/IO8 是否被其他设备占用,I2C 地址冲突可导致触摸失灵。使用 i2cdetect 工具扫描 I2C 总线,确认触摸芯片地址是否在 0x38 或 0x48。

Q2: 背光不亮如何排查?​

A2: 背光由 IO21 控制(LEDC PWM),检查 GPIO21 是否正确配置。测量 LCD 板上的背光电压确认电路正常。

Q3: SD 卡无法挂载?​

A3: 确保 SDMMC 引脚(IO9/IO10/IO11)未被其他功能占用。检查 SD 卡格式是否为 FAT32,最大支持 32GB。

Q4: 如何进入下载模式?​

A4: 按住 BOOT 按钮,然后按下并松开 RST 按钮,最后松开 BOOT 按钮。设备将进入 UART 下载模式。

Q5: 突然断电无法开机怎么办?​

A5: 可能是USB接口输入电压过低导致 PMU 保护触发,尝试更换高质量的电源或使用电池供电。另外,对于使用摄像头等外设的应用,一定要检查PMU AXP2101的配置是否正确,确保电源管理芯片能够提供足够的电流。具体可以参考NM-Display-2.8 工厂测试代码

参考资料​

资源链接
示例代码RockBase-lab/NM-Display-28inch
ESP-IDF 文档https://docs.espressif.com/projects/esp-idf/
ESP32-S3 数据手册Espressif ESP32-S3 Datasheet