感觉很反感mva 发表于 2025-2-24 14:25

与 OLED 显示屏的 SPI 通信

与 SSD1306 OLED 显示屏 进行通信时,主要操作包括发送命令和数据。显示内容通过 SPI 协议传输,命令与数据通常通过不同的控制字节标识。

初始化 OLED 显示屏
初始化 OLED 显示屏需要先发送一些控制命令来配置显示模式、对比度、启动显示等。

c
void OLED_Init(void)
{
    uint8_t init_cmds[] = {
      0xAE,   // Display OFF
      0xD5, 0x80,// Set display clock divide ratio/oscillator frequency
      0xA8, 0x3F,// Set multiplex ratio (height of display - 1)
      0xD3, 0x00,// Set display offset
      0x40,         // Set display start line
      0xA1,         // Set segment remap
      0xC8,         // Set COM output scan direction
      0xDA, 0x12,   // Set COM pins hardware configuration
      0x81, 0x8F,   // Set contrast control
      0xA4,         // Entire display ON (resume to RAM content display)
      0xA6,         // Normal display (not inverted)
      0xAF          // Display ON
    };

    for (int i = 0; i < sizeof(init_cmds); i++) {
      SPI_Send(init_cmds);
    }
}
发送显示数据
OLED 屏幕的数据通过发送数据模式传输,通常数据传输方式为逐个像素发送,按照行列进行更新。

c
void OLED_WriteData(uint8_t *data, uint16_t length)
{
    SPI_Send(0x40); // 数据模式指令
    for (uint16_t i = 0; i < length; i++) {
      SPI_Send(data);// 发送像素数据
    }
}

guijial511 发表于 2025-2-24 20:45

SSD1306这个显示驱动芯片真的是经典中的经典啊

xdvca 发表于 2025-2-27 13:27

确保在初始化之前,SPI 总线的配置正确。
页: [1]
查看完整版本: 与 OLED 显示屏的 SPI 通信