RA4M2開發(fā)(3)----讀取ISL29035數(shù)據(jù),并在OLED上顯示,串口打印
概述
首先導(dǎo)入必要的庫文件,包括I2C驅(qū)動和OLED驅(qū)動。
在代碼中配置I2C接口,并初始化I2C驅(qū)動。
配置ISL29035傳感器,包括配置傳感器的工作模式和量程。
使用I2C讀取ISL29035傳感器的數(shù)據(jù),并將其存儲在變量中。
初始化OLED驅(qū)動,并在OLED屏幕上顯示讀取的數(shù)據(jù)。 請注意,這僅是一個大致的步驟,具體實現(xiàn)可能因硬件和軟件環(huán)境而異。 對于OLED的配置,可以查看往期的博客。 最近在弄ST和瑞薩的課程,需要樣片的可以加群申請:6_15061293 。
視頻教學(xué)
https://www.bilibili.com/video/BV1wc411g7xU/

csdn課程
csdn課程更加詳細(xì)。?https://edu.csdn.net/course/detail/36131
樣品申請
https://www.wjx.top/vm/wBbmSFp.aspx#
硬件準(zhǔn)備
首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是芯片型號R7FAM2AD3CFP的開發(fā)板:?

樣品申請
https://www.wjx.top/vm/wBbmSFp.aspx#
IIC配置
配置RA4M2的I2C接口,使其作為I2C master進(jìn)行通信。 對于OLED的IIC配置,可以查看往期的博客。 查看ISL29035說明書,最小電路圖如下所示。?

由于需要讀取ISL29035數(shù)據(jù),需要使用IIC接口,這里使用PMOD2上的接口(P410和P411)。?

點擊Stacks->New Stack->Connectivity -> I2C Master(r_sci_i2c)。?

查看說明書可以得知,ISL29035的地址為0x44(1000100)。?

設(shè)置IIC的配置。?

R_SCI_I2C_Open()函數(shù)原型

R_SCI_I2C_Open()函數(shù)為執(zhí)行IIC初始化,開啟配置如下所示。
R_SCI_I2C_Write()函數(shù)原型

R_SCI_I2C_Write()函數(shù)是向IIC設(shè)備中寫入數(shù)據(jù),寫入格式如下所示。
R_SCI_I2C_Read()函數(shù)原型

R_SCI_I2C_Read()函數(shù)是向IIC設(shè)備中讀取數(shù)據(jù),讀取格式如下所示。
sci_i2c_master_callback()回調(diào)函數(shù)
對于數(shù)據(jù)是否發(fā)送完畢,可以查看是否獲取到I2C_MASTER_EVENT_TX_COMPLETE字段。?

ISL29035寫數(shù)據(jù)
對于ISL29035寫數(shù)據(jù),手冊上的操作方式如下所示。 設(shè)備地址+操作地址+數(shù)據(jù)?

初始化程序如下所示。
ISL29035讀數(shù)據(jù)
對于ISL29035讀數(shù)據(jù),手冊上的操作方式如下所示。 設(shè)備地址+操作地址+設(shè)備地址+數(shù)據(jù)讀取?

讀取操作函數(shù)如下所示,先發(fā)送操作地址,在進(jìn)行讀取。
ISL29035初始化
讀取設(shè)備ID,查看是否鏈接上
清除標(biāo)志位
確保芯片處于停止模式
設(shè)置分辨率
設(shè)置模式,如單次模式 讀取設(shè)備ID使用0x0F指令,可以判斷DEVICE ID BITS (B3-B5),之后需要對BROWNOUT STATUS BIT - BOUT (B7)清0。?

初始化的時候需要確保芯片處于停止模式,需要對0x00指令的OPERATION MODE BITS (B5-B7)寫入000。?

設(shè)置分辨率可以通過0x01指令,光照強度有4種模式,1k, 4k, 16k和64k,通過FULL SCALE LUX RANGE (B0-B1)進(jìn)行設(shè)置;ADC分辨率也有4種模式,通過ADC RESOLUTION (B3-B2)進(jìn)行設(shè)置。

設(shè)置采樣模式,可以通過0x00指令,對OPERATION MODE BITS (B5-B7)寫入010。?

ISL29035讀取光照強度
設(shè)置采樣模式,可以通過0x00指令,對OPERATION MODE BITS (B5-B7)寫入010。?

不同的ADC精度需要等待的時間不同,16位的等待時間最久,需要105ms。?

對于讀取數(shù)據(jù),可以使用Data Registers (Addresses: 0x02 and 0x03),高位字節(jié)通過0x03讀取,低位字節(jié)通過0x02讀取,之后進(jìn)行組合,就是完整的數(shù)據(jù)。?

讀取到原始數(shù)據(jù)之后,可以通過下面公式計算光照強度。?

實現(xiàn)效果
正常顯示數(shù)據(jù)。?

同時可以通過串口打印數(shù)據(jù)。?

由于設(shè)置光照采樣為1K,故只能讀取到999。?

重新設(shè)置光照采樣范圍為4k,就可以讀取0-4K的范圍了,具體設(shè)置需要考慮使用環(huán)境。?

主程序
Digital_Light_ISL29035.h