I am aware this could cause some serious lag issues. However, I only intend to use that RAM to fill the display buffer for the LCD (240 * 320 pixels).

I can't store all of this data in my Arduino's RAM since it can only hold 8Kb.

Anyhow, I understand the pin out but I lack understanding on how to detect whether the device is in the middle of a read/ write operation. Given, the arduino is likely clocked at a speed faster than the device can handle, and I suspect that I would have to suspend the arduino a couple nan seconds to ensure data integrity.

So what I need to understand is then, the procedure to safely read and write to that RAM

  • $\begingroup$ Welcome to Engineering SE. Can you please confirm if driver IC datasheet is same as the one you are you using. $\endgroup$ Commented Jun 15, 2021 at 13:25
  • 2
    $\begingroup$ @jsotola, the question is on topic for Engineering SE. $\endgroup$ Commented Jun 15, 2021 at 13:27
  • $\begingroup$ @user8055, yes that is the one $\endgroup$
    – anon0
    Commented Jun 15, 2021 at 23:37
  • 1
    $\begingroup$ Base on the information provided I am struggling to picture the hardware architecture. If possible on paper can you sketch out your hardware architecture post a picture. Base on the information provide the Arduino will act as the memory controller, and the memory controller will manage the read and writes. When the memory controller is executing a memory write you block the reads and vice versa. If this what you are looking for, let me know I can post a pseudo code snippet as an answer. $\endgroup$ Commented Jun 16, 2021 at 12:26
  • $\begingroup$ Can you share the datasheet for your LCD display? $\endgroup$
    – 706Astor
    Commented Jun 21, 2021 at 16:35

1 Answer 1


Looking at the write timings from the data sheet that @user8055 linked the sequence you must employ to write is:

  1. set the address on the address lines
  2. set output enable to high
  3. set chip enable to low
  4. set write enable to low
  5. set data on the data lines
  6. set write enable to high

If you want to write more data then

  1. set the next address on the address lines
  2. goto step 4

There are a few timings to keep in mind.

The time from setting output enable to high to being able to set the data is 30 nanoseconds.
The write pulse (the time that write enable is held low) must be at least 35 nanoseconds.
The time the data must be held stable before the end of the end of the write pulse is at least 30 nanoseconds.

For context 1 arduino clock cycle at 16MHz takes about 60 nanoseconds. You will be fine with regards to controlling this device.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.