Description
The idea is to control an old broken kindle 3 eink display with a FPGA. I started looking at http://essentialscrap.com/eink/waveforms.html and http://spritesmods.com/?art=einkdisplay since eink constructor is so secretive that you can’t find any information. I got some success with a stm32f4 microcontroller but was disappointed by the poor performance (low refresh, black and white only). So I decided to do something better using an FPGA and some memory, I started with the ice40 Olimex board https://www.olimex.com/Products/FPGA/iCE40/iCE40HX1K-EVB/open-source-hardware.
Details
Essential scrap website provide information about power driving of theses screen, but I was more interested in the signal driving, so I choose to use the TI TPS65185 IC http://www.ti.com/product/TPS65185 which manage everything (special thanks to @Arthur Admiraal for his design https://hackaday.io/project/7153-squidpad which I partially reused).
I used ICE40 because of the open-source toolchain available http://www.clifford.at/icestorm/
The memory permit to include a framebuffer, my Verilog implement a small SPI interface to communicate with the controller.
To simplify the development, I finally created my own little tool https://hackaday.io/project/14864-ifusb
The board is specifically made for Kindle 3 display (ED060SC7), but should works with some other display from this generation (ED060SCE found in Kobo) which are 6″ 800×600 16 colors.
Hardest part was to implement “waveform” which permit to make smooth and fast transition between screen refresh.
In the Kindle 3 screen, the waveform is actually integrated into an SPI flash in the ribbon cable. In others e-reader, this can generally be found in the firmware. E-Ink (PVI) created his own format, supported by custom controller, and some dedicated Epson chip. I think these controllers are obsoleted since CPU manufacturers does integrate the controller directly. Actually the main (only?) manufacturer which provide CPU supporting eink screen is Freescale (imx6 solo) and they created their format as well.
Read more: Build A FPGA eink Controller Using Arduino