Why a 4-line bus architecture is used in SimVim for LCD displays, not the serial i2c or SPI?
- It's faster (because parallel), custom hard-coded without using slow libraries, I2C doesn't allow you to use long wires for high speed communication with multiple devices.
- It uses the same 4 common lines that already exist in the system, for all displays, each additional LCD needs only one output pin.
- No need to bother with different address for every device (as I2C needs), or the SPI issues with multiple devices.
To work with I2c we would need to use not only an i2c library, but also a library for every display type, with all their user-configured options. Or else, we would have to write our own I2C universal program for all displays.
The SimVim interface is initially designed in such a way that it should not force the user to program something (the firmware code is not accessible to the user) and the interface should be universal "plug-and-fly".
We don't use any 3rd-party libraries, the firmware code for every output device type (7-segment displays, LCDs etc.) is "low-level", working with AVR controller ports directly (this gives a huge advantage in program speed).