跳到主要内容

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-iot/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-iot/NM-Display-28inch
ESP-IDF 文档https://docs.espressif.com/projects/esp-idf/
ESP32-S3 数据手册Espressif ESP32-S3 Datasheet