大数跨境
0
0

【外设移植】0.96寸IIC单色屏Ai-M61开发板

【外设移植】0.96寸IIC单色屏Ai-M61开发板 安信可科技
2024-02-03
2
导读:更多教程请进入安信可社区查看

本作品由安信可社区用户

沈夜制作


原贴地址:【外设移植】0.96寸IIC单色屏Ai-M61开发板








01

外设介绍

先来介绍下0.96寸OLED显示屏(驱动芯片:SSD1306 / SSD1315)

[color=rgba(0, 0, 0, 0.87)],0.96寸OLED显示屏是一种小尺寸的有机发光二极管(OLED)显示屏,具有许多优点和特点。以下是对0.96寸OLED显示屏的介绍:


  • 尺寸:0.96寸指的是显示屏的对角线尺寸,通常为0.96英寸(约24.4毫米),适合小型设备和紧凑空间。


  • 分辨率:通常具有128x64像素的分辨率,可以显示清晰的图像和文本。


  • 技术:采用OLED技术,每个像素都是自发光的,不需要背光,因此具有更高的对比度和更广的视角。


  • 高亮度:OLED显示屏具有较高的亮度,即使在室外或明亮的环境下也能清晰可见。


  • 低功耗:相比传统的液晶显示屏,OLED显示屏具有较低的功耗,可以延长电池寿命。


  • 快速响应:OLED显示屏具有快速的响应时间,可以实现流畅的图像和动画效果。


  • 色彩鲜艳:OLED显示屏可以呈现鲜艳、饱满的颜色,使图像更加生动逼真。


  • 视角广:OLED显示屏具有广阔的视角,即使从不同的角度观看,图像仍然清晰可见。


  • 薄型轻便:OLED显示屏采用薄型设计,重量轻,适合应用于便携式设备和可穿戴设备。


  • 灵活性:某些OLED显示屏采用柔性基板制造,具有弯曲和弯折的能力,适用于柔性显示应用。


  • 高对比度:OLED显示屏具有高对比度,黑色显示非常深黑,白色显示非常亮白,使图像更加清晰。


  • 高刷新率:OLED显示屏具有高刷新率,可以实现流畅的视频播放和动态图像效果。








02

外设规格参数

工作电压3.3V
工作电流9MA
模块尺寸27.3 x 27.8 MM
像素大小128(H) x 64(V)RGB
驱动芯片SSD1306
通信协议IIC
管脚数量4 Pin(2.54mm间距排针)







03

移植过程

分为资料介绍、移植至工程、引脚选择介绍:


 0.96寸OLED产品规格书.pdf   


0.96寸OLED模块原理图-4针脚I2C接口.pdf 

 驱动芯片SSD1306数据手册.pdf 

keil stm32 项目移植


man.c 事例代码移植

删除 不用的代码。
#include "stm32f10x.h" // Device header
#include "Delay.h"

确少一个 延时,功能一样直接调用博流的库,可以 手动替换成bflb_mtimer_delay_ms ,但是可以根据c语法,[color=rgba(0, 0, 0, 0.87)]在代码中添加以下宏定义:
#define Delay_ms(ms) bflb_mtimer_delay_ms(ms)
则无需修改任何代码。


oled.c i2c 移植
OLED引脚初始化>>OLED_GPIO_Init
I2C发送一个字节>>OLED_I2C_SendByte
iOLED写命令>>OLED_WriteCommand
OLED写数据>>OLED_WriteData


修改方法直接复制 sdk里面的i2c代码即可



经过分析。原先工程用的是软件模拟i2c,本次使用的硬件库的。
I2C发送一个字节>>OLED_I2C_SendByte 这个不用移植,直接删掉。

iOLED写命令>>OLED_WriteCommand
OLED写数据>>OLED_WriteData


这里分析得出就是发送从机地址和命令。里面的函数都用不到,可以直接删除:
OLED_I2C_Start(); I2C起始
OLED_I2C_SendByte(0x78);
OLED_I2C_Stop(); //I2C终止









04

移植验证

这里介绍功能齐全 - 支持字符、数字、汉字、图像及各种绘图图形显示。

PS:代码非原创,只是移植到了Ai-M61,经验证代码无任何报错。


快速使用:
解压 修改 Makefile 文件
BL_SDK_BASE ?= D:\test\boliu\bouffalo_sdk/

为自己的sdk路径即可
#include "OLED.h"
    /*OLED初始化*/
    OLED_Init();
   
    /*在(0, 0)位置显示字符'A',字体大小为8*16点阵*/
    OLED_ShowChar(00'A'OLED_8X16);

    /*调用OLED_Update函数,将OLED显存数组的内容更新到OLED硬件进行显示*/
    OLED_Update();


只需要引用一个,就能方便调用了。

高级设置:
OLED.c
OLED_GPIO_Init 函    数:OLED引脚初始化

只需要替换GPIO_PIN_0、GPIO_PIN_1,就可以修改自定义引脚



OLED_Data.c

注意:添加没有的中文字库,添加图像都在此,demo里面有详细的调用过程

取模教程

一:配置软件,点设置然后按照如下设置。



二:生成字模。



三:安装格式。主要是删掉多余的,复制没有的即可。




效果如下:


 PCtoLCD2002.zip (886.22 KB, 下载次数: 1)
 0.96oled.zip (17.69 KB, 下载次数: 1)








05

常见问题汇总

移植纯c代码需要改的地方并不多,甚至原封不动的复制过来的man文件,仅仅是添加了文件头。一些常见问题汇总给大家作参考:


5.1文件找不到
打开CMakeLists.txt
添加文件包含,格式空格 一个文件名
target_sources(app PRIVATE oled.c OLED_Data.c)


5.2 编译器找不到路径
修改 Makefile 文件
BL_SDK_BASE ?= D:\test\boliu\bouffalo_sdk/
也可以 直接修改为sdk的绝对路径,这样你项目的目录 可以随便放在任何地方。


5.3 数据类型找不到

引入c语言库能解决90%
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <stdarg.h>







  热文回顾


1、【外设移植】使用M61开发板驱动AHT20温湿度传感器

2、【电子DIY作品】 用Ai-M61-32S做一个多功能书桌灯

3、功德+1,用小安派-Eyes-S1做一个电子木鱼



开发资料

https://docs.ai-thinker.com/

官方教程

安信可科技CSDN

安信可官网

https://www.ai-thinker.com






【声明】内容源于网络
0
0
安信可科技
全球领先的联网模组、智能家居等物联网硬件方案提供商。
内容 393
粉丝 0
安信可科技 全球领先的联网模组、智能家居等物联网硬件方案提供商。
总阅读1
粉丝0
内容393