2019|1

155

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【Luckfox幸狐 RV1106 Linux 开发板测评】十、C程序控制I2C驱动OLED [复制链接]

 

本人【Luckfox幸狐 RV1106 Linux 开发板测评】帖子链接:

一、开箱及测试

二、SDK获取与编译镜像

三、GPIO点灯

四、通过PC机共享网络接入Internet和Ubuntu下Python点灯

五、编译Buildroot系统并测试摄像头

六、PWM控制——命令和C方式

七、PWM控制——Python和设备树方式

八、ADC和UART测试

九、Python控制I2C驱动OLED

 

本篇继续Luckfox Pro Max板I2C接口驱动0.96寸OLED(控制芯片SSD1306),以C代码进行控制。本人共测试了四个项目,两个成功(只需少量修改Makefile),两个失败(失败原因不明)。

1、成功案例——ssd1306_for_linux

这是Gitee上找到的案例(https://gitee.com/xianleewu/ssd1306_for_linux),作者在Orange Pi上进行了验证,从其README中分析是基于Armbian系统,本来不报太大希望,没想到一次验证就通过了。

案例使用过程也比较简单,首先是在Ubuntu虚拟机上进行项目clone:

git clone https://gitee.com/xianleewu/ssd1306_for_linux.git

 

然后,就是进入克隆好的项目目录,修改Makefile和“src/example.c”:

 

 

 

图10-1 ssd306_for_linux项目的Makefile和example.c修改

 

上述两处修改Makefile指定使用的编译工具由Luckfox SDK提供,然后源程序的修改指定使用I2C3接口。接着,就是make进行构建,在build目录下得到可执行程序“OrangePI_ssd1306”。

 

 

图10-2 ssd306_for_linux的构建结果

 

最后,将“OrangePI_ssd1306”拷贝到本机Win10,再adb push到开发板,chmod修改执行权限,然后运行验证即可。

 

 

图10-3 ssd306_for_linux运行效果

 

ssd1306_for_linux项目的测试案例是显示系统的内存、CPU使用率、CPU温度和日历——Luckfox板子没有联网进行授时所以本地时间获取不准。

2、成功案例——u8g2-arm-linux

 

 

图10-4 ssd306_for_linux项目的功能函数

 

上图可以看到ssd1306_for_linux项目提供的功能函数较少,只有“画点、画线、画方、写字”等,于是本人又想到使用经典的u8g2库。

Gitee上搜到一个Linux下的u8g2编译成lib的仓库,不过没有实验成果(失败案例之一),不过经仓库的README提示又找到Github上的项目源码仓库(https://github.com/wuhanstudio/u8g2-arm-linux)。

可是本人一贯访问Github的经历都不是很愉快,网速感人,好在已经找到了通过Gitee fork项目的本领,有需要的朋友也可以访问本人fork版本:https://gitee.com/sonicfirr/u8g2-arm-linux 。

项目依然是clone到虚拟机,修改Makefile和源码,然后下载本机推送到开发板执行的过程。本人测试的是项目自带的C案例,硬I2C版本(路径/u8g2-arm-linux/examples/c-examples/u8g2_hw_i2c)。

 

 

 

图10-5 u8g2-arm-linux项目的修改

 

 

图10-6 u8g2-arm-linux项目构建程序位于“bin”目录

 

 

图10-7 u8g2-arm-linux项目测试案例效果

 

3、失败案例——u8g2-arm-linux-lib和微雪RPI项目移植

失败案例之一就是Gitee上先找到u8g2 Lib(https://gitee.com/haywire/u8g2-arm-linux-lib)库,没有花太多功夫调试,只是在编译时报错有关于IO控制的函数没有定义,猜想可能是u8g2-arm-linux原项目中使用了“c-periphery”库作为底层接口驱动,而这个Lib库没有做好c-periphery的打包。当然更有可能就是使用方法不当——这里本人很粗略的将u8g2_hw_i2c.c的代码直接拷贝出来尝试连接这个Lib进行编译。

失败案例之二耗费了在下两天的时间,最终也没有成功,这里简述一下尝试的流程。

因为Luckfox官方提供的OLED案例就是基于微雪电子的1.3寸OLED,驱动芯片SH1107,项目结构如下。个人经过分析,在c/lib/OLED目录中创建了0.96寸OLED的驱动源文件,其中的代码则是尝试移植了微雪提供的0.96寸OLED案例(https://www.waveshare.net/wiki/0.96inch_OLED_(A))。

第一次尝试没有成功,于是转向微雪的0.96寸的案例直接进行移植修改,依然失败——屏幕显示了雪花点。微雪的案例是基于树莓派的,最后本人干脆把树莓派拿出来进行测试,结果只显示了第一个画面“时钟”,后续画面都没有显示出来——分析其案例应该还有四个画面。所以这里判断案例本身有一定问题,也可能是案例中的功能需要获取画面数据的部分在Luckfox上失效了。

微雪的树莓派版案例底层驱动可以基于BCM2835、wiringPi或lgpio三个库来实现,移植到Luckfox则只能改为访问设备文件。目前本人判断I2C3接口访问是成功的,OLED也可以点亮,应该还是GUI功能函数不兼容。考虑到时间耗费较久了,也就放弃继续调试,准备下一步转向SPI驱动LCD的方向。

 

 

图10-8 Luckfox官方的OLED案例项目

 

最新回复

u8g2-arm-linux-lib和微雪RPI项目移植起来确实也比较难,,,   详情 回复 发表于 2024-2-16 22:26
点赞 关注
 
 

回复
举报

6628

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

u8g2-arm-linux-lib和微雪RPI项目移植起来确实也比较难,,,

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表