简介 SSD1306是一个单片CMOS OLED/PLED驱动芯片可以驱动有机/聚合发光二极管点阵图形显示系统。由128 segments 和64 Commons组成。该芯片专为共阴极OLED面板设计。 SSD1306中嵌入了对比度控制器、显示RAM和晶振,并因此减少了外部器件和功耗。有256级亮度控制。数据/命令的发送有三种接口可选择:6800/8000串口,I2C接口或SPI接口。适用于多数简介的应用,注入移动电话的屏显,MP3播放器和计算器等。 特性 1.分辨率:128 * 64 点阵面板 2.电源: a)VDD = 1.65V to 3.3V 用于IC逻辑 b)VCC = 7V to 15V 用于面板驱动 3.点阵显示 a)OLED驱动输出电压,最大15V b)Segment最大电流:100uA c)常见最大反向电流:15mA d)256级对比亮度电流控制 4.嵌入式128 * 64位SRAM显示缓存 5.引脚选择MCU接口 a)8位6800/8000串口 b)3/4线SPI接口 c)I2C接口 6.水平和垂直两个方向的屏幕保存连续滚动功能。 7.RAM写同步信号 8.可编程的帧率和多重比率 9.行重映射和列冲映射 10.片上晶振 11.两种封装 COG和COF 12.工作温度范围广:‐40℃ to 85℃ 订购信息 暂不翻译 结构方框图 功能块描述 MCU接口选择 SSD1306MCU接口由8个数据引脚和5个控制引脚组成。引脚分配由不同的接口选择决定,详情如下表。不同的MCU模块可以通过BS[2:0]引脚的硬件选择设置。 Data/Command 接口 控制信号 引脚 总线接口 D7 D6 D5 D4 D3 D2 D1 D0 E R/W# CS# D/C# RES# 8‐bit 8080 D[7:0] RD# WR# CS# D/C# RES# 8‐bit 6800 D[7:0] E R/W# CS# D/C# RES# 3‐wire SPI Tie LOW NC SDIN SCLK Tie LOW CS# Tie LOW RES# 4‐wire Spi Tie LOW NC SDIN SCLK Tie LOW CS# D/C# RES# I2C Tie LOW SDAoutSDAin SCl Tie LOW SA0 RES# MCU 并口 6800系列接口 不翻译 MCU 并口8080系列接口 不翻译 MCU串口(4‐wire SPI) 不翻译 MCU串口(3‐wire SPI) 不翻译 MCU I2C 接口 I2C通讯接口由从机地址为SA0,I2C总线数据信号(SDAout/D2输出和SDAin/D1输入)和I2C总线时钟信号SCL(D0)组成。数据和时钟信号线都必须接上上拉电阻。RES#用来初始化设备。 a.从机地址位(SA0) SSD1306在发送或接受任何信息之前必须识别从机地址。设备将会响应从机地址,后面跟随着从机地址位(SA0位)和读写选择位(R/W#位),格式如下: b7 b6 b5 b4 b3 b2 b1 b0 0 1 1 1 1 0 SA0 R/W# SA0位为从机地址提供了一个位的拓展。0111100或0111101都可以做为SSD1306的从机地址。D/C#引脚作为SA0用于从机地址选择。R/W#为用来决定I2C总线接口的操作模式。R/W# = 1,读模式。R/W# = 0 写模式 b.I2C总线数据信号SDA SDA作为发送者和接受者之间的通讯通道。数据和应答都是通过SDA发送。 应该注意的是ITO轨道电阻和SDA引脚上的上拉电阻会变成一个潜在的电压分压器。结果就是SDA上的应答可能不能达到有效的逻辑0。 SDAin和SDAout绑定到了一起作为SDA。SDAin引脚必须连接到SDA。SDAout引脚可以不连接。当SDAout引脚不连接,应答信号将会被I2C总线忽略。 c.I2C总线时钟信号SCL I2C总线上的信息传输任务是随着一个时钟信号的,SCL。每个数据位的传输任务发生在SCL的单个的时钟周期中。 I2C总线写数据 I2C总线接口提供了写数据和命令到设备的接口。关于I2C总线的写模式的时序请参考下图: I2c的写模式 1.主机设备通过开始条件初始化数据通讯。开始条件的定义在下面的图中展示。开始条件通过将SDA从高拉低而SCL保持高建立。 2.从机地址紧跟着开始条件作为标志用。对于SSD1306,从机地址可以是“b0111100”或“b0111101”通过改变SA0到LOW或HIGH(D/C引脚作为SA0)。 3.写模式的建立是通过设置R/W#为到逻辑0实现的。 4.应答位信号将在接收到一个字节的数据后发生包括从机地址和R/W#位。可以参考下面的应答位信号的图示。应答位的定义是在应答位相关的时钟脉冲的高周期中把SDA线拉低。 5.传输完从机地址之后,控制字节或数据字节开始通过SDA传输。一个控制字节主要由CO和D/C#位后面再加上六个0组成的。 a)如果Co为设为逻辑0,,后面传输的信息就只包含数据字节。 b)D/C为决定了下个数据字节是作为命令还是数据。如果D/C#位设为0,下一个数据就是命令。如果D/C#位设为1,下一个数据就是数据,将会存在GDDRAM中。GDDRAM列地址指针将会在每次数据写之后自动加1. 6.应答位将会在接收到每个控制字节或数据字节之后发生 7.写模式会在用了停止条件之后结束。停止条件:将SDA从低拉高,而SCL保持高。 请注意数据位的传输是有限制的 1.数据位,在每个SCL脉冲阶段传输,必须在时钟脉冲高周期内保持稳定状态。可以参考下面的图示。除了开始或停止条件,数据线只能在SCL为LOW的时候转换状态。 2.SDA和SCL都必须接外接上拉电阻 命令解码器 这个模块决定了输入数据被解读为数据还是命令。数据的解读是基于D/C#引脚的输入。 如果D/C#引脚是高,D[7:0]就被解读为写到图像显示数据RAM(GDDRAM)中的显示数据。 如果是低,D[7:0]的输入就被解读为一个命令。然后数据输入就会被解码并写到相关的命令寄存器中。 晶振电路和显示时间发生器 这是一个片上低功耗RC震荡电路。操作时钟(CLK)可以由内部震荡器或外部CL引脚生成。这个选择是通过CLS引脚完成的。当CLS引脚拉高,内部振荡器开启,CL应该保留开启。将CLS拉低可以静止内部振荡器,外部时钟必须连接到CL引脚上。当选择了内部振荡器之后,输出频率Fosc可以通过命令D5h A[7:4]修改。 用于显示时钟发生器的显示时钟(DCLK)是源于CLK的。分频因子“D”可以通过命令D5h编程范围为1到16 DCLK = Fosc/D 显示的帧率是由下面的公式决定 D 代表时钟分频。由D5h A[3:0]设置。范围是1到16 K是每行显示时钟的数量。值的计算如下: K = 相1周期 + 相2周期 + BANK0脉冲宽度 = 2 + 2 + 50 = 54 在上电重启时 Number of multiplex ratio 通过command A8h设置。上电重启值为63 。 Fosc 是振荡器频率,可以通过命令D5h A[7:4]修改。值越大频率越大。 FR同步 不翻译 重启电路 当RES# 输入为LOW时,芯片初始化为下面的状态: 1.显示关 2.128 * 64显示模式 3.正常的segment和显示数据列地址和行地址映射(SEG0映射到address 00h,COM0映射到address 00h) 4.在串口中清除移位寄存器数据 5.显示开始行设置为显示RAM地址0 6.列地址计数设为0 7.正常扫描COM输出方向 8.对比度控制寄存器设为7Fh 9.正常显示模式(等同于A4h命令) Segment 驱动/Common驱动 Segment驱动实现了128个电路源来驱动OLED面板。驱动电流的范围可以在0到100uA以内调节,有256个等级。Common驱动产生电压脉冲。 segment驱动波形分为3个阶段: 1.在阶段1,OLED用于显示上一个图片的像素停止充电目的是为了准备显示下一张图片的内容。 2.在阶段2,OLED像素被充到目标电压。像素被从Vss驱动到相关电压水平。阶段2时间可以通过编程在1到15个DCLK内变化。如果OLED面板的像素的电容值比较大,那么就需要更长的时间周期来给电容充电以达到想要的电压。 3.在阶段3,OLED驱动转换为使用电流源来驱动OLED像素,这就是电流源驱动阶段了。 当完成阶段3之后,驱动芯片会回到阶段1来显示下一行图像信息。这三部循环持续运行来刷新OLED面板上的图像显示。 在阶段3,如果电流驱动脉冲长度设为50,在电流驱动阶段完成50个DCLK后,驱动芯片回到阶段1准备下一行的显示。 图形显示数据RAM(GDDRAM) GDDRAM是一个为映射静态RAM保存位模式来显示。该RAM的大小为128 * 64为,RAM分为8页,从PAFE0到PAGE7,用于单色128 * 64点阵显示,如下图所示 当一个数据字节写到GDDRAM中,所有当前列的同一页的行图像数据都会被被填充(比如,被列地址指针指向的整列(8位)都会被填充)。数据位D0写到顶行,而数据位D7写到底行,如下图所示。 为了灵活性,segment和common上的重映射都可以通过软件选择。 对于显示的垂直移动,一个内部的寄存器保存了显示开始行可以用来设置控制RAM数据部分来映射显示(命令D3h)。 SEG/COM驱动块 不翻译 上电和断电顺序 不翻译 命令表 (D/C# = 0, R/W#(WR#) = 0, E(RD# = 1),除非有别的状态声明) 1.基本命令表 D/C#HexD7D6D5D4D3D2D1D0命令描述0081A[7:0]1A70A60A50A40A30A20A11A0设置对比度双字节命令选择256级对比度中的一种。对比度随着值的增加而增加(RESET=7Fh)0A4/A51010010X0整体显示开启状态A4h,X0=0b:恢复RAM内容的显示(RESET)输出跟随RAMA5h,X0=1b:进入显示开启状态,输出不管RAM内容0A6/A71010011X0设置正常显示或反相显示A6h,X[0]=0b:正常显示(RESET)在RAM中的0:在显示面板上为关在RAM中的1:在显示面板上为开A7h,X[0]=1b:反相显示在RAM中的0:在显示面板上为开在RAM中的1:在显示面板上为关0AEAF1010111X0设置显示开或关AEh,X[0]=0b:显示关(睡眠模式)(RESET)AFhX[0]=1b:显示开,正常模式2.滚屏命令D/C#HexD7D6D5D4D3D2D1D0命令描述0000026/27A[7:0]B[2:0]C[2:0]D[2:0]00***00***10***00***00***10B2C2D210B1C1D1X00B0C0D0持续水平滚动设置26h,X[0]=0,向右水平滚动27h,X[0]=1,向左水平滚动(水平平移1列)A[7:0]:空字节B[2:0]:定义开始页地址000b–PAGE0011b–PAGE3110b–PAGE6001b–PAGE1100b–PAGE4111b–PAGE7010b–PAGE2101b–PAGE5C[2:0]:在帧率范围内设置每次滚屏的时间间隔000b–5frames100b–3frames001b–64frames101b–4frames010b–128frames110b–25frame011b–256frames111b–2frameD[2:0]:定义结束页地址000b–PAGE0011b–PAGE3110b–PAGE6001b–PAGE1100b–PAGE4111b–PAGE7010b–PAGE2101b–PAGE5D[2:0]的值必须大于或等于B[2:0]D/C#HexD7D6D5D4D3D2D1D0命令描述00000029/2AA[2:0