接前一篇文章:STM32H743驱动SSD1309(2)
三、命令说明
1. 设置命令锁定(FDh)
此双字节命令用于锁定OLED驱动器IC,不接受除其自身之外的任何命令。在输入FDh 16h(A[2]=1b)之后,OLED驱动器IC将不响应任何新输入的命令(除了FDh 12h A[2]=0b),并且将没有存储器访问。这被称为“锁定”状态。这意味着OLED驱动器IC在“锁定”状态下忽略所有命令(FDh 12h A[2] = 0b除外)。
输入FDh 12h(A[2]=0b),可以解锁OLED驱动器IC。这意味着驱动器IC将从“锁定”状态恢复,然后驱动器IC将响应命令和存储器访问。
示例代码:
LCD_WR_REG(0xFD); // Command Lock (SSD1309 use, SSD1305 no use)
LCD_WR_REG(0x12); // Unlock Driver IC (0x12/0x16)
2. 设置显示开/关(AEh/AFh)
这两个单字节命令用于打开或关闭OLED面板显示。
当显示打开时,通过Set Master Configuration(设置主配置)命令选择的电路将打开;
当显示关闭时,这些电路将关闭,分段和公共输出分别处于VSS状态和高阻抗状态。这些命令将显示设置为以下两种状态之一:
- AEh:显示关闭
- AFh:显示打开
示例代码:
LCD_WR_REG(0xAE); // Set Display Off
3. 设置显示时钟分频比/振荡器频率(D5h)
此命令由两个功能组成:
- 显示时钟分频比(D)(A[3:0])
设置分频比以从CLK生成DCLK(显示时钟)。分频比为1-16,重置值为0000b。有关DCLK和CLK的详细关系,请参阅第8.3节。
- 振荡频率(A[7:4])
如果CLS引脚被拉高,则对作为CLK源的振荡器频率Fosc进行编程。4位值产生16种不同的可用频率设置,如下所示。默认设置为1000b。
8.3 振荡器电路和显示时间发生器
此模块是片上低功率RC振荡器电路。操作时钟(CLK)可以由内部振荡器或外部源CL引脚产生。此选择由CLS引脚完成。
如果CLS引脚被拉高,则选择内部振荡器,CL应连接到VSS;
将CLS引脚拉低将禁用内部振荡器,外部时钟必须连接到CL引脚才能正常工作。
当选择内部振荡器时,其输出频率Fosc可以通过命令D5h A[7:4]来改变。
用于显示定时生成器的显示时钟(DCLK)是从CLK获得的。分频因子“D”可通过命令D5h从1编程为16。
显示的帧频由以下公式确定:
其中:
- D代表时钟分频比。它由命令D5h A[3:0]设置。分频比的范围从1到16。
- K是每行的显示时钟数。该值通过下式获得:
K = Phase 1 period + Phase 2 period + Ko
= 2 + 2 + 65 = 69 在上电复位时 (Ko为常数65)
- 多路复用比率的数目由命令A8h设置。上电复位值为63(即64MUX)。
- FOSC是振荡器频率。可通过命令D5h A[7:4]进行更改。寄存器设置越高,频率越高。
根据以上说明,实际的LCD板子上并没有晶振,也就是说没有外部时钟。因此,选择的是内部振荡器,因而D5h A[7:4]也就派上了用场。
示例代码:
LCD_WR_REG(0xD5); // Set Display Clock Divide Ratio/Oscillator Frequency
LCD_WR_REG(0xA0);
更多命令(寄存器)说明请看下回。