Connecting a graphical LCD via a I2C using a 16-bit port expander

Good question!

Without the speed change:

  • Clear screen: 588 ms
  • Draw 96 characters of text: 347 ms
  • Frame a rectangle: 278 ms
  • Fill a rectangle: 4687 ms

With the suggested change:

  • Clear screen: 229 ms
  • Draw 96 characters of text: 148 ms
  • Frame a rectangle: 120 ms
  • Fill a rectangle: 1753 ms

With the suggested change and write-through caching enabled:

  • Clear screen: 230 ms
  • Draw 96 characters of text: 147 ms
  • Frame a rectangle: 78 ms
  • Fill a rectangle: 976 ms

The activities which don't involve reading back were within 1 ms of before, but the ones which involved pixel drawing were somewhat faster.

Personally I think that writing all 96 characters (over half a 8x21 line screen) in just over 1/7 of a second is pretty reasonable.