RA4M2开发(3)----读取ISL29035数据,并在OLED上显示,串口打印
概述
首先导入必要的库文件,包括I2C驱动和OLED驱动。
在代码中配置I2C接口,并初始化I2C驱动。
配置ISL29035传感器,包括配置传感器的工作模式和量程。
使用I2C读取ISL29035传感器的数据,并将其存储在变量中。
初始化OLED驱动,并在OLED屏幕上显示读取的数据。 请注意,这仅是一个大致的步骤,具体实现可能因硬件和软件环境而异。 对于OLED的配置,可以查看往期的博客。 最近在弄ST和瑞萨的课程,需要样片的可以加群申请:6_15061293 。
视频教学
https://www.bilibili.com/video/BV1wc411g7xU/

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

样品申请
https://www.wjx.top/vm/wBbmSFp.aspx#
IIC配置
配置RA4M2的I2C接口,使其作为I2C master进行通信。 对于OLED的IIC配置,可以查看往期的博客。 查看ISL29035说明书,最小电路图如下所示。

由于需要读取ISL29035数据,需要使用IIC接口,这里使用PMOD2上的接口(P410和P411)。

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

查看说明书可以得知,ISL29035的地址为0x44(1000100)。

设置IIC的配置。

R_SCI_I2C_Open()函数原型

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

R_SCI_I2C_Write()函数是向IIC设备中写入数据,写入格式如下所示。
R_SCI_I2C_Read()函数原型

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

ISL29035写数据
对于ISL29035写数据,手册上的操作方式如下所示。 设备地址+操作地址+数据

初始化程序如下所示。
ISL29035读数据
对于ISL29035读数据,手册上的操作方式如下所示。 设备地址+操作地址+设备地址+数据读取

读取操作函数如下所示,先发送操作地址,在进行读取。
ISL29035初始化
读取设备ID,查看是否链接上
清除标志位
确保芯片处于停止模式
设置分辨率
设置模式,如单次模式 读取设备ID使用0x0F指令,可以判断DEVICE ID BITS (B3-B5),之后需要对BROWNOUT STATUS BIT - BOUT (B7)清0。

初始化的时候需要确保芯片处于停止模式,需要对0x00指令的OPERATION MODE BITS (B5-B7)写入000。

设置分辨率可以通过0x01指令,光照强度有4种模式,1k, 4k, 16k和64k,通过FULL SCALE LUX RANGE (B0-B1)进行设置;ADC分辨率也有4种模式,通过ADC RESOLUTION (B3-B2)进行设置。

设置采样模式,可以通过0x00指令,对OPERATION MODE BITS (B5-B7)写入010。

ISL29035读取光照强度
设置采样模式,可以通过0x00指令,对OPERATION MODE BITS (B5-B7)写入010。

不同的ADC精度需要等待的时间不同,16位的等待时间最久,需要105ms。

对于读取数据,可以使用Data Registers (Addresses: 0x02 and 0x03),高位字节通过0x03读取,低位字节通过0x02读取,之后进行组合,就是完整的数据。

读取到原始数据之后,可以通过下面公式计算光照强度。

实现效果
正常显示数据。

同时可以通过串口打印数据。

由于设置光照采样为1K,故只能读取到999。

重新设置光照采样范围为4k,就可以读取0-4K的范围了,具体设置需要考虑使用环境。

主程序
Digital_Light_ISL29035.h