-
Notifications
You must be signed in to change notification settings - Fork 9
How the data buffer is sent with EPDiy
It is sent line-by-line from two DMA buffers, where one is filled again while the other is sent. The I2S peripheral operates in LCD mode that allows this parallel sending.
In the current version is sent over a 8 data-lines bus, like we can see in i2s_data_bus.c
void i2s_bus_init(i2s_bus_config *cfg) {
gpio_num_t I2S_GPIO_BUS[] = {cfg->data_6, cfg->data_7, cfg->data_4,
cfg->data_5, cfg->data_2, cfg->data_3,
cfg->data_0, cfg->data_1};
// ... rest of initialization
}
This page will be dedicated to analyze if it's possible to initialize there a bus with 16 GPIOS and most important in what order that should be. Notice that the order in the I2S_GPIO_BUS array is not linear.
To be continued...
Q: Possible to use I2S to have a 16 bit data bus - Question in esp32 Forum
Answer: Yes is possible. But no hints about the ordering logic of the BUS Array.
Q: Would it be possible to make it with the existing EPDiy board ESP32 GPIOs or I should try to make an alternative version with ESP32-S2? With my null knowledge of KiCad that will be a one year enterprise but I would love to try it even if I know it will take many iterations to get it working. Or it will be better to stick with good old ESP32 and just find a way to drive this new breed of 16 data bus epapers?
Answer from vroland: You can have a look at the schematic, to see if you get 8 more output-capable pins freed up. If so, I'd stick with the ESP32 if you want the easier route. But getting more free pins may not be possible without significant compromise to performance. Further research: I don't find more than 2 output capable GPIOs free at the moment to allocate a bus that is 8 bits bigger. Unless I'm missing something, this won't be possible to do with existing EPDiy board, unless there is a way to use a shift register but that slow things down. Precisaly when this eink displays have a 16 bits buffer since the amount of data to be sent is considerably bigger than on older epapers (Specially color Einks, that have 16x16x16 RGB possibilities per pixel - 4096 colors)
Q: About this new Goodisplay DES Technology, how do they can achieve 4096 color combination?
Every pixel consist of a Red, Green and Blue cell, that have 16 levels of Gray: 4 bits per color. 16 bits per pixel. This eink cells are between the Color filter and the white background, so you can reduce what amount of light reflects on each color.
For example:
Full white: R: 0 G: 0 B: 0 All epaper cells stay unactive, they let full light pass and reflect on the background.
All red : R: 0 G: 16 B: 16 Only Red light reflects, others are opaque, and do not reglect green/blue.
Black : R: 16 G: 16 B: 16 All 3 colors are turned down since the epaper in between turns black.
Yellow : R: 0 G: 0 B: 16 Only blue is suppressed, so we see only a strong mix of Red/Green.
All this is my theory after inspecting this with a microscope. Is still not completely clear how it's done since obviously if to make Red, you need to add two black cells to GB, then you will have kind of dark red. But it's not really like this, since the background is white, and you still will see red zooming out on the macro view.