神农鼎 发表于 2023-6-8 07:08:58

DMA 支持 GUI-OLED12864-U8g2 for STC32G12K128

DMA 支持的 GUI-OLED12864-U8g2
for STC32G12K128, 从这下载 ! SPI / I2C 都支持

http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.93.zip



参考第30个程序包




GUI-OLED12864: U8g2/OLED12864 for STC32G12K128:
支持流行的 OLED-128*64, 已移植到有 DMA 支持的 I2C, 已移植到有DMA 支持的高速SPI上,
后续还会继续加入FreeRTOS的支持 !

OLED-12864, 需要显示缓存 1024字节 = 128 * 8 * 8;
STC32G12K128 的 DMA 理论缓冲区xdata 8M 字节, 实际 8K 字节,可预先开辟 8个完整缓冲区;
STC32G12K128的 CPU紧耦合单时钟访问的 edata 是 4K字节,与 DMA 缓冲区 xdata 无需时序竞争仲裁;
STC32G12K128 的 DMA 支持 并行总线 i8080/M6800, 支持串行总线 SPI/I2C;
SPI 速度 是 SPI的时钟输入源/2, 受限于 I/O口的速度,实际SPI可到24M bps 以上;
I2C 速度 是 CPU的时钟输入源/8, 实际I2C可到4M bps 以下!
在使用 OLED-12864 时,请充分发挥STC32G12K128的DMA对串口/并口屏 OLED-12864 的优化刷新支持







神农鼎 发表于 2023-6-8 07:11:04

本项目将Arduino 中常用的图形库U8g2,移植入STC32 中。

# 使用注意事项

1. 在处理的时候需要注意 不要绘制到屏幕以外的区域,否则可能导致设备跑飞
2. 目前没有适配SPI驱动
3. 使用STClink1D时,在下载完程序需要手动复位单片机(PS:单片机的复位IO 需要在ISP中进行使能才可使用)
4. 本工程仅在STC32G12K128Beat LQFP64 上进行了测试,如有bug请issues me。
5. IO分配:

IIC 模式:

| 引脚名 | 引脚编号 |
| ------ | -------- |
| SCL    | P1.5   |
| SDA    | P1.4   |
| RST    | P2.0   |

SPI模式:

| 引脚名 | 引脚编号 |
| ------ | -------- |
| CS   | P2.2   |
| CLK    | P2.5   |
| MISO   | P2.4   |
| MOSI   | P2.3   |
| RST    | P2.0   |
| DC   | P2.1   |

注: IIC 模式下如果没有RST引脚可不接。

# 程序测试:

在默认的工程中添加了一个测试Demo,演示了文字显示和图像显示信息。

!(Images/graphic_test.gif)

注:程序默认使用内部11.0592MHz晶振。

# 代码使用注意事项

## 1. 字体的切换和使用方法

因Keil 80251 编译器不支持将未使用的代码不编译到Bin文件中,因此不是用的字库文件默认是进行屏蔽处理的。在使用时候请参考(https://github.com/olikraus/u8g2/wiki/fntlist8x8) 介绍对相应字体进行解除屏蔽,相应的不是用的字体也要进行屏蔽操作,以节约ROM占用。操作方法如下:
1. 首先打开`u8g2.h` 文件,将需要使用的字体声明使用`#if`和`#endif`解除屏蔽。
!(Images/font_set1.png)
2. 打开`u8g2_fonts.h`文件,使用上一步的方法对需要使用的字体的定义进行解除屏蔽。
!(Images/font_set2.png)

## 2. 不同型号屏幕的使用

U8g2 的强大之处在于内部集成了诸多的点阵屏驱动,我们可以不用在编写繁琐的屏幕驱动,而专心于应用逻辑的开发。具体的屏幕支持情况可以参考(https://github.com/olikraus/u8g2/wiki/u8g2setupcpp#st7920-128x64)

如要使能一款驱动芯片仅需在`u8g2.h`的631行-1367行中将其注释解除,并且在`u8g2_d_setup.c`中对其定义也解除屏蔽即可。

注:目前我只适配测试IIC驱动后面将会添加SPI低层驱动的支持

## 3. API的使用

相关API的使用可以参考官方介绍:

(https://github.com/olikraus/u8g2/wiki/u8x8reference)

## 4. SPI IIC 驱动的切换

在驱动使用过程中可以通过选择IIC宏和SPI宏的形式切换驱动(同时可以将DMA功能开启)。

!(Images\define_set.png)

!(Images\define2_set.png)

注: SPI和IIC 功能不可同时开启

WHX 发表于 2023-6-8 17:10:14

好东西,正想呢就来了,感谢{:victory:}{:4_196:}

芯征程 发表于 2023-8-8 11:21:59

2023/7/29上午的 STC MCU 大型实战腾讯视频研讨会部分视频回放:
1,80mA大电流, LED数码管硬件自动刷新显示;
   ===省外围硬件电路,内部硬件自动刷新不需软件反复干预
   ===可直接驱动32个8段LED数码管,或16个米字型16段LED数码管
2,触摸按键,有自动配置工具辅助开发;
   ===可以用水冲刷设备的键盘表面了, 5mm厚有机玻璃按键灵敏
3,RTC实时时钟,年/月/日/时/分/秒, 闰年自动转换;
4,低功耗
5,普通I/O口都支持的外部中断
   ===上升沿/下降沿,高电平/低电平,都可以产生中断
6,DataFlash/EEPROM
7,思考题,用内部比较器做外部掉电检测,只在掉电过程中保存数据
   上电后将EEPROM中的数据读到 RAM 中,正常只读/写 RAM
======================================
https://www.stcaimcu.com/data/attachment/forum/202308/08/094741riw696nw96nwqo6e.png
【新提醒】视频回放, 2023/7/29期,触摸按键,RTC, 大电流LED数码管自动刷新显示,大型实战 - 《单片机原理及应用》教学改革及实践研讨会,实战技术交流会,会务通知 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

页: [1]
查看完整版本: DMA 支持 GUI-OLED12864-U8g2 for STC32G12K128