Ai8051U驱动0.96寸单色OLED12864实验程序,SPI-DMA 刷整屏523us,超高帧频
Ai8051U驱动0.96寸单色OLED12864实验程序
===SPI-DMA 刷 整屏 523uS,超高帧频
本例程基于Ai8051U为主控芯片的实验箱V1.1版本进行编写测试。
使用Keil C251编译器,Memory Model推荐设置XSmall模式,
默认定义变量在edata,单时钟存取访问速度快。
edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量
加xdata关键字定义到xdata空间。
单色OLED12864显示屏驱动程序,驱动IC为SSD1306,SPI接口,
通过SPI DMA将1024字节的图片数据送到 OLED12864,
传送时不占用CPU时间。
显示图形,汉字,英文,数字.
其中图形显示发送命令和图片数据使用SPI DMA操作,传输数据时不占用CPU时间。
做GUI最方便了,可以先操作定义于xdata的1024字节缓存,然后触发SPI DMA即可,
最快523us即可自动刷完。
本例运行于40MHz, SPI速度为主频4分频(10MHz),每次SPI DMA传输总时间943us,
SPI速度为主频2分频(20MHz),每次SPI DMA传输总时间523us。
将要显示的内容放在1024字节的显存中,启动DMA传输即可。
下载时, 选择时钟 40MHz (用户可自行修改频率后重新编译即可).
程序源码:
延伸阅读:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=10412&extra=page%3D1
开发板啥时候上市呢{:4_174:}{:4_174:}{:4_174:}{:4_174:} 开发板啥时候上市呢 本帖最后由 业余菜狗 于 2024-9-18 10:50 编辑
按照demo里面代码接线,烧录,点亮啦 业余菜狗 发表于 2024-9-18 10:49
按照demo里面代码接线,烧录,点亮啦
那就是用过 DMA-SPI,DMA 掌握了 整整1.8寸TFT 学习下。。。。。。。。。。。。。。。。。。。。。。 更改了SPI0就点不亮了。可否告知还有哪些地方需要更改?
这是我的管脚:
sbit P_OLED_CLK = P1^7; //D0 SPI or II2 的时钟脚
sbit P_OLED_DIN = P1^5; //D1 SPI or II2 的数据脚
sbit P_OLED_RST = P5^3; //RES 复位脚, 低电平复位
sbit P_OLED_DC = P5^2; //DC 数据或命令脚
sbit P_OLED_CS = P1^4; //CS 片选脚
其它更改的地方:
void Initialize_OLED(void) //initialize OLED
{
SPI_Config(0, 0);
//HSSPI_CFG2 = 0x40;//交换MOSI MISO, P3.3是MOSI
P1n_standard(Pin4); // SPI引脚设置为准双向口, SPI和控制信号
PullUpEnable(P1PU,Pin4); // 允许端口内部上拉电阻 PxPU, 要设置的端口对应位为1
P5n_standard(Pin2+Pin3);// SPI引脚设置为准双向口, SPI和控制信号
PullUpEnable(P5PU,Pin2+Pin3); // 允许端口内部上拉电阻 PxPU, 要设置的端口对应位为1
除了这些还需要哪些更改吗?不知道哪儿不对,在线请教哦。 mark,回去学习下