CH585 实现的屏幕直驱

Flash_SPI原理及操作手册

原理:

image

 

MCUspi flashOLED两个外设通信,两个外设共用data线及SCLK线,通过两个片选信号实现分时访问,实现指令和数据的发送,使得oled显示屏通过DMA方式读取并显示spi flash中内容

硬件:

 

OLED

FLASH

MCU

OLED片选

CS

 

PB12

数据/命令选择

DC

 

PB18

复位

RES

 

PB23

数据

D1

SO

 

时钟

D0

SCLK

PA13

flash数据输入

 

SI

PA14

Flash片选

 

CS

PA12

 

软件:

主要参数设置:

系统主频

78MHz

SPI时钟频率

(78/8)MHz

oled时钟分频

5

oled振荡器频率

1000

oled复用率

64

oled显示偏移

0

oled 电荷泵

使能

oled 寻址方式

页寻址

oled SEG重映射方式

正常

oled COM扫描方式

上下反置

oled 对比度

239

 

Main:

OLED_Init() :

OLED_SPI初始化

l OLED初始化:

关闭显示

设置时钟频率、偏移、内存寻址方式等

开启显示

OLED_FILL(x1, x2, y1, y2, s) : 控制OLED(x1,y1)(x2,y2)对角线的长方形上的像素亮灭

OLED_DrawPoint(x,y,s) : 限制屏幕像素小于128*64三个临时变量pos,page,temp,将屏幕所有行分为8page,每个page包含(所有行/8=8)7-y实现page的反转,pos为像素点在page内的偏移,temp实现对应位置1,将oled数据缓存至OLED_GRAM二维数组中置1或置0,实现点亮或熄灭像素点

W25Q_Init() : flash初始化

W25Q_EraseAll():flash内容全部擦除

OLED_ShowString():将字符串单个字符取出并利用OLED_ShowChar()函数显示

l 此函数会调用OLED_DrawPoint(x,y,s)来更新OLED_GRAM内容

W25Q_MemWrite(addr, len, buf):OLED_GRAM数据存入flash

addr:起始页地址,必须地址对齐,为256整数倍

len:要写入的数据的字节数

buf:要写入的数据所在的缓冲区地址

返回值:此次写入占用页的数量

该函数的使用需保证写入的flash已擦除

Main_Circulation() : 利用DMA方式实现从falsh中读取缓存数据显示到oled

W25Q_DMAMemRead(addr, len, buf):首先等待写操作完成(wait 20ms; 拉低片选,开始通信,发送读命令,发送24位地址,MOSI失能,片选拉低,启动DMA接受buf数据,拉高片选,释放flash失能MOSI

 

 

posted @ 2026-03-18 13:25  debugdabiaoge  阅读(5)  评论(0)    收藏  举报