项目概述
Glider 几乎包含了制作一台开放硬件电子纸显示器所需的一切,具备快速的75 Hz刷新率、低延迟、多种屏幕更新配置、多种图像模式和灵活抖动选项。它可以通过microHDMI或TYPE-C连接,并且支持Linux、macOS和Windows。我们提供6英寸和13英寸单色套件,均由同一显示屏控制器驱动,也可与其他面板使用。
我们为墨水屏驱动控制器单独设计一款开源的基于FPGA的电泳屏显示控制器Caster EPDC,专为低延迟性能打造,能够驱动电子纸屏幕实现高达 60 Hz 的刷新率。通过将屏幕划分为多个更新区域,Caster 能够即时处理并显示新的图像或文本,无需等待前序更新完成。由于每个像素均受独立管理,结合早期取消技术 (Early Cancellation),确保了像素在接收到新数据时能立即做出响应。最终,该墨水屏驱动控制器在呈现动态内容和流畅交互时,能提供丝滑的响应速度、高帧率以及卓越的对比度。
手里有闲置吃灰的电子纸屏幕,还是想为你的项目找个显示方案?我们的墨水屏驱动控制器让这一切变得简单。该控制器具有极强的兼容性,支持从 6 英寸到 13.3 英寸、涵盖黑白及彩色的多种屏幕,让你轻松连接并复用手头的显示资源。配合我们提供的显示器外壳设计文件,你还可以打造出一款完美契合项目需求的定制化外壳。
功能特性
低延迟/高刷新率墨水屏(EPD)显示器完整解决方案
广泛的面板支持: 支持采用并行接口(Parallel I/F)的电泳显示面板(包括 EInk®、OED 和 DES)。
兼容黑白与彩色: 同时支持纯黑白屏幕及基于彩色滤光片阵列(如 Kaleido™)的彩色屏幕。
极致低延迟: 内部处理延迟低于 20 μs(微秒)。
多种灰度输出模式: 支持2阶、4 阶、 16 阶灰度输出模式。
延迟优化驱动模式: 针对2阶、4 阶灰度驱动模式进行了延迟优化。
混合自动驱动模式: 支持2阶和16 阶灰度自动切换的混合驱动模式。
灵活控制: 主机端软件可在运行时实时控制局部更新与模式切换。
硬件级抖动算法: 内置硬件级拜耳抖动(Bayer)、蓝噪声抖动(Blue-noise)及误差扩散抖动(Error-diffusion),且不产生额外延迟。
标准信号输入: 控制器采用标准 HVsync 信号输入。
丰富的接口设计: 支持 TYPE-C 及 DVI(microHDMI) 输入。
硬件

FPGA 主控: 搭载运行 Caster 的 Xilinx® Spartan-6 LX16 FPGA
显存: DDR3-800 帧缓冲内存(Framebuffer)
视频输入 1: 支持 Type-C DisplayPort Alt-Mode,板载 PTN3460 DP-LVDS 桥接芯片
视频输入 2: 支持 DVI(通过 microHDMI 接口),板载 ADV7611 解码器
供电系统: 专用的电子纸电源,+/-15V电压,支持高达 1A 的峰值电流,可驱动大尺寸面板
电压调优: 带 VCOM 回扫电压检测功能
辅助微控制器: 板载 STM32H750 MCU,用于 USB 通信及固件升级
处理速率: 开启抖动算法时高达 133MP/s,关闭时超过 200MP/s
开发环境: 硬件工程基于 KiCad 设计。您可能需要最新稳定版本的 KiCad 来打开源文件。
pcb
本项目使用KiCAD 8.0 设计了 PCB,为了获得最佳效果,使用了1080 PP的 4 层叠层结构设计,但 2313 或 3313 叠层也是可以接受的。
兼容屏幕
Modos Dev Kit 提供两种屏幕选项:13.3 英寸 1600x1200 和 6 英寸 1404x1072。不过,该板还可以驱动其他面板。有关不同屏幕面板类型之间的差异,请参见 屏幕面板 。
不同的屏幕面板配备不同的连接器,若在主板上集成所有类型的屏幕连接器会占用大量空间。因此我们设计了一款多引脚定义的屏幕转接板,以适配更多屏幕。
主板采用 50 针 + 16 针连接器组合方案。单 50 针连接器即可适配 8 位 / 16 位屏幕,16 针连接器则额外拓展了对 LVDS 屏幕及 32 位 / 64 位屏幕的支持。
Mega 适配器 1:最常见的屏幕
33P-A: ED097OC1-4/TC1
34P-A: ED060XC3/XD4/XG1 etc.
34P-A:ED060XC3/XD4/XG1 等39P-A: ED133UT1-3 ED050SU3 etc.
39P-A:ED133UT1-3 ED050SU3 等40P-A/B: ED078KC1 ED103TC2 etc. (A inserts with contact facing down, B inserts with contact facing up)
40P-A/B:ED078KC1 ED103TC2 等。(A 插头的接触面朝下,B 插头的接触面朝上)50P-A: ED113TC1
要查看哪款适配器可能适合您的屏幕,请参阅 附录 1 - 屏幕列表
MCU 固件
构建MCU固件:
安装 STM32CubeIDE
该软件可在ST官网免费获取:https://www.st.com/en/development-tools/stm32cubeide.html。它支持所有三大主要作系统。
克隆Glider仓库
该仓库可以通过以下方式克隆:
git clone --recursive https://gitlab.com/zephray/Glider.git确保用递归标志来克隆子模块。
构建MCU固件
打开 STM32CubeIDE,用任意工作区路径启动(默认即可)
在菜单中,点击
File->Open projects from file systems点击按钮然后选择,点击
Directory...Glider/fwOpen它应该扫描文件夹并识别为项目,点击
Finish在左侧的窗格中,点击项目高亮
Project Explorerglider_ec_rtos点击工具栏中的建造图标(或菜单中,
Project->Build Project)它应该能正确构建。如果它抱怨缺少 tusb.h,说明子模块没有被克隆(可能是因为缺少了标志,或者是从网页下载的)。输出是
--recursiveGlider/fw/Debug/glider_ec_rtos.bin
固件烧录
刷固件的方法:
安装dfu-util(例如,或
apt install dfu-utilbrew install dfu-util)把按钮靠近USB接口,插上USB线
使用两种方法中的一种来完成烧录过程
方法1:使用提供的烧录工具
确保你有一个 Python 3 环境,并且可以安装包
通过运行安装 Python 包
hidapipip3 install hidapi将目录更改到已编译的比特流和固件中并复制
utils/flash_toolfpga.bitglider_ec_rtos.bin运行这个工具
python3 flash.py
方法二:手动烧录
执行命令,系统应检测到 2 个 DFU 设备:
sudo dfu-util -l执行以下命令进行烧录:
sudo dfu-util -a 0 -i 0 -s 0x08000000:leave -D glider_ec_rtos.bin随后应显示:
File downloaded successfully(文件下载成功)。重新插拔 USB 线缆,以重启并进入新固件。
此时板卡应被识别为一个 USB 串口设备: (请检查
/dev/tty*。在 macOS 上通常类似于/dev/tty.usbmodem...;在 Linux 上通常为/dev/ttyACM0)。使用串口终端软件连接板卡: (推荐:Linux 使用 minicom,macOS 使用 coolterm,Windows 使用 Tera Term)。
现在您已进入 Glider 的 Shell 环境。 按下回车键应显示
#提示符。输入ver命令,系统应返回新的构建日期与时间。使用 Shell 更新 FPGA 的位流文件(Bitstream): 在 Shell 中输入命令
recv fpga.bit。(
recv是通过 XMODEM 协议接收文件的命令;fpga.bit是保存的文件名,文件将保存至板载闪存中)。随后板卡将进入等待传输状态:
Minicom (Linux): 按下 Meta-S(Ctrl-A,然后按 S)打开上传菜单。选择
xmodem,接着选择top.bit文件进行传输。建立连接可能需要约 2 秒。注意: 若 10 秒内未开始传输则会超时,如发生超时,只需重新执行
recv命令即可。其他软件: 同样使用其内置的 Xmodem 传输功能发送文件。
位流文件传输完成后,固件升级即告完成。
如果是首次安装: 请使用与传输位流文件相同的方法,传输字体文件 (
font_24x40.bin)。
License
硬件设计 CERN-OHL-S
固件代码 MIT license
