“模板:6inch-e-Paper-HAT-Manual”的版本间的差异
小 (文本替换 - 替换“http://www.waveshare.net/w/upload”为“http://{{SERVERNAME}}/w/upload”) |
小 (文本替换 - 替换“<source”为“<syntaxhighlight”) |
||
第247行: | 第247行: | ||
6.将C文件增加到Keil工程,将以下无用信息删除: | 6.将C文件增加到Keil工程,将以下无用信息删除: | ||
− | < | + | <syntaxhighlight lang="c"> |
/********************************************************************* | /********************************************************************* | ||
* SEGGER Microcontroller GmbH & Co. KG * | * SEGGER Microcontroller GmbH & Co. KG * | ||
第375行: | 第375行: | ||
</source> | </source> | ||
− | 7.< | + | 7.<syntaxhighlight lang="c">static GUI_CONST_STORAGE unsigned char _aczoo_800_600[] = {</source> |
将以上代码修改为如下(数组名可自定义): | 将以上代码修改为如下(数组名可自定义): | ||
− | < | + | <syntaxhighlight lang="c"> |
const unsigned char zoo_800_600[] = { | const unsigned char zoo_800_600[] = { | ||
</source> | </source> | ||
8.在IT8951.c中修改相应代码即可,如下: | 8.在IT8951.c中修改相应代码即可,如下: | ||
− | < | + | <syntaxhighlight lang="c"> |
extern const unsigned char zoo_800_600[]; | extern const unsigned char zoo_800_600[]; | ||
void IT8951DisplayExample3() | void IT8951DisplayExample3() |
2019年11月14日 (四) 16:20的版本
注意:由于6inch e-paper尺寸比较大,相对的,玻璃面板和FPC排线都非常脆弱,在研发是需要特别小心,以免造成不必要损坏。研发调试时,建议在FPC排线处贴透明胶加固。另外,不要带电插拔e-paper。
产品概述
- 本产品是电子墨水屏模块,6英寸,分辨率为800×600,使用IT8951作为控制器,可使用USB/SPI/I80/I2C接口进行控制。
- 具有功耗低、视角宽、阳光直射下仍可清晰显示等优点,常用于货架标签、工业仪表等显示应用。
产品特点
- 无需背光,断电可长时间保持最后一屏的显示内容
- 功耗低,电子墨水屏裸屏基本只在刷新时耗电
- 基于树莓派标准接口设计,适用于Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+
- 引出USB/SPI/I80/I2C控制接口,可接入Raspberry/Nucleo等主控板
- 提供完善的配套资料手册(Raspberry/STM32等示例程序)
产品参数
- 工作电压: 5V
- 通信接口: USB/SPI/I80/I2C
- 外形尺寸: 138.4mm × 101.8mm × 0.954mm
- 显示尺寸: 122.4mm × 90.6mm
- 点 距: 0.153mm × 0.151mm
- 分 辨 率: 800 × 600
- 显示颜色: 黑、白
- 灰度等级: 2-16级 (1-4位)
- 全局刷新: <1s
- 总刷新功耗: 0.6W(typ.)
- 总待机功耗: 0.3W(typ.)
- 可视角度: >170°
工作原理
- 本产品使用的电子纸采用“微胶囊电泳显示”技术进行图像显示,其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移。电子纸显示屏是靠反射环境光来显示图案的,不需要背光,即使是在阳光底下,电子纸显示屏依然清晰可视,可视角度几乎达到了 180°。因此,电子纸显示屏非常适合阅读。
如何使用
1. 用于电脑的 Windows 系统。使用方法:
- 1) 硬件连接如下图:
- 2) 将驱动板的USB接口连接到PC机的USB接口。
- 3) 打开E-LINK-TCON-DEMO测试软件。
- 4) 点击connect。正常显示如下图:
- 5) √选"AutoSet",点击"Open File",选择相应的图片,点击打开。会弹出图片的浏览图,点击"OK",如下图:
- 6) 点击Display。正常就可以显示当前的图片了。
注:如果客户希望在Windows上使用USB接口对e-Paper进行开发,需要联系微雪团队,签NDA才可以拿到E-LINK-TCON-DEMO源码。
配合树莓派使用
1) 硬件连接如下图,把HAT直接接到树莓派的GPIO接口上,使用SPI接口与树莓派通信。
也可以通过杜邦线进行连接,具体如下表:
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模式。
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程序刷新图片
我们提供了6inch 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参数,如下图:
配合STM32单片机使用
由于IT8951需要占用比较大的RAM空间,一般STM32单片机都无法直接满足,需要外加SDRAM之类的芯片进行RAM扩展。
这里测试,我们使用Open429I作为测试板,其板载的IS42S16400J (64-MBIT) SDRAM,已经完全可以满足驱动6inch 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模式。
3) 使用DEMO程序刷新图片
我们提供了6inch e-Paper HAT的测试DEMO程序(点此下载)
下载后,解压,使用keil打开工程,目录地址:Open429I-C-6-IT8951-Demo\Project\6-IT8951\MDK-ARM\Project.uvproj。
点击编译,之后打开IT8951.h,确定定义了IT8951_Interface_SPI,点击重新编译,下载。几秒后正常可以看到e-paper开始循环显示图片。
其中串口打印信息如下(波特率115200):
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模式。
3) 使用DEMO程序刷新图片
我们提供了6inch e-Paper HAT的测试DEMO程序(点此下载)
下载后,解压,使用keil打开工程,目录地址:Open429I-C-6-IT8951-Demo\Project\6-IT8951\MDK-ARM\Project.uvproj。
点击编译,之后打开IT8951.h,确定定义了IT8951_Interface_I80,点击重新编译,下载。几秒后正常可以看到e-paper开始循环显示图片。
其中串口打印信息如下(波特率115200):
显示图片
为了使DEMO程序尽可能简单和方便移植,我们并没有在DEMO程序中加入文件系统,所以DEMO程序中是直接使用显示矩阵的方式进行显示图片的。
也就是我们需要添加新图片时需要先将图片转为数据矩阵(数组),在通过程序进行显示。以下简单的介绍如何将图片转化为数据矩阵并进行显示。
1.先准备一张BMP的示例图片,由于6inch e-Paper的分辨率是800*600,这里直接使用该图片作为例子。
2.打开图片取模软件,点击File-》Open..-》选择上面的图片,如下图:
3.点击Image-》Convert to -》 Gray256 (8 BPP),如下图:
4.点击File-》Save As...-》选择保存类型“C” bitmap file (*.c) -》输入文件名,点击保存。
5.选择8 bit per pixel,如下图,点击OK,。可以得到一个C文件。
6.将C文件增加到Keil工程,将以下无用信息删除:
<syntaxhighlight lang="c"> /*********************************************************************
- 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
}; </source>
7.<syntaxhighlight lang="c">static GUI_CONST_STORAGE unsigned char _aczoo_800_600[] = {</source> 将以上代码修改为如下(数组名可自定义): <syntaxhighlight lang="c"> const unsigned char zoo_800_600[] = { </source>
8.在IT8951.c中修改相应代码即可,如下: <syntaxhighlight lang="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); } </source>
其它资料
上面仅说明了6inch e-Paper HAT的使用方法,具体如何修改和进行二次开发,用户需要自行查阅相关代码。
以下提供IT8951的相关资料: