SSD1306 OLED驱动芯片 详细介绍(使用I2C)

1 简介

SSD1306是一款带控制器的用于OLED点阵图形显示系统的单片CMOS OLED/PLED驱动器。它由128个SEG(列输出)和64个COM(行输出)组成。该芯片专为共阴极OLED面板设计。

SSD1306内置对比度控制器、显示RAM(GDDRAM)和振荡器,以此减少了外部元件的数量和功耗。该芯片有256级亮度控制。数据或命令由通用微控制器通过硬件选择的6800/8000系通用并行接口I2C接口或==SPI(串行外围接口)==发送。该芯片适用于许多小型便携式应用,如手机副显示屏、MP3播放器和计算器等。

1.1 器件特性

  • 分辨率:128 x 64 点阵
  • 电源:对于集成逻辑电路,VDD=1.65V3.3V;对于面板驱动,VCC=7V至15V
  • 点阵驱动:OLED驱动输出电压,最大15V;SEG最大源电流:100uA;COM最大汇电流:15mA;
  • 256阶对比度亮度电流控制
  • 内置128 x 64位SRAM显示缓冲区
  • 引脚可选择的MCU接口:8位6800/8080串并接口、 3/4线串行外围接口、I2C接口
  • 水平和垂直方向的屏幕保持连续滚动功能
  • RAM写同步信号
  • 可编程帧速率和复用率
  • 行重映射和列重映射
  • 片内内置振荡器
  • COG和COF的芯片封装
  • 工作温度范围广:-40°C至85°C

1.2 SSD1306结构介绍

内部结构图
SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第1张图片
引脚分配图
SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第2张图片

2 选择I2C协议(MCU配置)

2.1 如何选用I2C/SPI协议

通过BS0、BS1和BS2引脚,控制写入协议。
SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第3张图片

2.2 MCU接口选择

SSD1306单片机接口由8个数据引脚和5个控制引脚组成。表8-1总结了不同接口模式下的引脚分配。在BS[2:0]引脚上通过硬件选择可以设置不同的MCU模式(BS[2:0]设置见表7-1)。
SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第4张图片

3 MCU I2C接口

3.1 基础配置

I2C总线包含从机地址位 SA0,由数据信号线(SDA)和时钟信号线(SCL)组成。SDA和SCL线都必须接上拉电阻,RES#用来初始化芯片。

IIC设备在数据传输之前都必须识别从机地址。SSD1306的从机地址有 0111100b 和 0111101b 两种,通过将 SA0(D/C#) 脚上拉到高电平可以设置从机地址第七位为 1,将 SA0(D/C#) 脚下拉到低电平可以设置从机地址第七位为 0。通过 SA0(D/C#) 脚的上拉和下拉来设置从机地址,从而令总线上可以存在最多2个SSD1306驱动器。

SDAOUT/D2和SDAIN/D1连接到一起作为SDA。SDAIN引脚必须连接到SDA,SDAOUT引脚可以不连接。当SDAOUT引脚不连接,应答信号将会被12C总线忽略。

3.2 写入时序

IIC写入时序如下所示:

  1. 主机先发起开始(START)信号,然后发送1byte首字节,包括从机地址(7位)和读写数据位(1位,最低位,0为写模式),驱动器识别从机地址为本机地址之后,将会发出 应答信号(ACK) 。(首字节组成如下图所示)
  2. 主机收到从机(驱动器)的应答信号之后,随后传输1byte控制字节。一个控制字节主要由
    CO 和 D/C# 位后面再加上六个0组成的。(控制字节组成如下图所示)
    如果Co为0,后面传输的信息就只包含数据字节。
    D/C# 位决定了下个数据字节是作为命令还是数据。D/C# 为0时,下一个数据被视为命令;DC# 为1时,下一个数据被视为显示数据,存储到GDDRAM中。
  3. 收到控制字节ACK信号之后,传输要写入的数据字节。
  4. 传输完毕之后主机发出结束(STOP)信号
    SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第5张图片

3.3 读写控制

SSD1306通过 D/C# 和 R/W# 两位来确定:读/写数据,写命令和读状态四种通信行为。具体如下图,不再赘述:
SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第6张图片

4 指令详解

4.1 基础指令

SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第7张图片

  1. 设置对比度 (81H+A[7:0])
      这是一条双字节指令,由第二条指令指定要设置的对比度级数。
      A[7:0] 从 00H~FFH 分别指定对比度为 1~256 级。SEG(段)输出的电流大小随对比度级数的增加而增加。

  2. 设置全屏全亮 (A4H / A5H)
      这是一条单字节指令,用于开关屏幕全亮模式。
      A4H 设置显示模式为正常模式,此时屏幕输出GDDRAM中的显示数据。
      A5H 设置显示模式为全亮模式,此时屏幕无视GDDRAM中的数据,并点亮全屏(用此指令作为第一条指令,点亮OLED屏幕)
      通过A5H设置全屏点亮之后可以通过A4H来回复正常显示。

  3. 设置正常/反转显示 (A6H / A7H)
      这是一条单字节指令,用于设置屏幕显示
      A6H 设置显示模式为 1亮0灭,而 A7H 设置显示模式为 0亮1灭

  4. 开关显示屏 (AEH / AFH)
      这是一条单字节指令。
      AEH 关闭屏幕,而 AFH 开启屏幕。
      屏幕关闭时,所有SEG和COM的输出被分别置为Vss和高阻态。

4.2 地址指令

SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第8张图片

  1. 设置GDDRAM寻址模式 (20H+A[1:0])
      这是一条双字节指令,由 A[1:0] 指定要设置的地址模式。
      A[1:0]=00b时为水平地址模式;A[1:0]=01b时为垂直地址模式;A[1:0]=10b时为页地址模式;A[1:0]=11b时为无效指令;
      由于第二条指令前6位值无规定,所以直接用0替代,得到:00H-水平;01H-垂直;02H页

  2. 设置起始/终止列地址 (21H+A[6:0]+B[6:0])
      这是一条三字节指令,由A[6:0]指定起始列地址,B[6:0]指定终止列地址。
      同样,由于前1位值无规定,所以:A[6:0] 和 B[6:0] 从 00H~7FH 的取值指定起始/终止列地址为 0~127。
      这条指仅在水平/垂直模式下有效,用来设置水平/垂直模式的初始列和结束列

  3. 设置起始/终止页地址 (22H+A[2:0]+B[2:0])
      这是一条三字节指令,由A[2:0]指定起始也地址,B[2:0]指定终止页地址。
      由于前5位值无规定,所以:A[2:0]和B[2:0]从 00H~07H 的取值指定起始/终止页地址为 0~7。
      这条指仅在水平/垂直模式下有效,用来设置水平/垂直模式的初始页和结束页

  4. 设置起始列地址低位 (00H~0FH)
      这是一条单字节指令。
      高4位恒定为0H,低4位为要设置的起始列地址的低4位。这条指令仅用于页寻址模式。

  5. 设置起始列地址高位 (10H~1FH)
      这是一条单字节指令
      高4位恒定为1H,低4位为要设置的起始列地址的高4位。这条指令仅用于页寻址模式。

  6. 设置页地址 (B0H~B7H)
      这是一条单字节指令
      高4位恒定为BH,第5位规定为0,低3位用于设置页地址,从 B0H~B7H 分别设置起始页为 0~7。这条指令仅用于页寻址模式。

4.3 硬件指令

SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第9张图片

  1. 设置GDDRAM起始行 (40H~7FH)
     这是一条单字节指令。
     高2位规定为01b,由低6位的取值来决定起始行。整体指令从 40H~7FH 分别设置起始行为 0~63。

  2. 设置SEG映射关系 (A0H / A1H)
     这是一条单字节指令。
     A0H 设置GDDRAM的COL0映射到驱动器输出SEG0。
     A1H 设置COL127映射到SEG0

  3. 设置COM扫描方向 (C0H / C8H)
     这是一条单字节指令。
     C0H 设置 从COM0扫描到COM[N-1],N为复用率
     C1H 设置 从COM[N-1]扫描到COM0

  4. 设置复用率 (A8H+A[5:0])
     这是一条双字节指令,由A[5:0]指定要设置的复用率
     复用率(MUX ratio)即选通的COM行数,不能低于16,通过A[5:0]来指定。
     A[5:0] 高两位无规定视为0,所以第二条指令从 0FH~3FH 的取值设置复用率为 1~64(即A[5:0]+1)。A[5:0]从0到14的取值都是无效的。

  5. 设置垂直显示偏移 (D3H+A[5:0])
     这是一条双字节指令,由A[5:0]指定偏移量。
     垂直显示偏移即整个屏幕向上移动的行数,最顶部的行会移到最底行。
     A[5:0] 高两位无规定视为0,所以第二条指令从0FH~3FH的取值设置垂直偏移为 0~63

  6. 设置COM硬件配置 (DAH+A[5:4])
     这是一条双字节指令,由A[5:4]进行设置。
     A[5] 位设置COM左右反置,A[4] 用来设置序列/备选引脚配置,其他位有规定,规定如下所示。
    在这里插入图片描述
     SSD1306的COMn引脚一共有左边 COM32~COM63 和右边 COM0~COM31 共64个(金手指面朝上方)。通过设置A[5]可以让左右COM引脚的输出互换。A[5]=0时禁止左右反置,A[5]=1时启用左右反置。
      COM引脚的排列有序列和奇偶间隔(备选)两种,通过A[4]进行设置。A[4]=0时使用序列COM引脚配置,A[5]=1时使用奇偶间隔(备选)COM引脚配置。

4.4 时序和指令

SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第10张图片
1.设置显示时钟分频数和fosc (D5H+A[7:0])
2.设置预充电周期 (D9H+A[7:0])
3.设置VCOMH输出的高电平 (DBH+A[6:4])
4.空操作 (E3H)

4.5 滚动指令

SSD1306 OLED驱动芯片 详细介绍(使用I2C)_第11张图片

你可能感兴趣的:(芯片设计,芯片验证,1024程序员节,SSD1306,OLED,I2C)