Difference between revisions of "7.8inch e-Paper HAT"
m (Text replacement - "https://www.waveshare.com/w/upload/" to "https://files.waveshare.com/upload/") |
|||
(47 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | <div class="wiki-pages jet-green-color"> | ||
{{Infobox item | {{Infobox item | ||
|name=7.8inch e-Paper raw Panel | |name=7.8inch e-Paper raw Panel | ||
Line 17: | Line 18: | ||
{{Product List|OLEDs / LCDs/e-Paper}} | {{Product List|OLEDs / LCDs/e-Paper}} | ||
}} | }} | ||
− | <font color=#FF0000><big>'''7.8inch e-Paper is big size screen, the glass panel and FPC is fragile, please be careful when | + | <font color=#FF0000><big>'''7.8inch e-Paper is a big size screen, the glass panel and FPC is fragile, please be careful when using it for developing. we recommend you reinforce the FPC with scotch tape when developing. Please connect all the cables before powering the device, the device cannot support hot-plug.'''</big></font> |
− | There are two | + | There are two versions, one is a raw panel and another is a HAT version. Driver board (IT8951) is required for the raw panel, if you are the first time buying this e-paper, recommend you choose the HAT version which comes with the driver board. |
== Introduction == | == Introduction == | ||
− | *7. | + | *7.8-inch EPD (Electronic Paper Display) HAT for Raspberry Pi, 1872 x 1404 resolution, 16 gray scales, USB/SPI/I80/I2C interface. |
*It has the advantages of low power consumption, wide viewing angle, and clear display under direct sunlight, and is often used in display applications such as shelf labels and industrial instruments. | *It has the advantages of low power consumption, wide viewing angle, and clear display under direct sunlight, and is often used in display applications such as shelf labels and industrial instruments. | ||
Line 31: | Line 32: | ||
===Features=== | ===Features=== | ||
− | *No backlight, keeps displaying last content for a long time even when | + | *No backlight, keeps displaying last content for a long time even when powered down. |
− | *Low power consumption, basically power is only required for refreshing | + | *Low power consumption, basically power is only required for refreshing. |
− | *Compatible with Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+ | + | *Compatible with Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+. |
− | *USB/SPI/I80 | + | *USB/SPI/I80 interface, for connecting with host boards like Raspberry Pi/Nucleo, etc. |
− | *Comes with development resources and manual (examples for Raspberry Pi/STM32) | + | *Comes with development resources and manual (examples for Raspberry Pi/STM32). |
===Specifications=== | ===Specifications=== | ||
*Operating voltage: 5V | *Operating voltage: 5V | ||
− | *Interface: USB/SPI/I80 | + | *Interface: USB/SPI/I80 |
*Outline dimension: 173.8mm × 127.6mm × 0.78mm | *Outline dimension: 173.8mm × 127.6mm × 0.78mm | ||
*Display size: 158.184mm × 118.638mm | *Display size: 158.184mm × 118.638mm | ||
Line 45: | Line 46: | ||
*Resolution: 1872 × 1404 | *Resolution: 1872 × 1404 | ||
*Display color: black, white | *Display color: black, white | ||
− | * | + | *Grayscale: 2-16 (1-4 bit) |
*Full refresh time: 450ms | *Full refresh time: 450ms | ||
− | *Total refresh power: 1.2W(typ.) | + | *Total refresh power: 1.2W (typ.) |
− | *Total standby power: 0.1W(typ.) | + | *Total standby power: 0.1W (typ.) |
*Viewing angle: >170° | *Viewing angle: >170° | ||
===Working principle=== | ===Working principle=== | ||
− | This product is an E-paper device adopting the image display technology of Microencapsulated Electrophoretic Display, MED. The initial approach is to create tiny spheres, in which the charged color pigments are | + | This product is an E-paper device adopting the image display technology of Microencapsulated Electrophoretic Display, MED. The initial approach is to create tiny spheres, in which the charged color pigments are suspended in the transparent oil and would move depending on the electronic charge. The E-paper screen displays patterns by reflecting the ambient light, so it has no background light requirement. Under ambient light, the E-paper screen still has high visibility with a wide viewing angle of 180 degrees. It is the ideal choice for E-reading. ('''Note that the e-Paper cannot support updating directly under sunlight.''') |
== How to use == | == How to use == | ||
===Working with Windows PC=== | ===Working with Windows PC=== | ||
− | *Connect 7.8inch e-paper to IT8951 driver board as below | + | *Connect 7.8inch e-paper to IT8951 driver board as below: |
[[File:7.8inch-e-Paper-HAT-1.jpg|500px]] | [[File:7.8inch-e-Paper-HAT-1.jpg|500px]] | ||
− | *Connect USB interface of IT8951 driver board to PC | + | *Connect the USB interface of the IT8951 driver board to PC. |
− | + | *Download and open [[#Software|E-LINK-TCON-DEMO]] software. | |
− | *Download and open [[#Software|E-LINK-TCON-DEMO]] software | + | *Click connect as below: |
− | *Click connect as below | ||
[[File:10.3inch-e-Paper-HAT-D-Manual-02.jpg|500px]] | [[File:10.3inch-e-Paper-HAT-D-Manual-02.jpg|500px]] | ||
− | *Check option "AutoSet", then click "Open File" to open one picture for display. | + | *Check option "AutoSet", then click "Open File" to open one picture for display. The browse diagram will be opened, and you should click "OK". |
[[File:10.3inch-e-Paper-HAT-D-Manual-03.jpg|500px]] | [[File:10.3inch-e-Paper-HAT-D-Manual-03.jpg|500px]] | ||
− | *Click "display" to refresh the picture | + | *Click "display" to refresh the picture. |
− | [[File:10.3inch-e-Paper-HAT-D-Manual-04.jpg|500px]] | + | [[File:10.3inch-e-Paper-HAT-D-Manual-04.jpg|500px]]<br/> |
+ | <font color="#FF0000"> | ||
+ | Note: If you want to use the USB interface to develop the e-Paper on Windows, you need to contact the Waveshare team and sign the NDA before you can get the E-LINK-TCON-DEMO source code.<br/></font> | ||
+ | <font color="#FF0000">Note: Currently not available for individual users.</font> | ||
===Working with Raspberry Pi=== | ===Working with Raspberry Pi=== | ||
* Hardware connection | * Hardware connection | ||
− | :Insert IT8951 driver board to GPIO of Raspberry Pi, Connect e-Paper to driver board | + | : Insert IT8951 driver board to GPIO of Raspberry Pi, Connect e-Paper to the driver board. |
− | :[[File:7.8inch-e-Paper-HAT-Manual- | + | :[[File:7.8inch-e-Paper-HAT-Manual-5.jpg|500px]] |
− | :You can also | + | : You can also connect by wires. |
{|border="1" width="700px" | {|border="1" width="700px" | ||
|+Connect to Raspberry Pi via SPI | |+Connect to Raspberry Pi via SPI | ||
Line 95: | Line 98: | ||
|} | |} | ||
− | *Make sure you have switched the sail switch to SPI mode | + | *Make sure you have switched the sail switch to SPI mode. |
− | :[[File: | + | :[[File: 10.3inch e-Paper 5.jpg|300px]] |
− | * | + | *Step 3: Install the BCM2835 C function library, open the Raspberry Pi terminal, and execute the following codes: |
− | |||
− | |||
<pre> | <pre> | ||
− | tar zxvf bcm2835-1. | + | wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz |
− | cd bcm2835-1. | + | tar zxvf bcm2835-1.60.tar.gz |
− | ./configure | + | cd bcm2835-1.60/ |
− | make | + | sudo ./configure |
+ | sudo make | ||
sudo make check | sudo make check | ||
sudo make install | sudo make install | ||
+ | #Fore more, you can refer to: http://www.airspayce.com/mikem/bcm2835/ | ||
</pre> | </pre> | ||
− | * | + | Finish. |
+ | *Step 4: Enable the SPI. | ||
+ | : The Raspberry Pi adopts SPI to drive the IT8951 and the E-paper. Firstly, you need to enable the SPI as below:<br/> | ||
+ | : Open the terminal command line and enter: | ||
+ | sudo raspi-config | ||
+ | :And then execute: Interfacing Options -> P4 -> SPI -> Yes, as shown below: | ||
+ | :[[File:7.8inch e-Paper HAT RPI01.png]] | ||
+ | *Step 5: Compile and execute the program: | ||
+ | : Download and compile the demo, and run the following commands: | ||
+ | : Method 1: Download from the official Waveshare website (recommended): | ||
+ | <pre> | ||
+ | sudo apt-get install p7zip-full | ||
+ | sudo wget https://files.waveshare.com/upload/8/80/IT8951_20200319_Release.7z | ||
+ | 7z x IT8951_20200319_Release.7z -O./IT8951 | ||
+ | cd IT8951/ | ||
+ | sudo make clean | ||
+ | sudo make -j4 | ||
+ | </pre> | ||
+ | : Method 2: Download from GitHub: | ||
<pre> | <pre> | ||
git clone https://github.com/waveshare/IT8951-ePaper.git | git clone https://github.com/waveshare/IT8951-ePaper.git | ||
Line 117: | Line 138: | ||
*Check the VCOM value on the FPC | *Check the VCOM value on the FPC | ||
:[[File:6inch-HD-e-Paper-HAT-Manual-06.png |500px]] | :[[File:6inch-HD-e-Paper-HAT-Manual-06.png |500px]] | ||
− | Add the VCOM value as | + | Add the VCOM value as a parameter and test the e-Paper, and this model is mode 0. |
<pre> | <pre> | ||
sudo ./epd -2.51 0 | sudo ./epd -2.51 0 | ||
Line 125: | Line 146: | ||
1) First, the r-paper will refresh the 16 gray bars partially in sequence. | 1) First, the r-paper will refresh the 16 gray bars partially in sequence. | ||
− | 2) Then demonstrate the demo of drawing lines, circles, rectangles, characters, and numbers | + | 2) Then demonstrate the demo of drawing lines, circles, rectangles, characters, and numbers. |
− | 3) Then respectively demonstrate the demo of displaying BMP pictures in 1bp, 2bp, and 4bp modes | + | 3) Then respectively demonstrate the demo of displaying BMP pictures in 1bp, 2bp, and 4bp modes. |
− | 4) Next, demonstrate the effect of fast refresh in A2 mode | + | 4) Next, demonstrate the effect of fast refresh in A2 mode. |
− | 5) Then display a gif animation | + | 5) Then display a gif animation. |
− | 6) Then demonstrate a Demo that counts the frame rate | + | 6) Then demonstrate a Demo that counts the frame rate. |
7) Finally, the e-paper is whitened in Init mode for long-term storage. | 7) Finally, the e-paper is whitened in Init mode for long-term storage. | ||
===Working with STM32=== | ===Working with STM32=== | ||
− | + | :''' Driver Interface Selection''' | |
− | + | *Using the SPI to drive (recommended), the advantage is to occupy fewer pins, be easy to drive, and have a communication speed that can meet most of the scenarios. | |
− | + | *Using the I80 to drive (adopt this way if the SPI interface communication speed is not ideal), the advantage is that the drive method is relatively simple, communication speed is very fast, but occupy more pins. | |
− | + | *Using I2C to drive (not recommended due to its slow speed). | |
− | + | :''' Driver Board Selection''' | |
− | + | As the IT8951 occupies most of the RAM space, some of the STM32 cannot support external SDRAM devices. So we here use [https://www.waveshare.com/open429i-c-standard.htm Open429I] as a test board, Open429I integrates IS42S16400J (64-MBIT) SDRAM, has full memory to drive the 7.8inch-e-Paper-HAT. | |
− | + | ====SPI==== | |
1) Hardware connection | 1) Hardware connection | ||
{|border=1 width=500px | {|border=1 width=500px | ||
Line 170: | Line 191: | ||
2) Set the DIP switch to SPI mode | 2) Set the DIP switch to SPI mode | ||
− | [[File: | + | [[File: 10.3inch e-Paper 5.jpg]] |
− | 3) Download demo code and test | + | 3) Download the demo code and test. |
− | You can download the [https:// | + | You can download the [https://files.waveshare.com/upload/d/da/Open429I-IT8951-Demo.7z Demo code]. |
− | Open the project with | + | Open the project with Keil: Open429I-IT8951-Demo\Project\IT8951\MDK-ARM\Project.uvproj |
− | Compile it, then open IT8951.h, check if SPI mode is enabled. Compile it again and download to your board. | + | Compile it, then open IT8951.h, and check if SPI mode is enabled. Compile it again and download to your board. |
[[File:9.7inch-e-Paper-HAT-Manual-15.jpg]] | [[File:9.7inch-e-Paper-HAT-Manual-15.jpg]] | ||
Line 186: | Line 207: | ||
[[File:10.3inch-e-Paper-HAT-D-Manual-09.jpg|200px]] | [[File:10.3inch-e-Paper-HAT-D-Manual-09.jpg|200px]] | ||
− | + | ====I80==== | |
− | |||
1) Hardware connection | 1) Hardware connection | ||
Line 217: | Line 237: | ||
2) Set the DIP switch to I80 mode | 2) Set the DIP switch to I80 mode | ||
− | [[File: | + | [[File: 10.3inch e-Paper 5.jpg]] |
3) Display with demo code | 3) Display with demo code | ||
− | You can download the [https:// | + | You can download the [https://files.waveshare.com/upload/d/da/Open429I-IT8951-Demo.7z Demo code] |
− | Open the project with | + | Open the project with Keil: Open429I-IT8951-Demo\Project\IT8951\MDK-ARM\Project.uvproj |
− | Compile it, then open IT8951.h, check if I80 mode is enabled. Compile it again and download to your board. | + | Compile it, then open IT8951.h, and check if I80 mode is enabled. Compile it again and download it to your board. |
[[File:9.7inch-e-Paper-HAT-Manual-18.jpg]] | [[File:9.7inch-e-Paper-HAT-Manual-18.jpg]] | ||
− | Information | + | Information is printed to the serial port as below (115200, 8N1) |
[[File:10.3inch-e-Paper-HAT-D-Manual-10.jpg|200px]] | [[File:10.3inch-e-Paper-HAT-D-Manual-10.jpg|200px]] | ||
− | ===Display pictures=== | + | ====Display pictures==== |
− | For easy porting our demo code, we display | + | For easy porting of our demo code, we display pictures with a data matrix instead of the file system. |
− | We should first convert BMP picture to data matrix (arrays), and use it in demo code. | + | We should first convert the BMP picture to a data matrix (arrays), and use it in demo code. |
1) Prepare a BMP image, resize the picture to 800*600 | 1) Prepare a BMP image, resize the picture to 800*600 | ||
Line 250: | Line 270: | ||
4) Click File ->Save As... ->Choose "C" bitmap file (*.c) -> input file name and click Save. | 4) Click File ->Save As... ->Choose "C" bitmap file (*.c) -> input file name and click Save. | ||
− | 5) Choose 8 | + | 5) Choose 8 bits per pixel, and click OK. A C file will be saved to your PC |
[[File:9.7inch-e-Paper-HAT-Manual-21.jpg]] | [[File:9.7inch-e-Paper-HAT-Manual-21.jpg]] | ||
− | 6) Add the C file to | + | 6) Add the C file to the Keil project, select unusable information |
<source lang="c"> | <source lang="c"> | ||
Line 294: | Line 314: | ||
* Description | * Description | ||
* The following are the entries of the palette table. | * The following are the entries of the palette table. | ||
− | * The entries are stored as a 32-bit | + | * The entries are stored as a 32-bit value of which 24 bits are |
* actually used according to the following bit mask: 0xBBGGRR | * actually used according to the following bit mask: 0xBBGGRR | ||
* | * | ||
− | * The lower 8 bits represent the Red | + | * The lower 8 bits represent the Red component. |
* The middle 8 bits represent the Green component. | * The middle 8 bits represent the Green component. | ||
− | * The highest 8 bits represent the Blue | + | * The highest 8 bits represent the Blue component. |
*/ | */ | ||
static GUI_CONST_STORAGE GUI_COLOR _Colorszoo_800_600[] = { | static GUI_CONST_STORAGE GUI_COLOR _Colorszoo_800_600[] = { | ||
Line 390: | Line 410: | ||
</source> | </source> | ||
− | to this one. (You can change the name of the array to | + | to this one. (You can change the name of the array to the one you like) |
<source lang="c"> | <source lang="c"> | ||
Line 432: | Line 452: | ||
</source> | </source> | ||
− | <font color=red>【Note】Guides provided here are all about how to use the 10.3inch e-Paper HAT (D). If you have any | + | <font color=red>【Note】Guides provided here are all about how to use the 10.3inch e-Paper HAT (D). If you have any questions about how to modify and develop your own codes, please refer to resources of IT8951 [[#Resources]]</font> |
+ | |||
+ | =Note= | ||
+ | ==Hardware Connection== | ||
+ | Due to product upgrades, the hardware connections of the different E-paper HATs may be different compared to the picture, the specific FPC cable and pin numbers shall prevail: | ||
+ | *Check example 1: | ||
+ | [[File: 9.7inch e-Paper HAT01.png]] | ||
+ | *Check example 2: | ||
+ | [[File: 7.8inch e-Paper HAT HC02.png]] | ||
+ | |||
+ | ==DIP Switch== | ||
+ | *At present, it is not recommended to drive via the I2C interface, it is recommended to use the USB, I80, or SPI interface to drive. | ||
+ | *Whether to drive via the USB interface, I80 interface, or SPI interface, you need to turn the DIP switch circled in red in the figure below to the right ON position, as shown in the figure below: | ||
+ | |||
+ | [[File: 7.8inch e-Paper HAT HC03.png]] | ||
+ | *If the E-LINK-TCON-DEMO cannot recognize the IT8951 when connected to a PC by USB, please check whether both sides of the two dip switches marked by the red box are on, only when both dipswitches marked by the red box are on can the PC recognize it. | ||
+ | ==Choose SPI or I80 to Drive== | ||
+ | *If you use a USB driver, you do not need to pay attention to the dip switch in the green box shown below: | ||
+ | *If you use the SPI driver or I80 driver, you need to pay attention to the dip switch in the green box shown below, if you dial to I80 side, it means to use the I80 driver, if you dial to SPI side, it means use SPI driver: | ||
+ | [[File: 7.8inch e-Paper HAT HC04.png]] | ||
− | + | <!-- | |
− | {{FAQ|E-ink screen refresh | + | {{FAQ|Precautions for E-ink screen refresh |
|*refresh mode<br/> | |*refresh mode<br/> | ||
**Full brush: The electronic ink screen will flicker several times during the refresh process (the number of flickers depends on the refresh time), and the flicker is to remove the afterimage to achieve the best display effect<br/> | **Full brush: The electronic ink screen will flicker several times during the refresh process (the number of flickers depends on the refresh time), and the flicker is to remove the afterimage to achieve the best display effect<br/> | ||
**Bureau brush: The electronic ink screen has no flickering effect during the refresh process. Users who use the partial brushing function note that after refreshing several times, a full brush operation should be performed to remove the residual image, otherwise the residual image problem will become more and more serious, or even damage the screen (currently only some black and white e-ink screens support partial brushing, please refer to product page description)<br/> | **Bureau brush: The electronic ink screen has no flickering effect during the refresh process. Users who use the partial brushing function note that after refreshing several times, a full brush operation should be performed to remove the residual image, otherwise the residual image problem will become more and more serious, or even damage the screen (currently only some black and white e-ink screens support partial brushing, please refer to product page description)<br/> | ||
*refresh rate<br/> | *refresh rate<br/> | ||
− | **During use, it is recommended that customers set the refresh interval of the e-ink screen to at least 180 seconds (except products that support the local brush function)<br/> | + | **During use, it is recommended that customers set the refresh interval of the e-ink screen to at least 180 seconds (except for products that support the local brush function)<br/> |
**During the standby process (that is, after the refresh operation), it is recommended that the customer set the e-ink screen to sleep mode, or power off operation (the power supply part of the ink screen can be disconnected with an analog switch) to reduce power consumption and prolong the life of the e-ink screen. (If some e-ink screens are powered on for a long time, the screen will be damaged beyond repair.)<br/> | **During the standby process (that is, after the refresh operation), it is recommended that the customer set the e-ink screen to sleep mode, or power off operation (the power supply part of the ink screen can be disconnected with an analog switch) to reduce power consumption and prolong the life of the e-ink screen. (If some e-ink screens are powered on for a long time, the screen will be damaged beyond repair.)<br/> | ||
**During the use of the three-color e-ink screen, it is recommended that customers update the display screen at least once every 24 hours (if the screen remains the same screen for a long time, the screen burn will be difficult to repair)<br/> | **During the use of the three-color e-ink screen, it is recommended that customers update the display screen at least once every 24 hours (if the screen remains the same screen for a long time, the screen burn will be difficult to repair)<br/> | ||
*place of use<br/> | *place of use<br/> | ||
− | **The e-ink screen is recommended for indoor use. If you use it outdoors, you need to avoid direct sunlight on the e-ink screen | + | **The e-ink screen is recommended for indoor use. If you use it outdoors, you need to avoid direct sunlight on the e-ink screen and take UV protection measures at the same time. When designing e-ink screen products, customers should pay attention to determine whether the use environment meets the temperature and humidity requirements of the e-ink screen<br/> |
}} | }} | ||
{{FAQ|Why can't I refresh the picture with E-LINK-TCON-DEMO? How can I check if the wiring is correct? | {{FAQ|Why can't I refresh the picture with E-LINK-TCON-DEMO? How can I check if the wiring is correct? | ||
Line 461: | Line 500: | ||
Note: Do not plug and unplug the e-paper with power on, otherwise the driver board and e-paper may be damaged. | Note: Do not plug and unplug the e-paper with power on, otherwise the driver board and e-paper may be damaged. | ||
}} | }} | ||
+ | --> | ||
+ | =Demo Description= | ||
+ | ==New Features== | ||
+ | *1. Using 4bpp to refresh 16 levels of grayscale images, the amount of data transferred by SPI is reduced to half of the original, avoiding the waste of RAM and transfer time caused by using 8bpp to refresh 16 levels of grayscale images in the previous version. | ||
+ | *2. SPI transfer speed doubled, effective in Raspberry Pi 3 generation, Raspberry Pi 4 generation is not effective due to the increase of CPU main frequency. | ||
+ | *3. The time interval for refreshing pictures is reduced to 1/4 of the original one. It takes about 10S to refresh a 16-level grayscale BMP picture to 10.3-inch e-Paper (D) using GC16 mode in the previous version of the program, but only about 3S in this demo. | ||
+ | *4. Avoid the memory leak caused by the allocation of cache after opening the bmp file in the previous version but not released. | ||
+ | *5. Add 1bpp, 2bpp, 4bpp, 8bpp mode support. | ||
+ | *6. Add the A2 mode refresh demo, you can feel the A2 mode refresh speed. | ||
+ | *7. Add support for drawing points, lines, circles, rectangles, writing characters, etc. Support grayscale selection of drawing characters and patterns, support 1bpp, 2bpp, 4bpp, 8bpp, if you choose 1bpp, also support A2 mode refresh. | ||
+ | *8. Add 1bpp, 2bpp, 4bpp, and 8bpp refresh support for bmp pictures, if you choose 1bpp, also support A2 mode refresh. | ||
+ | *9. Add the demo of displaying GIF pictures, which can write multiple pictures to IT8951 cache, and then directly refresh the data in the cache to the ink screen when displaying, eliminating the data transfer process between RPi and IT8951, and refreshing the frame rate up to 7fps. | ||
+ | *10. Add frame rate test demos to test the frame rate when refreshing different size areas, 1bpp, 2bpp, 4bpp, 8bpp, A2 mode, and GC16 mode. | ||
+ | *11. Support enhanced drive capability to avoid partial blurring of the screen display in some cases. | ||
+ | *12. Support 4-byte alignment for 6-inch ePaper HAT and 6-inch HD ePaper HAT to avoid abnormal display when 1bpp is refreshed. | ||
+ | *13. Demos need to enter VCOM when running, and the end of the routine will be fully painted white to protect the screen and extend the life of the screen. | ||
+ | *14. Optimize the program structure, reduce the coupling of the program, standardize some functions, and variable naming. | ||
+ | |||
+ | ==Demo Description== | ||
+ | ===Refresh 16 Grayscale Bars with Light to Dark Gray Levels in Sequence=== | ||
+ | *Function name: DisplayColorPaletteExample | ||
+ | *This demo shows how to use 4bp, combined with GC16 mode, to partially refresh 16 grayscale bars from light to dark in sequence. | ||
+ | ===Draw Points, Lines, Circles, Rectangles and Characters=== | ||
+ | *Function name: DisplayCharacterPatternExample | ||
+ | *The demo demonstrates, how to draw points, lines, circles, rectangles, and write characters, supports 1bpp, 2bpp, 4bpp, and 8bpp, and if 1bpp is used, it also supports A2 mode refresh. | ||
+ | ===Display BMP Pictures=== | ||
+ | *Function name: DisplayBMPExample | ||
+ | *The demo demonstrates how to refresh a bmp image, supporting 1bpp, 2bpp, 4bpp, and 8bpp, and if 1bpp is used, A2 mode refresh is also supported. | ||
+ | ===A2 Mode Refresh Example=== | ||
+ | *Function name: DynamicRefreshExample | ||
+ | *This demo demonstrates how to use A2 mode for refreshing. In this demo, it will be refreshed several times, the refresh area will keep changing, and the area of the refresh area will gradually become larger, and after several times of refreshing, the residual shadow will appear, and INIT mode will be used to clear the residual shadow. With this demo, you can feel the refresh speed of the A2 mode. | ||
+ | ===Display GIF Pictures=== | ||
+ | *Function name: DynamicGIFExample | ||
+ | *The demo demonstrates how to refresh a GIF image. In this demo, a GIF image is split into 7 bmp images beforehand, and the 7 bmp images are written to the cache of the IT8951 in succession, and when displaying, the image data is read out from the cache of the IT8951 at the corresponding address and refreshed to the E-paper display. | ||
+ | ===Frame Rate Test=== | ||
+ | *Function name: CheckFrameRateExample | ||
+ | *This demo is designed to facilitate testing: the frame rate of refresh when refreshing different size areas, 1bpp, 2bpp, 4bpp, 8bpp, and A2 mode, GC16 mode, in this demo, the time to refresh 10 frames of images will be counted automatically and the frame rate (fps) will be calculated automatically. | ||
+ | ==Related Description== | ||
+ | ===Mode Description=== | ||
+ | IT8951 for different resolutions of the screen brushed into different firmware, different firmware has different refresh modes, see [https://files.waveshare.com/upload/c/c4/E-paper-mode-declaration.pdf E-paper-mode-declaration] for details, the modes used in the demo are INIT mode, GC16 mode, and A2 mode. | ||
+ | |||
+ | The following is a brief description of the relevant modes: | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Mode!! Features!! 6inch/6inch HD!! 7.8inch/9.7inch/10.3inch | ||
+ | |- | ||
+ | | INIT|| Used to erase the display content, and clear the screen. It is recommended to use INIT mode to clear the screen after several A2 mode refreshes|| Mode0|| Mode0 | ||
+ | |- | ||
+ | | GC16|| Adopt 16 levels of grayscale to update the screen display content, the best display effect|| Mode2|| Mode2 | ||
+ | |- | ||
+ | | A2|| Only black and white can be refreshed, but the refresh speed is the fastest || Mode4|| Mode6 | ||
+ | |} | ||
+ | |||
+ | <syntaxhighlight lang="c"> | ||
+ | //basic mode definition | ||
+ | UBYTE INIT_Mode = 0; | ||
+ | UBYTE GC16_Mode = 2; | ||
+ | //A2_Mode's value is not fixed, is decided by the firmware's LUT | ||
+ | UBYTE A2_Mode = 6;</syntaxhighlight> | ||
+ | <syntaxhighlight lang="c"> | ||
+ | if( strcmp(LUT_Version, "M641") == 0 ){ | ||
+ | //6inch e-Paper HAT(800,600), 6inch HD e-Paper HAT(1448,1072), 6inch HD touch e-Paper HAT(1448,1072) | ||
+ | A2_Mode = 4; | ||
+ | Four_Byte_Align = true; | ||
+ | }else if( strcmp(LUT_Version, "M841") == 0 ){ | ||
+ | //9.7inch e-Paper HAT(1200,825) | ||
+ | A2_Mode = 6; | ||
+ | }else if( strcmp(LUT_Version, "M841_TFA2812") == 0 ){ | ||
+ | //7.8inch e-Paper HAT(1872,1404) | ||
+ | A2_Mode = 6; | ||
+ | }else if( strcmp(LUT_Version, "M841_TFA5210") == 0 ){ | ||
+ | //10.3inch e-Paper HAT(1872,1404) | ||
+ | A2_Mode = 6; | ||
+ | }else{ | ||
+ | //default set to 6 as A2 Mode | ||
+ | A2_Mode = 6; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===BPP Description=== | ||
+ | BPP (Bits Per Pixel), which indicates the number of bits occupied by a pixel, currently, all screens support 1bpp, 2bpp, 4bpp, 8bpp mode refresh. | ||
+ | *'''1bpp''' | ||
+ | *Each pixel occupies 1 bit. | ||
+ | *Can display 2(2^1=2) levels of grayscale, suitable for A2 mode (can only update 2 levels of grayscale in black and white) | ||
+ | *Each byte can store 8-pixel points. | ||
+ | *Pixel points are stored in 1 byte in RAM in large end order: | ||
+ | [[File:7.8inch e-Paper HAT17.png]]<br/> | ||
+ | *In IT8951 default use a small end sequence, need to convert the big end sequence to small end sequence. | ||
+ | *'''2bpp''' | ||
+ | *Each pixel occupies 2 bits. | ||
+ | *Capable of displaying 4(2^2=4) levels of grayscale. | ||
+ | *Each byte can store 4-pixel points. | ||
+ | *Pixel points are stored in RAM in large end order per 1 byte: | ||
+ | [[File:7.8inch e-Paper HAT18.png]]<br/> | ||
+ | *In IT8951 default use a small end sequence, need to convert the big end sequence to a small end sequence. | ||
+ | *'''4bpp''' | ||
+ | *Each pixel occupies 4 bits. | ||
+ | *Capable of displaying 16(2^4=16) levels of grayscale. | ||
+ | *Each byte can store 2-pixel points. | ||
+ | *Pixel points are stored in RAM in large end order for each 1 byte: | ||
+ | [[File:7.8inch e-Paper HAT19.png]]<br/> | ||
+ | *In IT8951 default uses small end order, need to convert the big end order to small end order. | ||
+ | *'''It is recommended to use 4bpp for a refreshing, which can display 16 levels of grayscale, and compared to 8bpp, the amount of transmitted data is reduced by half, the transmission speed is twice as fast, and there is no difference in display effect.''' | ||
+ | *'''8bpp''' | ||
+ | *Each pixel occupies 8 bits. | ||
+ | *Can display 256 (2^8=256) levels of grayscale, but in IT8951 only the high 4 bits are taken, so only 16 levels of grayscale can be displayed. | ||
+ | *Each byte can store 1 pixel. | ||
+ | *Pixel points are stored in RAM in large end order per 1 byte: | ||
+ | [[File:7.8inch e-Paper HAT20.png]]<br/> | ||
+ | *In IT8951, the small end order is used by default, and it is necessary to convert the big end order to the small end order | ||
+ | *To get the corresponding grayscale image from the original image In the program, the specific operation is: whether drawing points, drawing lines, or getting the image, each pixel point obtained is 1 byte (8 bits), if you want to get the corresponding grayscale, you only need to get the corresponding high bit of the byte. For example, if you want to get 2bpp pixel points, you only need to get the high 2 bits from 8bpp (8 bits). The specific operation is shown in the following program, in which each byte in RAM is also converted from big-endian to little-endian. | ||
+ | |||
+ | |||
+ | <syntaxhighlight lang="c"> | ||
+ | UDOUBLE Addr = X * (Paint.BitsPerPixel) / 8 + Y * Paint.WidthByte; | ||
+ | switch( Paint.BitsPerPixel ){ | ||
+ | case 8:{ | ||
+ | Paint.Image[Addr] = Color & 0xF0; | ||
+ | break; | ||
+ | } | ||
+ | case 4:{ | ||
+ | Paint.Image[Addr] &= ~( (0xF0) >> (7 - (X*4+3)%8 ) ); | ||
+ | Paint.Image[Addr] |= (Color & 0xF0) >> (7 - (X*4+3)%8 ); | ||
+ | break; | ||
+ | } | ||
+ | case 2:{ | ||
+ | Paint.Image[Addr] &= ~( (0xC0) >> (7 - (X*2+1)%8 ) ); | ||
+ | Paint.Image[Addr] |= (Color & 0xC0) >> (7 - (X*2+1)%8 ); | ||
+ | break; | ||
+ | } | ||
+ | case 1:{ | ||
+ | Paint.Image[Addr] &= ~( (0x80) >> (7 - X%8) ); | ||
+ | Paint.Image[Addr] |= (Color & 0x80) >> (7 - X%8); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===4-byte Alignment Description=== | ||
+ | In the actual test, we found that for 6inch e-Paper HAT, 6inch HD e-Paper HAT, and 6inch HD touch e-Paper HAT, when using 1bpp mode refresh, the starting point X and refresh width W of the refresh area need to be aligned with 4 bytes (32bit), otherwise, the image of the refresh area will be displayed abnormally, as shown in the following procedure: | ||
+ | |||
+ | <syntaxhighlight lang="c"> | ||
+ | if( strcmp(LUT_Version, "M641") == 0 ){ | ||
+ | //6inch e-Paper HAT(800,600), 6inch HD e-Paper HAT(1448,1072), 6inch HD touch e-Paper HAT(1448,1072) | ||
+ | A2_Mode = 4; | ||
+ | Four_Byte_Align = true; | ||
+ | }else if( strcmp(LUT_Version, "M841") == 0 ){ | ||
+ | ... | ||
+ | }</syntaxhighlight> | ||
+ | <syntaxhighlight lang="c">if(Four_Byte_Align == true){ | ||
+ | In_4bp_Refresh_Area_Width = Panel_Width - (Panel_Width % 32); | ||
+ | }else{ | ||
+ | In_4bp_Refresh_Area_Width = Panel_Width; | ||
+ | }</syntaxhighlight> | ||
+ | <syntaxhighlight lang="c">X_Start = Min_X < 32 ? 0 : Min_X - (Min_X % 32); | ||
+ | Debug("X_Start:%d\r\n",X_Start); | ||
+ | X_End = ( Max_X + (32 - (Max_X % 32)) ) > Touch_Pannel_Area_Width ? ( Max_X - (Max_X % 32) ) : ( Max_X + (32 - (Max_X % 32)) ); | ||
+ | Debug("X_End:%d\r\n",X_End); | ||
+ | Y_Start = Min_Y; | ||
+ | Debug("Y_Start:%d\r\n",Y_Start); | ||
+ | Y_End = Max_Y; | ||
+ | Debug("Y_Start:%d\r\n",Y_End); | ||
+ | Width = X_End - X_Start; | ||
+ | if(Width<=0){ | ||
+ | Width = 32; | ||
+ | } | ||
+ | Debug("Width:%d\r\n",Width); | ||
+ | Height = Y_End-Y_Start; | ||
+ | if(Height<=0){ | ||
+ | Height = 32; | ||
+ | } | ||
+ | Debug("Height:%d\r\n",Height); | ||
+ | </syntaxhighlight> | ||
+ | ===SPI Transfer Speed Description=== | ||
+ | Due to the difference in CPU main frequency of Raspberry Pi 3 and Raspberry Pi 4: | ||
+ | *Raspberry Pi 3 can still transmit normally when it adopts 16 division frequency, and the fastest can only adopt 16 division frequency. | ||
+ | *While Raspberry Pi 4B adopts 16 divisions, the SPI rate is too high, and there will be transmission errors, so the SPI of Raspberry Pi 4B can only use 32 divisions at the fastest. | ||
+ | *BCM2835 library manual, different Raspberry Pi version, different clock frequency, the corresponding frequency description is shown below: | ||
+ | [[File:7.8inch e-Paper HAT23.png]] | ||
+ | *If you need to obtain the most suitable SPI transfer speed, you need to select a different SPI clock division according to your Raspberry Pi version, as shown in the following program and its comments: | ||
+ | <syntaxhighlight lang="c"> | ||
+ | bcm2835_spi_begin();//Start spi interface, set spi pin for the reuse function | ||
+ | bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);//High first transmission | ||
+ | bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);//spi mode 0 | ||
+ | |||
+ | //bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_16);//For RPi 3/3B/3B+ | ||
+ | bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_32);//For RPi 4B | ||
+ | |||
+ | /* SPI clock reference link:*/ | ||
+ | /*http://www.airspayce.com/mikem/bcm2835/group__constants.html#gaf2e0ca069b8caef24602a02e8a00884e*/ | ||
+ | </syntaxhighlight> | ||
+ | ===Enhance Driving Ability=== | ||
+ | In some cases, due to the FPC line being too long and other reasons, will lead to the ink screen display partial blur, at this time, trying to enhance the drive capability, can effectively solve the problem of the blurred screen display.<br/> | ||
+ | Specific procedures are shown below: | ||
+ | <syntaxhighlight lang="c"> | ||
+ | #if(Enhance) | ||
+ | Debug("Attention! Enhanced driving ability, only used when the screen is blurred\r\n"); | ||
+ | Enhance_Driving_Capability(); | ||
+ | #endif | ||
+ | </syntaxhighlight> | ||
+ | <syntaxhighlight lang="c"> | ||
+ | /****************************************************************************** | ||
+ | function: Enhanced driving capability | ||
+ | parameter: Enhanced driving capability for IT8951, in case the blurred display effect | ||
+ | ******************************************************************************/ | ||
+ | void Enhance_Driving_Capability(void) | ||
+ | { | ||
+ | UWORD RegValue = EPD_IT8951_ReadReg(0x0038); | ||
+ | Debug("The reg value before writing is %x\r\n", RegValue); | ||
+ | EPD_IT8951_WriteReg(0x0038, 0x0602); | ||
+ | RegValue = EPD_IT8951_ReadReg(0x0038); | ||
+ | Debug("The reg value after writing is %x\r\n", RegValue); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | If the E-LINK-TCON-DEMO software is used on a PC (Windows) to refresh the E-paper via the USB interface, the drive can be enhanced by modifying the register values as follows: | ||
+ | *Step 1: Read the data of the registered address 0x18000038. | ||
+ | [[File:7.8inch e-Paper HAT21.png]]<br/> | ||
+ | If the data of the read register address 0x18000038 is 0x02, it means that the driver is not yet enhanced. | ||
+ | *Step 2: Modify the data of register address 0x18000038. | ||
+ | [[File:7.8inch e-Paper HAT22.png]]<br/> | ||
+ | Modify the data of register address 0x18000038 to 602 to enhance the driving capability. | ||
+ | *Step 3: Check the data of register address 0x18000038. | ||
+ | [[File:7.8inch e-Paper 23.png]]<br/> | ||
+ | Check whether the data of register address 0x18000038 is modified successfully. If the data of this address is 0x602, it means that the driving capability has been enhanced and the screen can be brushed in this state to avoid the blurred display in some cases, such as the FPC line is too long and the production batch is different. | ||
+ | |||
+ | ===Use Correct VCOM Value=== | ||
+ | The VCOM value of each E-paper has certain differences. The VCOM value of each E-paper is marked on the FPC cable, so make sure the correct VCOM value is used in each execution of the demo, otherwise, the display will become worse if the E-paper works under the wrong VCOM value for a long time. | ||
+ | ===Development Description=== | ||
+ | The above only illustrates how to use the 7.8-inch e-Paper HAT (D). For details on how to modify and perform secondary development, users need to consult the relevant code by themselves. | ||
+ | |||
+ | Please refer to the IT8951 information provided in the Resource. | ||
+ | |||
==Resources== | ==Resources== | ||
===Schematic=== | ===Schematic=== | ||
− | *[https:// | + | *[https://files.waveshare.com/upload/2/27/E-Paper-IT8951-Driver-HAT-B-Schematic.pdf.pdf Schematic of IT8951 Driver Board] |
− | *[ | + | *[https://files.waveshare.com/upload/e/e1/7.8-10.3inch-e-Paper-Adapter-Schematic.pdf Schematic of 7.8inch e-Paper Adapter board] |
===Demo code=== | ===Demo code=== | ||
*[https://github.com/waveshare/IT8951-ePaper Demo code for Raspberry Pi] | *[https://github.com/waveshare/IT8951-ePaper Demo code for Raspberry Pi] | ||
− | *[https:// | + | *[https://files.waveshare.com/upload/d/da/Open429I-IT8951-Demo.7z Demo code for STM32 (Open429I)] |
+ | *[https://github.com/waveshare/IT8951-ePaper Github] | ||
+ | ==Third Parties Examples== | ||
+ | *[https://github.com/aceisace/Inkycal Inkycal Project] | ||
+ | : This is the Inkycal project for reference. | ||
===Datasheet=== | ===Datasheet=== | ||
− | *[https:// | + | *[https://files.waveshare.com/upload/b/b4/7.8inch_e-Paper_Specification.pdf 7.8inch e-Paper Specification] |
− | *[https:// | + | *[https://files.waveshare.com/upload/1/18/IT8951_D_V0.2.4.3_20170728.pdf IT8951 Specifications] |
===Other documents=== | ===Other documents=== | ||
− | *[ | + | *[https://files.waveshare.com/upload/b/b0/IT8951_I80%2BProgrammingGuide_16bits_20170904_v2.7_common_CXDX.zip IT8951 I80/SPi/I2C Programming Guide] |
− | *[ | + | *[https://files.waveshare.com/upload/c/c9/IT8951_USB_ProgrammingGuide_v.0.4_20161114.pdf IT851 USB Programming Guide] |
− | *[ | + | *[https://files.waveshare.com/upload/c/c4/E-paper-mode-declaration.pdf Mode description] |
===Software=== | ===Software=== | ||
− | *[ | + | *[https://files.waveshare.com/upload/2/2d/E-LINK-TCON-DEMO.zip E-LINK-TCON-DEMO] |
− | + | *[https://files.waveshare.com/upload/c/c6/Zimo221.7z Zimo221.7z ] | |
− | = | + | *[https://files.waveshare.com/upload/b/b3/BmpCvt.zip Picture Modulo] |
− | {{ | + | {{IT8951 Epaper FAQ}} |
+ | =Support= | ||
+ | {{Servicebox1}} |
Latest revision as of 14:48, 31 August 2023
| ||
| ||
7.8inch e-Paper is a big size screen, the glass panel and FPC is fragile, please be careful when using it for developing. we recommend you reinforce the FPC with scotch tape when developing. Please connect all the cables before powering the device, the device cannot support hot-plug.
There are two versions, one is a raw panel and another is a HAT version. Driver board (IT8951) is required for the raw panel, if you are the first time buying this e-paper, recommend you choose the HAT version which comes with the driver board.
Introduction
- 7.8-inch EPD (Electronic Paper Display) HAT for Raspberry Pi, 1872 x 1404 resolution, 16 gray scales, USB/SPI/I80/I2C interface.
- It has the advantages of low power consumption, wide viewing angle, and clear display under direct sunlight, and is often used in display applications such as shelf labels and industrial instruments.
More |
Features
- No backlight, keeps displaying last content for a long time even when powered down.
- Low power consumption, basically power is only required for refreshing.
- Compatible with Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+.
- USB/SPI/I80 interface, for connecting with host boards like Raspberry Pi/Nucleo, etc.
- Comes with development resources and manual (examples for Raspberry Pi/STM32).
Specifications
- Operating voltage: 5V
- Interface: USB/SPI/I80
- Outline dimension: 173.8mm × 127.6mm × 0.78mm
- Display size: 158.184mm × 118.638mm
- Dot pitch: 0.0845mm × 0.0845mm
- Resolution: 1872 × 1404
- Display color: black, white
- Grayscale: 2-16 (1-4 bit)
- Full refresh time: 450ms
- Total refresh power: 1.2W (typ.)
- Total standby power: 0.1W (typ.)
- Viewing angle: >170°
Working principle
This product is an E-paper device adopting the image display technology of Microencapsulated Electrophoretic Display, MED. The initial approach is to create tiny spheres, in which the charged color pigments are suspended in the transparent oil and would move depending on the electronic charge. The E-paper screen displays patterns by reflecting the ambient light, so it has no background light requirement. Under ambient light, the E-paper screen still has high visibility with a wide viewing angle of 180 degrees. It is the ideal choice for E-reading. (Note that the e-Paper cannot support updating directly under sunlight.)
How to use
Working with Windows PC
- Connect 7.8inch e-paper to IT8951 driver board as below:
- Connect the USB interface of the IT8951 driver board to PC.
- Download and open E-LINK-TCON-DEMO software.
- Click connect as below:
- Check option "AutoSet", then click "Open File" to open one picture for display. The browse diagram will be opened, and you should click "OK".
- Click "display" to refresh the picture.
Note: If you want to use the USB interface to develop the e-Paper on Windows, you need to contact the Waveshare team and sign the NDA before you can get the E-LINK-TCON-DEMO source code.
Note: Currently not available for individual users.
Working with Raspberry Pi
- Hardware connection
- Insert IT8951 driver board to GPIO of Raspberry Pi, Connect e-Paper to the driver board.
- You can also connect by wires.
IT8951 Driver HAT | Raspberry Pi (BCM) | Description' |
5V | 5V | 5V power input |
GND | GND | Ground |
MISO | P9 | MISO Pin of SPI |
MOSI | P10 | MOSI Pin of SPI |
SCK | P11 | SCK Pin of SPI |
CS | P8 | Chip selection of SPI (Low active) |
RST | P17 | Reset pin (Low active) |
HRDY | P24 | Busy stats pin (Low when busy) |
- Make sure you have switched the sail switch to SPI mode.
- Step 3: Install the BCM2835 C function library, open the Raspberry Pi terminal, and execute the following codes:
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz tar zxvf bcm2835-1.60.tar.gz cd bcm2835-1.60/ sudo ./configure sudo make sudo make check sudo make install #Fore more, you can refer to: http://www.airspayce.com/mikem/bcm2835/
Finish.
- Step 4: Enable the SPI.
- The Raspberry Pi adopts SPI to drive the IT8951 and the E-paper. Firstly, you need to enable the SPI as below:
- Open the terminal command line and enter:
sudo raspi-config
- Step 5: Compile and execute the program:
- Download and compile the demo, and run the following commands:
- Method 1: Download from the official Waveshare website (recommended):
sudo apt-get install p7zip-full sudo wget https://files.waveshare.com/upload/8/80/IT8951_20200319_Release.7z 7z x IT8951_20200319_Release.7z -O./IT8951 cd IT8951/ sudo make clean sudo make -j4
- Method 2: Download from GitHub:
git clone https://github.com/waveshare/IT8951-ePaper.git cd IT8951-ePaper/Raspberry sudo make clean sudo make -j4
- Check the VCOM value on the FPC
Add the VCOM value as a parameter and test the e-Paper, and this model is mode 0.
sudo ./epd -2.51 0
- Demo execution phenomenon:
1) First, the r-paper will refresh the 16 gray bars partially in sequence.
2) Then demonstrate the demo of drawing lines, circles, rectangles, characters, and numbers.
3) Then respectively demonstrate the demo of displaying BMP pictures in 1bp, 2bp, and 4bp modes.
4) Next, demonstrate the effect of fast refresh in A2 mode.
5) Then display a gif animation.
6) Then demonstrate a Demo that counts the frame rate.
7) Finally, the e-paper is whitened in Init mode for long-term storage.
Working with STM32
- Driver Interface Selection
- Using the SPI to drive (recommended), the advantage is to occupy fewer pins, be easy to drive, and have a communication speed that can meet most of the scenarios.
- Using the I80 to drive (adopt this way if the SPI interface communication speed is not ideal), the advantage is that the drive method is relatively simple, communication speed is very fast, but occupy more pins.
- Using I2C to drive (not recommended due to its slow speed).
- Driver Board Selection
As the IT8951 occupies most of the RAM space, some of the STM32 cannot support external SDRAM devices. So we here use Open429I as a test board, Open429I integrates IS42S16400J (64-MBIT) SDRAM, has full memory to drive the 7.8inch-e-Paper-HAT.
SPI
1) Hardware connection
IT8951 | STM32 | Description |
5V | 5V | 5V Power input |
GND | GND | Ground |
MISO | PE13 | Data output |
MOSI | PE14 | Data input |
SCK | PE12 | Clock input |
CS | PE11 | Chip select (Low active) |
RST | PC5 | Reset (Low for reset) |
HRDY | PA7 | BUSY state output (Low for busy) |
2) Set the DIP switch to SPI mode
3) Download the demo code and test.
You can download the Demo code.
Open the project with Keil: Open429I-IT8951-Demo\Project\IT8951\MDK-ARM\Project.uvproj
Compile it, then open IT8951.h, and check if SPI mode is enabled. Compile it again and download to your board.
After downloading, the information will be printed as below (115200, 8N1)
I80
1) Hardware connection
IT8951 | STM32 | Description |
Vcc | 5V | 5V Power input |
GND | GND | Ground |
DBUS0~DBUS15 | PB0~PB15 | Data pins |
HWE | PC1 | Write enable (Low active) |
D/C | PC7 | Data/Command (Low for command) |
CSEL | PC6 | Chip select (Low active) |
HRD | PC3 | Read enable (Low for active) |
RST | PC0 | Reset (Low for reset) |
BUSY | PA7 | Busy state output (Low for busy) |
2) Set the DIP switch to I80 mode
3) Display with demo code
You can download the Demo code
Open the project with Keil: Open429I-IT8951-Demo\Project\IT8951\MDK-ARM\Project.uvproj
Compile it, then open IT8951.h, and check if I80 mode is enabled. Compile it again and download it to your board.
Information is printed to the serial port as below (115200, 8N1)
Display pictures
For easy porting of our demo code, we display pictures with a data matrix instead of the file system.
We should first convert the BMP picture to a data matrix (arrays), and use it in demo code.
1) Prepare a BMP image, resize the picture to 800*600
2) Open BMP convert software, Click File->Open..-> to open the picture as below:
3) Click Image -> Convert to ->Gray256(8 BPP)
4) Click File ->Save As... ->Choose "C" bitmap file (*.c) -> input file name and click Save.
5) Choose 8 bits per pixel, and click OK. A C file will be saved to your PC
6) Add the C file to the Keil project, select unusable information
********************************************************************* * 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 value 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) Modify the codes
static GUI_CONST_STORAGE unsigned char _aczoo_800_600[] = {
to this one. (You can change the name of the array to the one you like)
const unsigned char zoo_800_600[] = {
8) Modify related codes in IT8951.C as below
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); }
【Note】Guides provided here are all about how to use the 10.3inch e-Paper HAT (D). If you have any questions about how to modify and develop your own codes, please refer to resources of IT8951 #Resources
Note
Hardware Connection
Due to product upgrades, the hardware connections of the different E-paper HATs may be different compared to the picture, the specific FPC cable and pin numbers shall prevail:
- Check example 1:
- Check example 2:
DIP Switch
- At present, it is not recommended to drive via the I2C interface, it is recommended to use the USB, I80, or SPI interface to drive.
- Whether to drive via the USB interface, I80 interface, or SPI interface, you need to turn the DIP switch circled in red in the figure below to the right ON position, as shown in the figure below:
- If the E-LINK-TCON-DEMO cannot recognize the IT8951 when connected to a PC by USB, please check whether both sides of the two dip switches marked by the red box are on, only when both dipswitches marked by the red box are on can the PC recognize it.
Choose SPI or I80 to Drive
- If you use a USB driver, you do not need to pay attention to the dip switch in the green box shown below:
- If you use the SPI driver or I80 driver, you need to pay attention to the dip switch in the green box shown below, if you dial to I80 side, it means to use the I80 driver, if you dial to SPI side, it means use SPI driver:
Demo Description
New Features
- 1. Using 4bpp to refresh 16 levels of grayscale images, the amount of data transferred by SPI is reduced to half of the original, avoiding the waste of RAM and transfer time caused by using 8bpp to refresh 16 levels of grayscale images in the previous version.
- 2. SPI transfer speed doubled, effective in Raspberry Pi 3 generation, Raspberry Pi 4 generation is not effective due to the increase of CPU main frequency.
- 3. The time interval for refreshing pictures is reduced to 1/4 of the original one. It takes about 10S to refresh a 16-level grayscale BMP picture to 10.3-inch e-Paper (D) using GC16 mode in the previous version of the program, but only about 3S in this demo.
- 4. Avoid the memory leak caused by the allocation of cache after opening the bmp file in the previous version but not released.
- 5. Add 1bpp, 2bpp, 4bpp, 8bpp mode support.
- 6. Add the A2 mode refresh demo, you can feel the A2 mode refresh speed.
- 7. Add support for drawing points, lines, circles, rectangles, writing characters, etc. Support grayscale selection of drawing characters and patterns, support 1bpp, 2bpp, 4bpp, 8bpp, if you choose 1bpp, also support A2 mode refresh.
- 8. Add 1bpp, 2bpp, 4bpp, and 8bpp refresh support for bmp pictures, if you choose 1bpp, also support A2 mode refresh.
- 9. Add the demo of displaying GIF pictures, which can write multiple pictures to IT8951 cache, and then directly refresh the data in the cache to the ink screen when displaying, eliminating the data transfer process between RPi and IT8951, and refreshing the frame rate up to 7fps.
- 10. Add frame rate test demos to test the frame rate when refreshing different size areas, 1bpp, 2bpp, 4bpp, 8bpp, A2 mode, and GC16 mode.
- 11. Support enhanced drive capability to avoid partial blurring of the screen display in some cases.
- 12. Support 4-byte alignment for 6-inch ePaper HAT and 6-inch HD ePaper HAT to avoid abnormal display when 1bpp is refreshed.
- 13. Demos need to enter VCOM when running, and the end of the routine will be fully painted white to protect the screen and extend the life of the screen.
- 14. Optimize the program structure, reduce the coupling of the program, standardize some functions, and variable naming.
Demo Description
Refresh 16 Grayscale Bars with Light to Dark Gray Levels in Sequence
- Function name: DisplayColorPaletteExample
- This demo shows how to use 4bp, combined with GC16 mode, to partially refresh 16 grayscale bars from light to dark in sequence.
Draw Points, Lines, Circles, Rectangles and Characters
- Function name: DisplayCharacterPatternExample
- The demo demonstrates, how to draw points, lines, circles, rectangles, and write characters, supports 1bpp, 2bpp, 4bpp, and 8bpp, and if 1bpp is used, it also supports A2 mode refresh.
Display BMP Pictures
- Function name: DisplayBMPExample
- The demo demonstrates how to refresh a bmp image, supporting 1bpp, 2bpp, 4bpp, and 8bpp, and if 1bpp is used, A2 mode refresh is also supported.
A2 Mode Refresh Example
- Function name: DynamicRefreshExample
- This demo demonstrates how to use A2 mode for refreshing. In this demo, it will be refreshed several times, the refresh area will keep changing, and the area of the refresh area will gradually become larger, and after several times of refreshing, the residual shadow will appear, and INIT mode will be used to clear the residual shadow. With this demo, you can feel the refresh speed of the A2 mode.
Display GIF Pictures
- Function name: DynamicGIFExample
- The demo demonstrates how to refresh a GIF image. In this demo, a GIF image is split into 7 bmp images beforehand, and the 7 bmp images are written to the cache of the IT8951 in succession, and when displaying, the image data is read out from the cache of the IT8951 at the corresponding address and refreshed to the E-paper display.
Frame Rate Test
- Function name: CheckFrameRateExample
- This demo is designed to facilitate testing: the frame rate of refresh when refreshing different size areas, 1bpp, 2bpp, 4bpp, 8bpp, and A2 mode, GC16 mode, in this demo, the time to refresh 10 frames of images will be counted automatically and the frame rate (fps) will be calculated automatically.
Related Description
Mode Description
IT8951 for different resolutions of the screen brushed into different firmware, different firmware has different refresh modes, see E-paper-mode-declaration for details, the modes used in the demo are INIT mode, GC16 mode, and A2 mode.
The following is a brief description of the relevant modes:
Mode | Features | 6inch/6inch HD | 7.8inch/9.7inch/10.3inch |
---|---|---|---|
INIT | Used to erase the display content, and clear the screen. It is recommended to use INIT mode to clear the screen after several A2 mode refreshes | Mode0 | Mode0 |
GC16 | Adopt 16 levels of grayscale to update the screen display content, the best display effect | Mode2 | Mode2 |
A2 | Only black and white can be refreshed, but the refresh speed is the fastest | Mode4 | Mode6 |
//basic mode definition UBYTE INIT_Mode = 0; UBYTE GC16_Mode = 2; //A2_Mode's value is not fixed, is decided by the firmware's LUT UBYTE A2_Mode = 6;
if( strcmp(LUT_Version, "M641") == 0 ){ //6inch e-Paper HAT(800,600), 6inch HD e-Paper HAT(1448,1072), 6inch HD touch e-Paper HAT(1448,1072) A2_Mode = 4; Four_Byte_Align = true; }else if( strcmp(LUT_Version, "M841") == 0 ){ //9.7inch e-Paper HAT(1200,825) A2_Mode = 6; }else if( strcmp(LUT_Version, "M841_TFA2812") == 0 ){ //7.8inch e-Paper HAT(1872,1404) A2_Mode = 6; }else if( strcmp(LUT_Version, "M841_TFA5210") == 0 ){ //10.3inch e-Paper HAT(1872,1404) A2_Mode = 6; }else{ //default set to 6 as A2 Mode A2_Mode = 6; }
BPP Description
BPP (Bits Per Pixel), which indicates the number of bits occupied by a pixel, currently, all screens support 1bpp, 2bpp, 4bpp, 8bpp mode refresh.
- 1bpp
- Each pixel occupies 1 bit.
- Can display 2(2^1=2) levels of grayscale, suitable for A2 mode (can only update 2 levels of grayscale in black and white)
- Each byte can store 8-pixel points.
- Pixel points are stored in 1 byte in RAM in large end order:
- In IT8951 default use a small end sequence, need to convert the big end sequence to small end sequence.
- 2bpp
- Each pixel occupies 2 bits.
- Capable of displaying 4(2^2=4) levels of grayscale.
- Each byte can store 4-pixel points.
- Pixel points are stored in RAM in large end order per 1 byte:
- In IT8951 default use a small end sequence, need to convert the big end sequence to a small end sequence.
- 4bpp
- Each pixel occupies 4 bits.
- Capable of displaying 16(2^4=16) levels of grayscale.
- Each byte can store 2-pixel points.
- Pixel points are stored in RAM in large end order for each 1 byte:
- In IT8951 default uses small end order, need to convert the big end order to small end order.
- It is recommended to use 4bpp for a refreshing, which can display 16 levels of grayscale, and compared to 8bpp, the amount of transmitted data is reduced by half, the transmission speed is twice as fast, and there is no difference in display effect.
- 8bpp
- Each pixel occupies 8 bits.
- Can display 256 (2^8=256) levels of grayscale, but in IT8951 only the high 4 bits are taken, so only 16 levels of grayscale can be displayed.
- Each byte can store 1 pixel.
- Pixel points are stored in RAM in large end order per 1 byte:
- In IT8951, the small end order is used by default, and it is necessary to convert the big end order to the small end order
- To get the corresponding grayscale image from the original image In the program, the specific operation is: whether drawing points, drawing lines, or getting the image, each pixel point obtained is 1 byte (8 bits), if you want to get the corresponding grayscale, you only need to get the corresponding high bit of the byte. For example, if you want to get 2bpp pixel points, you only need to get the high 2 bits from 8bpp (8 bits). The specific operation is shown in the following program, in which each byte in RAM is also converted from big-endian to little-endian.
UDOUBLE Addr = X * (Paint.BitsPerPixel) / 8 + Y * Paint.WidthByte; switch( Paint.BitsPerPixel ){ case 8:{ Paint.Image[Addr] = Color & 0xF0; break; } case 4:{ Paint.Image[Addr] &= ~( (0xF0) >> (7 - (X*4+3)%8 ) ); Paint.Image[Addr] |= (Color & 0xF0) >> (7 - (X*4+3)%8 ); break; } case 2:{ Paint.Image[Addr] &= ~( (0xC0) >> (7 - (X*2+1)%8 ) ); Paint.Image[Addr] |= (Color & 0xC0) >> (7 - (X*2+1)%8 ); break; } case 1:{ Paint.Image[Addr] &= ~( (0x80) >> (7 - X%8) ); Paint.Image[Addr] |= (Color & 0x80) >> (7 - X%8); break; } }
4-byte Alignment Description
In the actual test, we found that for 6inch e-Paper HAT, 6inch HD e-Paper HAT, and 6inch HD touch e-Paper HAT, when using 1bpp mode refresh, the starting point X and refresh width W of the refresh area need to be aligned with 4 bytes (32bit), otherwise, the image of the refresh area will be displayed abnormally, as shown in the following procedure:
if( strcmp(LUT_Version, "M641") == 0 ){ //6inch e-Paper HAT(800,600), 6inch HD e-Paper HAT(1448,1072), 6inch HD touch e-Paper HAT(1448,1072) A2_Mode = 4; Four_Byte_Align = true; }else if( strcmp(LUT_Version, "M841") == 0 ){ ... }
if(Four_Byte_Align == true){ In_4bp_Refresh_Area_Width = Panel_Width - (Panel_Width % 32); }else{ In_4bp_Refresh_Area_Width = Panel_Width; }
X_Start = Min_X < 32 ? 0 : Min_X - (Min_X % 32); Debug("X_Start:%d\r\n",X_Start); X_End = ( Max_X + (32 - (Max_X % 32)) ) > Touch_Pannel_Area_Width ? ( Max_X - (Max_X % 32) ) : ( Max_X + (32 - (Max_X % 32)) ); Debug("X_End:%d\r\n",X_End); Y_Start = Min_Y; Debug("Y_Start:%d\r\n",Y_Start); Y_End = Max_Y; Debug("Y_Start:%d\r\n",Y_End); Width = X_End - X_Start; if(Width<=0){ Width = 32; } Debug("Width:%d\r\n",Width); Height = Y_End-Y_Start; if(Height<=0){ Height = 32; } Debug("Height:%d\r\n",Height);
SPI Transfer Speed Description
Due to the difference in CPU main frequency of Raspberry Pi 3 and Raspberry Pi 4:
- Raspberry Pi 3 can still transmit normally when it adopts 16 division frequency, and the fastest can only adopt 16 division frequency.
- While Raspberry Pi 4B adopts 16 divisions, the SPI rate is too high, and there will be transmission errors, so the SPI of Raspberry Pi 4B can only use 32 divisions at the fastest.
- BCM2835 library manual, different Raspberry Pi version, different clock frequency, the corresponding frequency description is shown below:
- If you need to obtain the most suitable SPI transfer speed, you need to select a different SPI clock division according to your Raspberry Pi version, as shown in the following program and its comments:
bcm2835_spi_begin();//Start spi interface, set spi pin for the reuse function bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);//High first transmission bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);//spi mode 0 //bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_16);//For RPi 3/3B/3B+ bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_32);//For RPi 4B /* SPI clock reference link:*/ /*http://www.airspayce.com/mikem/bcm2835/group__constants.html#gaf2e0ca069b8caef24602a02e8a00884e*/
Enhance Driving Ability
In some cases, due to the FPC line being too long and other reasons, will lead to the ink screen display partial blur, at this time, trying to enhance the drive capability, can effectively solve the problem of the blurred screen display.
Specific procedures are shown below:
#if(Enhance) Debug("Attention! Enhanced driving ability, only used when the screen is blurred\r\n"); Enhance_Driving_Capability(); #endif
/****************************************************************************** function: Enhanced driving capability parameter: Enhanced driving capability for IT8951, in case the blurred display effect ******************************************************************************/ void Enhance_Driving_Capability(void) { UWORD RegValue = EPD_IT8951_ReadReg(0x0038); Debug("The reg value before writing is %x\r\n", RegValue); EPD_IT8951_WriteReg(0x0038, 0x0602); RegValue = EPD_IT8951_ReadReg(0x0038); Debug("The reg value after writing is %x\r\n", RegValue); }
If the E-LINK-TCON-DEMO software is used on a PC (Windows) to refresh the E-paper via the USB interface, the drive can be enhanced by modifying the register values as follows:
- Step 1: Read the data of the registered address 0x18000038.
If the data of the read register address 0x18000038 is 0x02, it means that the driver is not yet enhanced.
- Step 2: Modify the data of register address 0x18000038.
Modify the data of register address 0x18000038 to 602 to enhance the driving capability.
- Step 3: Check the data of register address 0x18000038.
Check whether the data of register address 0x18000038 is modified successfully. If the data of this address is 0x602, it means that the driving capability has been enhanced and the screen can be brushed in this state to avoid the blurred display in some cases, such as the FPC line is too long and the production batch is different.
Use Correct VCOM Value
The VCOM value of each E-paper has certain differences. The VCOM value of each E-paper is marked on the FPC cable, so make sure the correct VCOM value is used in each execution of the demo, otherwise, the display will become worse if the E-paper works under the wrong VCOM value for a long time.
Development Description
The above only illustrates how to use the 7.8-inch e-Paper HAT (D). For details on how to modify and perform secondary development, users need to consult the relevant code by themselves.
Please refer to the IT8951 information provided in the Resource.
Resources
Schematic
Demo code
Third Parties Examples
- This is the Inkycal project for reference.
Datasheet
Other documents
Software
FAQ
Questions About Software & Hardware
{{{5}}}
2. Try changing the USB interface. It is recommended to use the USB interface on the back of the PC. Relatively speaking, the power supply current will be larger.
3. Turn the DIP switch to the end. During shipping, the DIP switches may be loosened, and the floating configuration pins cannot put the IT8951 into USB mode.
{{{5}}}
If you fail to refresh, check whether the hard link is normal, use the USB port on the back of the PC (most of the USB ports on the front of the PC have weak power supply capability), and replace the e-paper test.
Note: Do not plug and unplug the e-paper with power on, otherwise the driver board and e-paper may be damaged.
{{{5}}}
Questions About Screen
- 【Operating condition】Temperature range: 0~50°C; Humidity range: 35%~65%RH
- 【Storage condition】Temperature range: below 30°C; Humidity range: below 55%RH; Maximum storage time: 6 months
- 【Transportation condition】Temperature range:-25~70°C; Maximum shipping time: 10 days
- 【After unpacking】Temperature range: 20°C±5°C; Humidity range: 50±5%RH; Maximum storage time: Assembled within 72 hours
{{{5}}}
- Refresh mode:
- Full refresh: The e-ink screen will flicker several times during refreshing (the flicking times depends on the refresh time), and the flicker is to remove the ghosting to achieve the best display effect.
- Partial refresh: The e-ink screen has no flickering effect during refreshing. Users who use partial flashing should pay attention to performing a full flashing operation to remove the ghosting after refreshing several times, otherwise, the ghosting problem will become more and more serious, or even damage the screen. (At present, only some black and white e-ink screens support local brushing, please refer to the product page for details).
- Refresh frequency:
- During use, it is recommended that customers set the refresh interval of the e-ink screen to at least 180 seconds. (Except for products that support the partial refreshing function)
- During the standby process (that is, after the refresh operation), it is recommended that the customer set the e-ink screen to sleep mode, or power off (the power supply part of the ink screen can be disconnected with an analog switch) to reduce power consumption and prolong the life of the e-ink screen. (If some e-ink screens are powered on for a long time, the screen will be damaged beyond repair.)
- During the use of the e-ink screen, it is recommended that customers update the display screen at least every 24 hours. (If the screen keeps the same picture for a long time, there will be a burn-in situation that is difficult to repair).
- Application scenarios:
- The e-ink screen is recommended for indoor use. If it is used outdoors, it is necessary to prevent the e-ink screen from being exposed to direct sunlight, and at the same time, it is necessary to take ultraviolet protection measures, because charged particles will dry out under strong light for a long time, resulting in loss of activity and failure to refresh. This situation is irreversible. When designing electronic ink screen products, customers should pay attention to determine whether the use environment meets the requirements of electronic ink screens.
{{{5}}}
{{{5}}}
{{{5}}}
{{{5}}}
{{{5}}}
Support
Technical Support
If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 AM GMT+8 (Monday to Friday)