RA4M2开发(2)----基于IIC驱动OLED
概述
在e2studio中创建新的工程并导入必要的文件,包括I2C驱动代码和SSD1306 OLED显示驱动代码。
配置RA4M2的I2C接口,使其作为I2C master进行通信。
初始化SSD1306 OLED显示驱动代码,并配置显示屏的物理地址和分辨率。
通过I2C驱动代码将数据写入SSD1306 OLED显示屏。
在e2studio中运行代码并检查显示屏是否正常显示数据。
注意:具体的代码细节可能因项目而异,请确保遵循厂商的数据手册和应用程序示例。
最近在弄ST和瑞萨的课程,需要样片的可以加群申请:6_15061293 。
视频教学
https://www.bilibili.com/video/BV13o4y1N7BQ/

csdn课程
csdn课程更加详细。
https://edu.csdn.net/course/detail/36131
样品申请
https://www.wjx.top/vm/wBbmSFp.aspx#
硬件准备
首先需要准备一个开发板,这里我准备的是芯片型号R7FA4M2AD3CFP的开发板:

新建工程

工程模板

保存工程路径

芯片配置
本文中使用R7FA4M2AD3CFP来进行演示。

工程模板选择

时钟设置
开发板上的外部高速晶振为12M.

需要修改XTAL为12M。

IIC属性配置
查看手册,可以得知OLED的IIC地址为“b0111100” or “b0111101”,即0x3c或者0x3d。

在OLED的模块中,丝印上面写的地址是0x78(b0111 1000)或者0x7a(b0111 1010),是因为加了一位RW位,因为一般只要发送数据让屏幕进行显示。

IIC配置
配置RA4M2的I2C接口,使其作为I2C master进行通信。
查看开发板原理图,对应的IIC为P408和P409。

点击Stacks->New Stack->Connectivity -> I2C Master(r_sci_i2c)。

设置IIC的配置,需要注意从机的地址,在stm32等程序中写的是0x78,但是这里的地址位数是7位,故需要右移一位,变成0x3c。

R_SCI_I2C_Open()函数原型

R_SCI_I2C_Open()函数为执行IIC初始化,开启配置如下所示。
R_SCI_I2C_Write()函数原型

R_SCI_I2C_Write()函数是向IIC设备中写入数据,写入格式如下所示。
sci_i2c_master_callback()回调函数
对于数据是否发送完毕,可以查看是否获取到I2C_MASTER_EVENT_TX_COMPLETE字段。

控制与发送数据
对于发送数据,可以使用R_SCI_I2C_Write()函数,对于是否发送完毕,可以判断I2C_MASTER_EVENT_TX_COMPLETE != i2c_event,并且引入超时机制。
向0x3c设备写命令0x00的IIC_Command指令。
IIC写数据
向0x3c设备写数据0x40的IIC_Data指令。
驱动代码
若需要让OLED显示字符或者图片,需要添加驱动文件,添加方式如下。

主要需要添加如下四个文件。
oled.c:该文件包含控制OLED屏幕并与之通信的主要代码。具有初始化屏幕、绘制图形和文本以及更新显示的函数。
oled.h:这个头文件可以声明函数原型和任何在oled.c文件中使用的常量或变量。
bmp.h:该文件包含在OLED屏幕上呈现BMP图像文件的代码。
oledfont.h:这个文件包含在OLED屏幕上渲染自定义字体的代码,或者可能声明一个用于显示文本的字体表。
这四个文件附录在最后。
字符取模
由于单片机的flash比较吃紧,所以要显示汉字需要先进行取模。首先需要设置为字符模式。

取模软件设置。

设置完之后就可以取自己想要汉字的编码,输入完毕点击生成字模即可。

在oledfont.h中放入字库。
字体大小只有2个。
在hal_entry.c中添加显示
显示结果如下所示。

图片取模
设置为图形模式。

格式设置。

选择需要打开的文件。

打开的文件必须为bmp文件。

选择生成字模。

图片数据放在bmp.h中。

显示图片
主程序
oled.c
oled.h
oledfont.h
bmp.h