大明狐 发表于 2025-6-2 15:52:59

用 AiCube 配置硬件 I2C 点亮OLED12864 的过程记录, STC8H8K64U, Ai8051U


记录一下用 AiCube 配置硬件 I2C 点亮OLED12864 的过程
===STC8H8K64U, Ai8051U

一、首先是用AiCube创建硬件I2C工程
1.打开最新版的ISP软件,然后从菜单栏打开AiCube


要使用AiCube创建的工程,首先需要更新Keil的头文件,否则编译过程中会报错。



2. 新建工程


看到窗口下方依旧有添加头文件的提示,AiCube的工程师真是操碎了心{:xiaoku:}


3. 在弹出的【新建】窗口里,首先选择使用的单片机的型号。
下拉菜单列出的是目前支持的四种型号,这里用AI8051U 32bit做演示




4、选择新建工程项目的路径,起一个项目名称。


路径和项目名称尽量不要跟已有的工程项目重名,否则会覆盖掉原有的配置和代码。
点击“确定”之后会进入配置界面

5. 需要的功能都可以在左侧列表里选择,然后根据需要配置


比如时钟配置没选择需要的工作频率
如果需要USB直接下载,USB外设也可以勾选上。



既然要驱动I2C的OLED屏幕,“IIC总线”这一项需要重点配置


工作模式选择【主机模式】
如果单片机速度设置的比较快,【I2C时钟分频】这一项必须设置。
比如在40MHz的时候,测试过几种不同驱动芯片的OLED屏幕,
不分频的时候基本都不能点亮,有的分频填1就可以点亮,有的需要填2才可以。
为了通用,基本至少填2就可以了。
其它I2C设备的话,根据需要选择,也可以在程序中随时修改。
比如存储芯片AT24C256,40MHz下至少需要3才能比较顺利地读写。

最后是在【图形化I/O口配置】窗口选择要用的硬件I2C管脚。
我用的是P24和P23这一组。
选择之后,管脚图上也会有对应的显示。



这样对硬件I2C的配置就完成了
在I2C窗口里也可以看到选中的管脚。
点击创建按钮,项目工程就会自动生成了。




==========================================================

二、加入OLED驱动程序

第一步,先找到一个模拟I2C的OLED驱动程序,
将驱动文件夹复制到工程文件夹里
然后添加驱动文件的路径
并将驱动文件加入到工程列表里



第二步,将OLED里调用单片机的头文件
替换成AiCube生成的config.h头文件
这样一些预设就不用繁琐地到处添了



第三步,是将模拟I2C的代码替换成硬件I2C的。

打开OLED.C文件
可以看到一串模拟I2C的命令



接下来就是将模拟I2C的命令替换成硬件I2C的。替换方式有两种:
一种是根据数据手册里的例程,直接将这些替换成硬件I2C的命令;



另一种就是AiCube生成的调用i2c库文件的方式。
这个方式比较清爽,因为在库文件里,可以找到预设好的所有I2C命令
比起各种相关寄存器的名称,这些命令从字面上更容易理解用途



于是那一串I2C命令函数就可以直接去掉了

只保留向OLED发送指令和数据的函数进行替换就可以了



为了调用方便,在i2c库文件里还有封装好的几个OLED常用的命令函数


这几个函数可以直接使用,也可以作为例程,用来学习I2C的配置过程,
然后写出自己的命令函数,比单纯啃数据手册容易太多了
{:jie:}


第四步,就是将发送指令和数据的函数里的命令函数,用库函数里的命令函数进行替换。




到这里,整个替换过成就完成了。{:hecai:}

在main.c文件里,添加上OLED的头文件,还有OLED初始化函数,
编译之后顺利点亮OLED屏幕{:4_180:}




===============================================================

另外,又试了一下不在AiCube的选型列表里的STC8G1K08A单片机,用的是八脚的芯片。

从数据手册里看到,八脚的管脚定义有些特殊
P32 P33这一组I2C引脚对应的是通常型号的P15 P14这一组的配置



所以在AiCube里,试了下用同为8系列的AI8H8K64U这个型号创建工程,
然后I2C引脚配置成P15 P14这一组



结果同样也可以顺利点亮OLED屏幕!



{:4_189:}{:4_189:}{:4_189:}{:4_189:}{:4_189:}{:4_189:}{:4_189:}


最后是把存储芯片AT24C256和OLED挂在同一条I2C总线上读写的实验
AT24C的读写代码也是用同样的方法替换成了硬件I2C


在STC8H8K64U上用的是 P15/P14 引脚,负责向AT24C256写入图片数据,
在Ai8051U上用的是 P24/P23 引脚,负责读取数据显示出来。
用 AiCube 配置硬件I2C 点亮OLED12864 的过程, STC8H8K64U, Ai8051U
772

==================================================

用 AiCube 配置硬件 I2C 点亮OLED12864 的过程记录的视频版
776


国芯人工智能 发表于 2025-6-2 15:58:00

在使用AiCube配置硬件的I2C点亮OLED系统时,以下是详细的步骤记录:

一、创建AiCube工程
1. 打开ISP软件:首先,打开ISP软件,确保其系统完全运行。
2. 更新Keil头文件:从菜单栏中选择“Keil”→“更新”→“更新头文件”。更新Keil头文件是配置AiCube系统的基础,确保所有外部库和插件能够正常工作。
3. 新建AiCube工程:
在ISP软件的菜单栏中选择“AiCube”→“新建工程”。
在弹出的“新建工程”窗口中,选择“项目”类型,并按照提示填写项目名称和路径。
确定后,进入配置界面,点击“确定”以创建新项目。

二、配置AiCube项目
1. 选择单片机型号:在配置界面中,选择使用Ai8051U的32bit型号。
2. 选择项目路径和名称:在弹出的“项目路径”下,选择一个适合的项目名称,确保其不与已有的项目名称冲突,以避免覆盖原有配置和代码。
3. 点击“确定”:完成项目路径和名称的设置后,点击“确定”以创建新项目。

三、配置I2C外设
1. 选择I2C外设:
在配置界面中,点击“I2C外设”以打开I2C配置界面。
选择“主机模式”以确保I2C驱动能够正常工作。
2. 配置I2C时钟:
在I2C时钟下,输入需要的时钟频率(如40MHz)。
标记为“工作模式:主机模式”。
3. 配置I2C分频:
在I2C分频下,输入需要的时钟分频值(如40MHz)。
标记为“工作模式:主机模式”。
4. 验证配置:
点击“确定”以保存配置。
进入测试模式,验证I2C外设的配置是否正确。

四、配置OLED屏幕外设
1. 选择OLED屏幕型号:在配置界面中,选择需要驱动的OLED屏幕型号。
2. 选择OLED外设:
在配置界面中,点击“OLED外设”以打开OLED外设配置界面。
选择支持的OLED接口,并勾选必要的驱动芯片(如华为OLED驱动)。
3. 配置I2C驱动:
在OLED外设配置中,点击“I2C驱动”以打开I2C驱动配置界面。
在“驱动类型”下选择“主机模式”。
在“I2C时钟”下输入时钟频率(如40MHz)。
在“I2C分频”下输入时钟分频值(如40MHz)。
4. 确认配置:
点击“确定”以保存配置。
进入测试模式,验证I2C驱动是否正常工作。

五、测试并完成配置
1. 测试I2C连接:在测试模式中,连接AiCube到OLED屏幕,并验证I2C通信是否正常。
2. 测试OLED显示:在测试模式中,直接尝试显示文字或简单的图形,以确认OLED屏幕是否正常工作。
3. 完成配置:确认所有外设配置已完成,返回到项目配置界面。

通过以上步骤,你已经成功配置了AiCube系统并驱动了I2C外设的OLED屏幕。如果在任何步骤中遇到问题,建议查阅AiCube的官方文档或联系技术支持团队进行进一步支持。

[本文内容由国芯人工智能辅助生成,仅供参考]

Sky_chen4 发表于 2025-6-2 16:36:09

大佬分享一下OLED的驱动呗{:xieyanxiao:}

Sky_chen4 发表于 2025-6-2 16:37:44

或者分享一下工程行不,感觉我的oled驱动库占用有点大{:daku:}

神农鼎 发表于 2025-6-2 19:11:33



https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=12152&pid=160865

大明狐 发表于 2025-6-2 21:25:56

Sky_chen4 发表于 2025-6-2 16:37
或者分享一下工程行不,感觉我的oled驱动库占用有点大
更新了一个精简过的驱动。
整理在一楼最上面了。
工程文件是Ai8051U 32bit版的,
里面的OLEDiic文件夹是OLED驱动,不受单片机型号限制,移植到STC8H上也一样用。
里面模拟I2C部分只是注释掉了,如果需要模拟I2C可以换回来。


已经尽可能精简了,初始化函数只保留了必须的几条指令,其它都用OLED芯片的默认值。
如果还觉得大,可以把用缓存方式画画的函数还有缓存数组去掉,只保留最简单的显示文字和图片的函数。

laohu_zhou 发表于 2025-6-3 07:28:38

不错不错,好工具啊。

shiran 发表于 2025-6-3 08:19:01

谢谢分享,学习

Sky_chen4 发表于 2025-6-3 09:09:20

大明狐 发表于 2025-6-2 21:25
更新了一个精简过的驱动。
整理在一楼最上面了。
工程文件是Ai8051U 32bit版的,


感谢大佬!更换后edata降低了将近700个字节,edata本身就2kb,降低了1/4,本来都打算改设置了{:guzhang:}

大明狐 发表于 2025-6-3 10:02:26

Sky_chen4 发表于 2025-6-3 09:09
感谢大佬!更换后edata降低了将近700个字节,edata本身就2kb,降低了1/4,本来都打算改设置了 ...
自己定制的驱动库才是最好用的。
这个还可以继续精简,
比如英文字符的字库,里面放了6×8和8×16两种字号。
假如只需要一种字号,把用不到的去掉,显示函数里也对应去掉,就又能省掉好多。
假如只保留要用到的数字和字母,就像中文字模数组那样,就又能省好几百字节。

页: [1] 2
查看完整版本: 用 AiCube 配置硬件 I2C 点亮OLED12864 的过程记录, STC8H8K64U, Ai8051U