1、前言說明
I2C總線是Philips公司在八十年代初推出的一種串行、半雙工的總線,主要用于近距離、低速的芯片之間的通信。
I2C總線有兩根雙向的信號線,一根數(shù)據(jù)線SDA用于收發(fā)數(shù)據(jù),一根時鐘線SCL用于通信雙方時鐘的同步。
I2C總線硬件結(jié)構(gòu)簡單,簡化了PCB布線,降低了系統(tǒng)成本,提高了系統(tǒng)可靠性,因此在各個領(lǐng)域得到了廣泛應用。
1.1 本章內(nèi)容
本章內(nèi)容主要介紹如何利用瑞薩RA6M3系列芯片R7FA6M3AH3CFB的硬件i2c功能控制點亮0.96寸i2c接口的OLED顯示屏。
1.2 模塊介紹
1.2.1 瑞薩ra6m3的硬件i2c
硬件資源數(shù)量
瑞薩ra6m3系列芯片具有3路硬件i2c通訊接口,另外還有10路的串行通訊接口(SCI),也可擴展為硬件i2c。
芯片的i2c資源數(shù)量可參考下表:
模塊硬件特點
通訊格式
I2c總線格式或SMBus格式
可選擇主機模式和從機模式
在傳輸時可自動獲得數(shù)據(jù)建立時間、保持時間以及總線釋放時間
傳輸速率
支持超快速模式,傳輸速率高達1Mbps
SCL時鐘
在主機模式下,時鐘的占空比可在4 – 96%之間調(diào)整
總線時序信號的產(chǎn)生與檢測
自動產(chǎn)生標準的i2c總線時序條件(起始、重復起始、停止)
做從機使用時可自動偵測其它主機發(fā)送的起始(或重復起始),停止條件
從機地址
可配置高達3個從機地址
支持7位、10位地址格式,并且可以同時使用這2種模式
支持廣播尋址,設(shè)備ID尋址以及SMBus主機地址偵測
應答
數(shù)據(jù)傳輸時,可自動加載應答位
數(shù)據(jù)接收時,可自動傳輸應答位
等待功能
在數(shù)據(jù)接收期間,保持SDL位位低電平的時候,下列等待周期將變得有效:
在第8和第9個時鐘之間的等待
在第9個時鐘和下一數(shù)據(jù)幀的第1個時鐘之間的等待
SDA輸出延時
在輸出數(shù)據(jù)的時候,可加入延時功能(包括應答位)
仲裁
多主機仲裁
偵測到起始條件失去仲裁,避免產(chǎn)生2個以上的起始條件
在傳輸一個非應答位期間,如果SDA線上的電平和自己不匹配失去仲裁
從機傳輸時,內(nèi)部數(shù)據(jù)和通訊線上的電平不匹配將失去仲裁
超時
內(nèi)部狀態(tài)檢測到超時時,可停止SCL的時鐘輸出
噪聲濾波
數(shù)字濾波器支持檢測SCL和SDA線上的信號
濾波器支持可編程的窗口期用來濾除噪聲干擾
中斷源
傳輸錯誤或者事件(仲裁丟失、無應答、超時、起始條件、停止條件)發(fā)生將產(chǎn)生中斷
接收數(shù)據(jù)緩沖區(qū)滿(包括從機地址匹配模式)可產(chǎn)生中斷
傳輸數(shù)據(jù)緩沖區(qū)空(包括從機地址匹配模式)可產(chǎn)生中斷
傳輸結(jié)束產(chǎn)生中斷
模塊停止省電模式
可配置為停止模式來降低電源的消耗,達到低功耗目的
支持的操作模式
主機傳送
主機接收
從機傳送
從機接收
事件連接(輸出)
支持傳輸錯誤或者總線事件(仲裁丟失、無應答、超時、起始條件或者重復起始條件、停止條件)
支持數(shù)據(jù)滿、從機地址匹配
支持數(shù)據(jù)空、從機地址匹配
傳輸結(jié)束
喚醒功能
支持使用喚醒事件將cpu從待機模式喚醒(此功能只支持I2C0外設(shè),I2C1,I2C2不支持)
硬件i2c框圖
1.2.2 0.96寸OLED顯示屏
顯示屏特性
分辨率:128x64
控制芯片:SSD1306
接口類型:I2C
工作電壓:3.3v ~ 5V
顯示顏色:藍色
顯示屏外觀
接口定義
1.3 硬件連接
連接說明:
由于OLED顯示屏比較小,供電電流不大,可以直接用GPIO輸出高電平來供電。
2、步驟說明
2.1 新建工程
新建ra6m3_hmi_board_i2c_hardware工程
打開RT-Thread Studio軟件,執(zhí)行菜單【文件】->【新建】->【RT-Thread項目】彈出新建項目對話框,選擇【基于開發(fā)板】的項目,其它配置如下圖 所示,項目名稱:ra6m3_hmi_board_i2c_hardware,點擊【完成】。
配置FSP路徑并允許FSP軟件
雙擊項目資源管理器里面的【RA Smart Configurator】,在彈出的對話框中點擊【是】,然后選擇瑞薩FSP軟件的安裝路徑:本機安裝在: C:RenesasRAsc_v2021-10_fsp_v3.5.0
配置GPIO
配置P506為GPIO輸出模式,默認高電平
配置P008為GPIO輸出模式,默認低電平
配置 Connectivity->IIC1 功能,Enable,引腳為P206(SDA), P205(SCL)
配置硬件i2c模塊
依次選擇【Stacks】->【New Stack】->【Connectivity】->【I2C Master(r_iic_master)】,創(chuàng)建I2C Master模塊,關(guān)鍵參數(shù)如下表
配置如下圖所示
5 生成配置代碼
點擊 【Generate Project Content】生成配置代碼
2.2 編寫測試程序
添加軟件包u8g2組件
雙擊RT-Thread Settings,進入添加軟件包界面,點擊【添加軟件包】,在彈出的對話框中搜索欄輸入u8g2,選中u8g2官方軟件包,添加到工程
配置u8g2組件
點擊u8g2組件,選擇【配置項】,并按如下圖所示配置u8g2(official)軟件包,然后保存配置
使能硬件i2c總線驅(qū)動
測試代碼
測試代碼無需編寫,u8g2提供了example,直接使用,然后編譯工程并下載到開發(fā)板。
#include
#include
#include
#include
static void u8g2_ssd1306_12864_hw_i2c_example(int argc,char argv[])
{
u8g2_t u8g2;
// Initialization
u8g2_Setup_ssd1306_i2c_128x64_noname_f( &u8g2, U8G2_R0, u8x8_byte_rtthread_hw_i2c, u8x8_gpio_and_delay_rtthread);
u8g2_InitDisplay(&u8g2);
u8g2_SetPowerSave(&u8g2, 0);
/ full buffer example, setup procedure ends in _f */
u8g2_ClearBuffer(&u8g2);
u8g2_SetFont(&u8g2, u8g2_font_ncenB08_tr);
u8g2_DrawStr(&u8g2, 1, 18, "U8g2 on RT-Thread");
u8g2_SendBuffer(&u8g2);
// Draw Graphics
u8g2_SetFont(&u8g2, u8g2_font_unifont_t_symbols);
u8g2_DrawGlyph(&u8g2, 112, 56, 0x2603 );
u8g2_SendBuffer(&u8g2);
}
MSH_CMD_EXPORT(u8g2_ssd1306_12864_hw_i2c_example, i2c ssd1306 sample);
3、代碼驗證
下載程序,然后終端界面顯示,提示符下輸入 tab 并按回車顯示所有命令,可以看到u8g2的示例已經(jīng)出現(xiàn)
輸入u8g2,按tab自動補全,然后再按回車執(zhí)行示例代碼,效果如下圖所示
-
緩沖器
+關(guān)注
關(guān)注
6文章
2027瀏覽量
46350 -
PCB布線
+關(guān)注
關(guān)注
21文章
466瀏覽量
42446 -
I2C總線
+關(guān)注
關(guān)注
8文章
408瀏覽量
61817 -
SDL
+關(guān)注
關(guān)注
0文章
18瀏覽量
7603 -
OLED顯示屏
+關(guān)注
關(guān)注
6文章
218瀏覽量
31208 -
RA6M3
+關(guān)注
關(guān)注
0文章
52瀏覽量
231
發(fā)布評論請先 登錄
RA6M3 HMI Board之SDHI測評實踐步驟

如何利用rt-thread和HMI Board RA6M3開發(fā)一套物聯(lián)網(wǎng)工控機?

RA6M3 HMI Board 之SDHI實踐

RA6M3 HMI Board 之RTC實踐
【線下培訓】上海臨港: RT-Thread × 瑞薩 工業(yè)監(jiān)視器 RA6M3 HMI Board解決方案

瑞薩RA6M3 HMI-Board Video Demo 上手指南

瑞薩 RA6M3 開發(fā)實踐指南-UART實踐
RA6M3 RT-Thread* LVGL HMI Board開發(fā)實踐指南-GPIO實踐

評論