【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、I2C驱动总结 | 您所在的位置:网站首页 › opporeno4se的屏幕刷新率 › 【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、I2C驱动总结 |
目录
SPI版OLED SPI 端口定义七针OLED引脚定义六针OLED引脚定义
软件SPI硬件SPI启用DMA帧率测试
I2C 版软件I2C硬件I2CDMA
STM32F103VET6 STM32 Cube IDE SPI版 OLED SPI 端口定义本节引自STM32驱动0.96寸OLED液晶屏(12864液晶屏) —— 小牧同学 GND — 接地端口 VCC — 接3.3V电源端口 D0 — CLK时钟信号(等同于上面的SCL) D1 — 数据端口(等同于上面的SDA) RES — 复位端口(等同于上面的RST) DC — 数据/命令选择引脚(等同于上面的D/C) CS — 片选引脚(低电平有效,也就是所需要接低电平,我实际试验过不接该引脚也是可以正常使用的) 六针OLED引脚定义GND — 接地端口 VCC — 接3.3V电源端口 SCL — CLK时钟信号端口 SDA — MOSI数据端口 RST — 复位端口 D/C — 数据/命令选择引脚 软件SPI指令解读见【51单片机快速入门指南】4.2: SSD1306 OLED屏(0.96寸、1.3寸)的I2C控制详解 各引脚初始化如下,均为推挽输出: 修改控制电平的函数: GPIOx->BSRR = GPIO_Pin; GPIOx->BSRR = (uint32_t)GPIO_Pin #if OLED_BUFFER_MODE // uint16_t i; OLED_Set_Pos(0, 128); // for (i = 0; i < Max_Row / 8 * Max_Column; i++) // { // OLED_WR_Byte(OLED_GRAM[0][i], OLED_DATA); // } OLED_CS_L(); OLED_DC_H(); HAL_SPI_Transmit(&hspi1, OLED_GRAM[0], Max_Row / 8 * Max_Column, 10); OLED_DC_H(); OLED_CS_H(); #endif }再次测试,仍能成功点亮,帧率为969。 再次修改OLED_Refresh_Gram函数 extern SPI_HandleTypeDef hspi1; void OLED_Refresh_Gram(void) { #if OLED_BUFFER_MODE // uint16_t i; OLED_Set_Pos(0, 128); // for (i = 0; i < Max_Row / 8 * Max_Column; i++) // { // OLED_WR_Byte(OLED_GRAM[0][i], OLED_DATA); // } OLED_CS_L(); OLED_DC_H(); // HAL_SPI_Transmit(&hspi1, OLED_GRAM[0], Max_Row / 8 * Max_Column, 10); HAL_SPI_Transmit_DMA(&hspi1, OLED_GRAM[0], Max_Row / 8 * Max_Column); while(hspi1.State != HAL_SPI_STATE_READY); OLED_DC_H(); OLED_CS_H(); #endif } 帧率测试帧率的显示: 将SCL设为推挽输出,SDA设为开漏上拉输出 从【51单片机快速入门指南】4.2: SSD1306 OLED屏(0.96寸、1.3寸)的I2C控制详解和【51单片机快速入门指南】4: 软件 I2C获取控制程序。 修改对应引脚,其他部分同SPI的步骤。 |
CopyRight 2018-2019 实验室设备网 版权所有 |