The aim of this project is to create an affordable, FPGA-based solution for driving e-ink displays with a high frame rate. In this development board, FPGA fully controls e-ink to enable experimental work on display modes. A greyscale, 6-bit VGA output is provided for a real-time preview.
Two e-ink models are supported, ED060SC4 and ES108FC2. Other e-inks can be connected if their pinouts are compatible.
The board is designed for use with Radxa CM3IO, a carrier board for Radxa CM3. This computer has a native LVDS port multiplexed with DSI0.
I have tidied up the PCB design, including the silkscreen layer where I added some meaningful information.
I also ordered ES108FC2 from the go-to shop in China. It was only €30 for a 10,8" 1080p e-ink, but still I own some 6" pieces to test the PMIC portion on.
The project will land on github for everyone to see, just got to find some spare time to do so.
Up until this point I was working solely on this PCB because I may have it built earlier than I expected.
Which brings me to another bit of exciting news. I was contacted by PCBWay representative with a kind offer of sponsoring prototypes for this project. How could I say no!
So I got my hands full ensuring that the BOM is tidy and ready for the PCBWay engineers to process it. I've never been a customer of PCBWay before and I'm excited to have this opportunity to test their services. I'll do my best to report my experience with this company in future posts.
That PCB still needs some silkscreen cleanup and production files export, but I'm not up to doing this tonight. I added a picture to the project to make it look less dull and certainly not stale.
It took me a few tries before I nailed the layout with both FPC connectors for each supported e-ink. I was this close to giving up on this idea and making a design exclusive to one e-ink model.
I'll probably do what worked for me for the last time and order this PCB with cheap passives mounted on it, and hand solder more expensive components. The reason is I don't want to have 5 pieces built, and I don't want to spend a day cherry picking the right resistor for each footprint.
Huh, knowing that, I could have designed it around smaller components than 0603.
The next step would be to have this thing manufactured, but also to have the development environment set up on my Radxa CM3, and a few missing Verilog blocks developed in the meantime.
I created this Hackaday project just for the sake of keeping my development notes somewhere, and stop spamming Odroid forum with unrelated posts.
So, I'm halfway done with the PCB design of the board matching the project description.
The FPGA of choice is iCE40HX4K in TQFP144, which is cheap and through icestorm toolchain it can be used as 'HX8K for a fraction of a price.
In the past I have already done VGA output on ICE40, as well as the programming interface through SPI on ARM SBCs, so I'm not worried about those at all.
Routing two parallel e-ink outputs was a challenge, and signal integrity worries me a little, as trace branching could not be avoided. But experience shows that engineers worry too much about that, heh.
I added 64Mb PSRAM which should be easy enough to drive, as it has an interface almost identical to SRAM. I am not entirely sure whether a frame buffer will be necessary at all, but I cannot rule it out either. Again, I didn't care too much about equal trace lengths and such. Should be fine at 50MHz DDR.
The programming interface is a 10-pin 2,54mm IDC compatible with Olimex ice40 evalboards. It consists of SPI signals for flashing the on-board Flash and two misc lines which I normally use as a UART debug IF.
Since there is a dedicated e-ink PMIC that requires I2C config, I guess that I'll have to make another connector just for that. I'll give Linux a chance to configure it using a mainline driver (if it exists?), but if not I'll just bitbang a config sequence from FPGA.
The board will be JLC'ed without assembly as I don't need 5 pieces. Hand soldering will be a nightmare, but what's December for, right?