10.3inch e-Paper HAT (D)

来自丢石头百科
10.3inch e-Paper HAT (D)
10.1inch e-paper (D)
10.3inch e-Paper HAT (D)
基本信息

分类: 树莓派 e-Paper

品牌: Waveshare

功能简介
特性
  • 树莓派10.3英寸墨水屏
  • 分辨率:1872×1404
  • 显示颜色:黑、白

接口

USB接口 SPI接口 I80接口 I2C接口 RPi接口

相关产品

注意:由于10.3inch e-Paper (D)尺寸比较大,相对的,面板和FPC排线都非常脆弱,在研发是需要特别小心,以免造成不必要损坏。研发调试时,建议在FPC排线处贴透明胶加固。另外,不可带电插拔e-paper。

产品概述

  • 本产品是柔性电子墨水屏模块,10.3英寸,分辨率为1872×1404,使用IT8951作为控制器,可使用USB/SPI/I80/I2C接口进行控制,支持局部刷新。
  • 相比普通的电子墨水屏,我可弯曲,不易折损,厚度更薄,重量更轻。
  • 具有功耗低、视角宽、断电仍可清晰显示等优点,常用于电子书阅读器、墨水屏显示器、工业仪表等显示应用。

产品特点

  • 柔性电子墨水屏,可弯曲 (仅显示区域)
  • 无需背光,断电可长时间保持最后一屏的显示内容
  • 功耗低,电子墨水屏裸屏基本只在刷新时耗电
  • 基于Raspberry Pi 40PIN GPIO接口设计,适用于Raspberry Pi系列主板
  • 引出USB/SPI/I80/I2C控制接口,可接入Raspberry/Nucleo等主控板

产品参数

  • 工作电压: 5V
  • 通信接口: USB/SPI/I80/I2C
  • 外形尺寸: 227.7mm × 165.8mm × 0.647mm
  • 显示尺寸: 209.664mm × 157.248mm
  • 点 距: 0.112mm × 0.112mm
  • 分 辨 率: 1872 × 1404
  • 显示颜色: 黑、白
  • 灰度等级: 2-16级 (1-4位)
  • 全局刷新: 450ms
  • 总刷新功耗: 1.2W(typ.)
  • 总待机功耗: 0.1W(typ.)
  • 可视角度: >170°

工作原理

  • 本产品使用的电子纸采用“微胶囊电泳显示”技术进行图像显示,其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移。电子纸显示屏是靠反射环境光来显示图案的,不需要背光,即使是在阳光底下,电子纸显示屏依然清晰可视,可视角度几乎达到了 180°。因此,电子纸显示屏非常适合阅读。


如何使用

1. 用于电脑的 Windows 系统。使用方法:

1) 硬件连接如下图:

10.3inch-e-Paper-HAT-D-Manual-01.jpg

2) 将驱动板的USB接口连接到PC机的USB接口,之后在PWR ONLY上连接5V电源适配器。由于e-paper在刷新瞬间,功耗比较高,PC机的USB接口无法直接驱动,须使用外部电源适配器额外供电,且必须先接USB线,在接电源线,否则无法正常识别。
3) 打开E-LINK-TCON-DEMO测试软件。
4) 点击connect。正常显示如下图:

10.3inch-e-Paper-HAT-D-Manual-02.jpg

5) √选"AutoSet",点击"Open File",选择相应的图片,点击打开。会弹出图片的浏览图,点击"OK",如下图:

10.3inch-e-Paper-HAT-D-Manual-03.jpg

6) 点击Display。正常就可以显示当前的图片了。

10.3inch-e-Paper-HAT-D-Manual-04.jpg

注:如果客户希望在Windows上使用USB接口对e-Paper进行开发,需要联系微雪团队,签NDA才可以拿到E-LINK-TCON-DEMO源码。

配合树莓派使用

1) 硬件连接如下图,把HAT直接接到树莓派的GPIO接口上,使用SPI接口与树莓派通信。

10.3inch-e-Paper-HAT-D-Manual-06.jpg

也可以通过杜邦线进行连接,具体如下表:

IT8951引脚 Pi BCM引脚 描述
5V 5V 电源正(5V电源输入)
GND GND 电源地
MISO P9 SPI通信MISO引脚
MOSI P10 SPI通信MOSI引脚
SCK P11 SPI通信SCK引脚
CS P8 SPI片选引脚(低电平有效)
RST P17 外部复位引脚(低电平复位)
HRDY P24 忙状态输出引脚(低电平表示忙)


2) 确定拨码开关选择到SPI模式。

9.7inch-e-Paper-HAT-Manual-14.jpg

3) 安装bcm2835 C 函数库,我们提供了 bcm2835 的安装包(点此下载),用户也可以到 bcm2835 官网下载最新版本:

http://www.airspayce.com/mikem/bcm2835/

复制安装包到树莓派系统中,执行如下代码:

tar zxvf bcm2835-1.xx.tar.gz
cd bcm2835-1.xx
./configure
make
sudo make check
sudo make install

安装完成。

4) 使用DEMO程序刷新图片

我们提供了10.3inch e-Paper HAT的测试DEMO程序,执行如下代码进行测试:

git clone https://github.com/waveshare/IT8951.git
cd IT8951
make
sudo ./IT8951 0 0 01.bmp

该程序支持直接显示常用的BMP格式,对于某些不常用的BMP图片格式可能无法正常解析,此时只需要把该BMP图片通过Windows自带的画图工具打开,另存为相应的BMP格式即可。

其中./IT8951 0 0 01.bmp中,前两个参数分别指要显示图片左上角的X坐标和Y坐标,01.bmp是要显示的文件名。

另外,为了使显示更佳,可以设置相应的VCOM电压。该值每一个屏都可能不相同,需要单独设置。

设置方法:

查看e-paper标签的VCOM电压,如VCOM电压为-1.5V。

设置IT8951.h的VCOM参数,如下图:

9.7inch-e-Paper-HAT-Manual-02.jpg

配合STM32单片机使用

由于IT8951需要占用比较大的RAM空间,一般STM32单片机都无法直接满足,需要外加SDRAM之类的芯片进行RAM扩展。

这里测试,我们使用Open429I作为测试板,其板载的IS42S16400J (64-MBIT) SDRAM,已经可以满足驱动10.3inch e-paper HAT了。

STM32可以通过SPI、I80或I2C接口与IT8951进行通信。其中SPI接口主要优势是占用的引脚少,驱动方式相对简单,通信速度可以满足大部分场景使用。而I80接口驱动方式非常简单,通信速度也非常快,但占用的引脚多。而I2C接口虽然占用引脚少,但通信速度非常慢,不推荐使用。

综合考虑,我们最推荐用户使用SPI接口与IT8951进行通信,如在SPI接口不满足应用要求的情况下才考虑I80接口。

SPI通信

1) 硬件连接

IT8951引脚 STM32引脚 描述
5V 5V 电源正(5V电源输入)
GND GND 电源地
MISO PE13 SPI通信MISO引脚
MOSI PE14 SPI通信MOSI引脚
SCK PE12 SPI通信SCK引脚
CS PE11 SPI片选引脚(低电平有效)
RST PC5 外部复位引脚(低电平复位)
HRDY PA7 忙状态输出引脚(低电平表示忙)

2) 确定拨码开关选择到SPI模式。

9.7inch-e-Paper-HAT-Manual-14.jpg

3) 使用DEMO程序刷新图片

我们提供了测试的DEMO程序(点此下载

下载后,解压,使用keil打开工程,目录地址:Open429I-IT8951-Demo\Project\IT8951\MDK-ARM\Project.uvproj。

点击编译,之后打开IT8951.h,确定定义了IT8951_Interface_SPI,点击重新编译,下载。几秒后正常可以看到e-paper开始循环显示图片。

9.7inch-e-Paper-HAT-Manual-15.jpg

其中串口打印信息如下(波特率115200):

7.8inch-e-Paper-HAT-Manual03.JPG

I80通信

1) 硬件连接

IT8951引脚 STM32引脚 描述
DBUS0~DBUS15 PB0~PB15 数据接口
HWE PC1 写使能(低电平有效)
D/C PC7 数据/命令(低电平表示命令)
CSEL PC6 片选使能(低电平有效)
HRD PC3 读使能(低电平有效)
RST PC0 外部复位引脚(低电平复位)
BUSY PA7 忙状态输出引脚(低电平表示忙)
GND GND 电源地
VCC 5V 电源正(5V电源输入)

2) 确定拨码开关选择到I80模式。

9.7inch-e-Paper-HAT-Manual-17.jpg

3) 使用DEMO程序刷新图片

我们提供了测试的DEMO程序(点此下载

下载后,解压,使用keil打开工程,目录地址:Open429I-IT8951-Demo\Project\IT8951\MDK-ARM\Project.uvproj。

点击编译,之后打开IT8951.h,确定定义了IT8951_Interface_I80,点击重新编译,下载。几秒后正常可以看到e-paper开始循环显示图片。

9.7inch-e-Paper-HAT-Manual-18.jpg

其中串口打印信息如下(波特率115200):

7.8inch-e-Paper-HAT-Manual03.JPG

显示图片

为了使DEMO程序尽可能简单和方便移植,我们并没有在DEMO程序中加入文件系统,所以DEMO程序中是直接使用显示矩阵的方式进行显示图片的。

也就是我们需要添加新图片时需要先将图片转为数据矩阵(数组),在通过程序进行显示。以下简单的介绍如何将图片转化为数据矩阵并进行显示。

1.先准备一张BMP的示例图片,这里以分辨率是800*600的图片作为例子。

2.打开图片取模软件,点击File-》Open..-》选择上面的图片,如下图:

6inch-e-Paper-HAT-Manual-09.jpg

3.点击Image-》Convert to -》 Gray256 (8 BPP),如下图:

6inch-e-Paper-HAT-Manual-10.jpg

4.点击File-》Save As...-》选择保存类型“C” bitmap file (*.c) -》输入文件名,点击保存。

5.选择8 bit per pixel,如下图,点击OK,。可以得到一个C文件。

9.7inch-e-Paper-HAT-Manual-21.jpg

6.将C文件增加到Keil工程,将以下无用信息删除:

/*********************************************************************
*                SEGGER Microcontroller GmbH & Co. KG                *
*        Solutions for real time microcontroller applications        *
*                           www.segger.com                           *
**********************************************************************
*                                                                    *
* C-file generated by                                                *
*                                                                    *
*        Bitmap Converter for emWin V5.22.                           *
*        Compiled Jul  4 2013, 12:18:24                              *
*        (c) 1998 - 2013 Segger Microcontroller GmbH && Co. KG       *
*                                                                    *
**********************************************************************
*                                                                    *
* Source file: zoo_800_600                                           *
* Dimensions:  800 * 600                                             *
* NumColors:   256                                                   *
*                                                                    *
**********************************************************************
*/

#include <stdlib.h>

#include "GUI.h"

#ifndef GUI_CONST_STORAGE
  #define GUI_CONST_STORAGE const
#endif

extern GUI_CONST_STORAGE GUI_BITMAP bmzoo_800_600;

/*********************************************************************
*
*       Palette
*
*  Description
*    The following are the entries of the palette table.
*    The entries are stored as a 32-bit values of which 24 bits are
*    actually used according to the following bit mask: 0xBBGGRR
*
*    The lower   8 bits represent the Red   component.
*    The middle  8 bits represent the Green component.
*    The highest 8 bits represent the Blue  component.
*/
static GUI_CONST_STORAGE GUI_COLOR _Colorszoo_800_600[] = {
  0x000000, 0x010101, 0x020202, 0x030303,
  0x040404, 0x050505, 0x060606, 0x070707,
  0x080808, 0x090909, 0x0A0A0A, 0x0B0B0B,
  0x0C0C0C, 0x0D0D0D, 0x0E0E0E, 0x0F0F0F,
  0x101010, 0x111111, 0x121212, 0x131313,
  0x141414, 0x151515, 0x161616, 0x171717,
  0x181818, 0x191919, 0x1A1A1A, 0x1B1B1B,
  0x1C1C1C, 0x1D1D1D, 0x1E1E1E, 0x1F1F1F,
  0x202020, 0x212121, 0x222222, 0x232323,
  0x242424, 0x252525, 0x262626, 0x272727,
  0x282828, 0x292929, 0x2A2A2A, 0x2B2B2B,
  0x2C2C2C, 0x2D2D2D, 0x2E2E2E, 0x2F2F2F,
  0x303030, 0x313131, 0x323232, 0x333333,
  0x343434, 0x353535, 0x363636, 0x373737,
  0x383838, 0x393939, 0x3A3A3A, 0x3B3B3B,
  0x3C3C3C, 0x3D3D3D, 0x3E3E3E, 0x3F3F3F,
  0x404040, 0x414141, 0x424242, 0x434343,
  0x444444, 0x454545, 0x464646, 0x474747,
  0x484848, 0x494949, 0x4A4A4A, 0x4B4B4B,
  0x4C4C4C, 0x4D4D4D, 0x4E4E4E, 0x4F4F4F,
  0x505050, 0x515151, 0x525252, 0x535353,
  0x545454, 0x555555, 0x565656, 0x575757,
  0x585858, 0x595959, 0x5A5A5A, 0x5B5B5B,
  0x5C5C5C, 0x5D5D5D, 0x5E5E5E, 0x5F5F5F,
  0x606060, 0x616161, 0x626262, 0x636363,
  0x646464, 0x656565, 0x666666, 0x676767,
  0x686868, 0x696969, 0x6A6A6A, 0x6B6B6B,
  0x6C6C6C, 0x6D6D6D, 0x6E6E6E, 0x6F6F6F,
  0x707070, 0x717171, 0x727272, 0x737373,
  0x747474, 0x757575, 0x767676, 0x777777,
  0x787878, 0x797979, 0x7A7A7A, 0x7B7B7B,
  0x7C7C7C, 0x7D7D7D, 0x7E7E7E, 0x7F7F7F,
  0x808080, 0x818181, 0x828282, 0x838383,
  0x848484, 0x858585, 0x868686, 0x878787,
  0x888888, 0x898989, 0x8A8A8A, 0x8B8B8B,
  0x8C8C8C, 0x8D8D8D, 0x8E8E8E, 0x8F8F8F,
  0x909090, 0x919191, 0x929292, 0x939393,
  0x949494, 0x959595, 0x969696, 0x979797,
  0x989898, 0x999999, 0x9A9A9A, 0x9B9B9B,
  0x9C9C9C, 0x9D9D9D, 0x9E9E9E, 0x9F9F9F,
  0xA0A0A0, 0xA1A1A1, 0xA2A2A2, 0xA3A3A3,
  0xA4A4A4, 0xA5A5A5, 0xA6A6A6, 0xA7A7A7,
  0xA8A8A8, 0xA9A9A9, 0xAAAAAA, 0xABABAB,
  0xACACAC, 0xADADAD, 0xAEAEAE, 0xAFAFAF,
  0xB0B0B0, 0xB1B1B1, 0xB2B2B2, 0xB3B3B3,
  0xB4B4B4, 0xB5B5B5, 0xB6B6B6, 0xB7B7B7,
  0xB8B8B8, 0xB9B9B9, 0xBABABA, 0xBBBBBB,
  0xBCBCBC, 0xBDBDBD, 0xBEBEBE, 0xBFBFBF,
  0xC0C0C0, 0xC1C1C1, 0xC2C2C2, 0xC3C3C3,
  0xC4C4C4, 0xC5C5C5, 0xC6C6C6, 0xC7C7C7,
  0xC8C8C8, 0xC9C9C9, 0xCACACA, 0xCBCBCB,
  0xCCCCCC, 0xCDCDCD, 0xCECECE, 0xCFCFCF,
  0xD0D0D0, 0xD1D1D1, 0xD2D2D2, 0xD3D3D3,
  0xD4D4D4, 0xD5D5D5, 0xD6D6D6, 0xD7D7D7,
  0xD8D8D8, 0xD9D9D9, 0xDADADA, 0xDBDBDB,
  0xDCDCDC, 0xDDDDDD, 0xDEDEDE, 0xDFDFDF,
  0xE0E0E0, 0xE1E1E1, 0xE2E2E2, 0xE3E3E3,
  0xE4E4E4, 0xE5E5E5, 0xE6E6E6, 0xE7E7E7,
  0xE8E8E8, 0xE9E9E9, 0xEAEAEA, 0xEBEBEB,
  0xECECEC, 0xEDEDED, 0xEEEEEE, 0xEFEFEF,
  0xF0F0F0, 0xF1F1F1, 0xF2F2F2, 0xF3F3F3,
  0xF4F4F4, 0xF5F5F5, 0xF6F6F6, 0xF7F7F7,
  0xF8F8F8, 0xF9F9F9, 0xFAFAFA, 0xFBFBFB,
  0xFCFCFC, 0xFDFDFD, 0xFEFEFE, 0xFFFFFF
};

static GUI_CONST_STORAGE GUI_LOGPALETTE _Palzoo_800_600 = {
  256,  // Number of entries
  0,    // No transparency
  &_Colorszoo_800_600[0]
};

GUI_CONST_STORAGE GUI_BITMAP bmzoo_800_600 = {
  800, // xSize
  600, // ySize
  800, // BytesPerLine
  8, // BitsPerPixel
  _aczoo_800_600,  // Pointer to picture data (indices)
  &_Palzoo_800_600   // Pointer to palette
};
7.
static GUI_CONST_STORAGE unsigned char _aczoo_800_600[] = {

将以上代码修改为如下(数组名可自定义):

const unsigned char zoo_800_600[] = {

8.在IT8951.c中修改相应代码即可,如下:

extern const unsigned char zoo_800_600[];
void IT8951DisplayExample3()
{
	IT8951LdImgInfo stLdImgInfo;
	IT8951AreaImgInfo stAreaImgInfo;
	TWord width = gstI80DevInfo.usPanelW;
	TWord high = gstI80DevInfo.usPanelH;
	TDWord i;
	
	for (i = 0;i < width*high;i++)
	{
		gpFrameBuf[i] = zoo_800_600[i];
	}

	IT8951WaitForDisplayReady();
	
	//Setting Load image information
	stLdImgInfo.ulStartFBAddr    = (TDWord)gpFrameBuf;
	stLdImgInfo.usEndianType     = IT8951_LDIMG_L_ENDIAN;
	stLdImgInfo.usPixelFormat    = IT8951_8BPP; 
	stLdImgInfo.usRotate         = IT8951_ROTATE_0;
	stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;
	//Set Load Area
	stAreaImgInfo.usX      = 0;
	stAreaImgInfo.usY      = 0;
	stAreaImgInfo.usWidth  = width;
	stAreaImgInfo.usHeight = high;
	
	IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2
	IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);
}

其它资料

上面仅说明了10.3inch e-Paper HAT (D)的使用方法,具体如何修改和进行二次开发,用户需要自行查阅相关代码。

以下提供IT8951的相关资料:

文档

程序

数据手册

开发资料

相关链接

树莓派系列教程

STM32CubeMX系列教程


转到:#软件#程序#文档


FAQ


问题:
为什么我采用E-LINK-TCON-DEMO不能刷新图片?怎样检查接线是否正确?
答复:

不能刷图很可能的原因是线没有接对,请检查接线,由于产品的批次不同,接线方式可能并不与图片完全一致,请以排线上,及丝印上的1和40为准,如下图红线的标注所示:
IT8951 ePaper FAQ .jpg
进行连接。



问题:
连接PC机,打开上位机,点击connect,提示Open IT8951 Device Fail,是什么问题?
答复:

1.更换质量好的Micro USB线。市面上有很多USB线压降太大,会导致USB接口无法正常枚举。

2.更换USB接口试试。推荐使用PC机背面的USB接口,相对来说,供电电流会大一些。

3.把拨码开关拨到底。在运输过程中,拨码开关可能会被振松了,而悬空的配置引脚无法让IT8951进入USB模式。



Icon-mail.png 联系 丢石头

我们的工作时间是: 09:00-18:00 (UTC+8 周一到周六)