SSD1306 128x64 SPI OLED Display: Difference between revisions

From Embedded Workshop
Jump to navigation Jump to search
No edit summary
No edit summary
Line 35: Line 35:
  Arduino UNO 11 12 13 8 7 6
  Arduino UNO 11 12 13 8 7 6


'''Arduino Uno - Hardware SPI - Screen Captures'''
'''Arduino Uno - Hardware SPI - Screen Captures'''<br>
[[File:Start Of Frame Commands.png|1400px]]<br>
Before each frame, the Arduino sends six command bytes before sending the frame data<br>
 
 





Revision as of 10:48, 31 December 2020

Hardware

These displays use the SSD1306 controller: https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf

The following is from the SSD1306.pfd document:

8.1.3 MCU Serial Interface (4-wire SPI)
The 4-wire serial interface consists of serial clock: SCLK, serial data: SDIN (MOSI), D/C#, CS#.
In 4-wire SPI mode, D0 is used for SCLK signal, D1 is used for MOSI. For the unused data pins, D2 should be left open.
The pins from D3 to D7, E and R/W# (WR#)# can be connected to an external ground.

Table 8-4 : Control pins of 4-wire Serial interface
Function        E(RD#)	  R/W#(WR#)   CS#    D/C#   D0
Write command  Tie LOW   Tie LOW      L      L      ↑
Write data     Tie LOW	  Tie LOW      L      H      ↑
Note
(1) H stands for HIGH signal
(2) L stands for LOW signal
RES#   This pin is reset signal input. When the pin is pulled LOW, initialization of the chip is executed.
       Keep this pin HIGH (i.e. connect to VDD) during normal operation.
D/C#   This is Data/Command control pin. When LOW, it indicates a command to be sent to the command register. 
       When HIGH, it indicates data.
       In I2C mode, this pin acts as SA0 for slave address selection.
       When 3-wire serial interface is selected, this pin must be tied low (connected to VSS).
CS#  This pin is the chip select input. (active LOW).

NOTE: This device uses SPI mode 0.

For this exercise, I used the SPI (4 wire) Hardware interface, with reset (RES#) added. (I don't believe MISO is used.)
According to the datasheet, the maximum SPI clock frequency is 10MHz.

Connections

Board	       MOSI    MISO	SCK	RES#	CS#	D/C#
Arduino UNO	11	12	13	8	7	6

Arduino Uno - Hardware SPI - Screen Captures

Before each frame, the Arduino sends six command bytes before sending the frame data



Software

For Arduino, the Adafruit SSD1306 library, version 2.4.2, works very well.  

Additional Resources

https://learn.adafruit.com/monochrome-oled-breakouts/wiring-128x32-spi-oled-display