1、前言說明
I2C總線是Philips公司在八十年代初推出的一種串行、半雙工的總線,主要用于近距離、低速的芯片之間的通信。
I2C總線有兩根雙向的信號線,一根數據線SDA用于收發數據,一根時鐘線SCL用于通信雙方時鐘的同步。
I2C總線硬件結構簡單,簡化了PCB布線,降低了系統成本,提高了系統可靠性,因此在各個領域得到了廣泛應用。
1.1 本章內容
本章內容主要介紹如何利用瑞薩RA6M3系列芯片R7FA6M3AH3CFB的硬件i2c功能控制點亮0.96寸i2c接口的OLED顯示屏。
1.2 模塊介紹
1.2.1 瑞薩ra6m3的硬件i2c
硬件資源數量
瑞薩ra6m3系列芯片具有3路硬件i2c通訊接口,另外還有10路的串行通訊接口(SCI),也可擴展為硬件i2c。
芯片的i2c資源數量可參考下表:
模塊硬件特點
通訊格式
I2c總線格式或SMBus格式
可選擇主機模式和從機模式
在傳輸時可自動獲得數據建立時間、保持時間以及總線釋放時間
傳輸速率
支持超快速模式,傳輸速率高達1Mbps
SCL時鐘
在主機模式下,時鐘的占空比可在4 – 96%之間調整
總線時序信號的產生與檢測
自動產生標準的i2c總線時序條件(起始、重復起始、停止)
做從機使用時可自動偵測其它主機發送的起始(或重復起始),停止條件
從機地址
可配置高達3個從機地址
支持7位、10位地址格式,并且可以同時使用這2種模式
支持廣播尋址,設備ID尋址以及SMBus主機地址偵測
應答
數據傳輸時,可自動加載應答位
數據接收時,可自動傳輸應答位
等待功能
在數據接收期間,保持SDL位位低電平的時候,下列等待周期將變得有效:
在第8和第9個時鐘之間的等待
在第9個時鐘和下一數據幀的第1個時鐘之間的等待
SDA輸出延時
在輸出數據的時候,可加入延時功能(包括應答位)
仲裁
多主機仲裁
偵測到起始條件失去仲裁,避免產生2個以上的起始條件
在傳輸一個非應答位期間,如果SDA線上的電平和自己不匹配失去仲裁
從機傳輸時,內部數據和通訊線上的電平不匹配將失去仲裁
超時
內部狀態檢測到超時時,可停止SCL的時鐘輸出
噪聲濾波
數字濾波器支持檢測SCL和SDA線上的信號
濾波器支持可編程的窗口期用來濾除噪聲干擾
中斷源
傳輸錯誤或者事件(仲裁丟失、無應答、超時、起始條件、停止條件)發生將產生中斷
接收數據緩沖區滿(包括從機地址匹配模式)可產生中斷
傳輸數據緩沖區空(包括從機地址匹配模式)可產生中斷
傳輸結束產生中斷
模塊停止省電模式
可配置為停止模式來降低電源的消耗,達到低功耗目的
支持的操作模式
主機傳送
主機接收
從機傳送
從機接收
事件連接(輸出)
支持傳輸錯誤或者總線事件(仲裁丟失、無應答、超時、起始條件或者重復起始條件、停止條件)
支持數據滿、從機地址匹配
支持數據空、從機地址匹配
傳輸結束
喚醒功能
支持使用喚醒事件將cpu從待機模式喚醒(此功能只支持I2C0外設,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軟件,執行菜單【文件】->【新建】->【RT-Thread項目】彈出新建項目對話框,選擇【基于開發板】的項目,其它配置如下圖 所示,項目名稱: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)】,創建I2C Master模塊,關鍵參數如下表
配置如下圖所示
5 生成配置代碼
點擊 【Generate Project Content】生成配置代碼
2.2 編寫測試程序
添加軟件包u8g2組件
雙擊RT-Thread Settings,進入添加軟件包界面,點擊【添加軟件包】,在彈出的對話框中搜索欄輸入u8g2,選中u8g2官方軟件包,添加到工程
配置u8g2組件
點擊u8g2組件,選擇【配置項】,并按如下圖所示配置u8g2(official)軟件包,然后保存配置
使能硬件i2c總線驅動
測試代碼
測試代碼無需編寫,u8g2提供了example,直接使用,然后編譯工程并下載到開發板。
#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的示例已經出現
輸入u8g2,按tab自動補全,然后再按回車執行示例代碼,效果如下圖所示
-
緩沖器
+關注
關注
6文章
1922瀏覽量
45485 -
PCB布線
+關注
關注
20文章
463瀏覽量
42054 -
I2C總線
+關注
關注
8文章
391瀏覽量
60936 -
SDL
+關注
關注
0文章
18瀏覽量
7401 -
OLED顯示屏
+關注
關注
6文章
217瀏覽量
30694 -
RA6M3
+關注
關注
0文章
52瀏覽量
117
發布評論請先 登錄
相關推薦
評論