一、軟硬件介紹
(一)I2C(軟件)
I2C是一種廣泛應用于嵌入式系統(tǒng)中的短距離串行通信協(xié)議,支持多主多從設備模式,主機通過時鐘信號SCL和數(shù)據(jù)線SDA與從機進行數(shù)據(jù)交互。在 RT-Thread 操作系統(tǒng)中,我們可以通過菜單配置工具menuconfig快速設置軟件 I2C 的引腳,并借助其內部已實現(xiàn)的驅動程序,方便快捷地完成調用與開發(fā)。
(二)FRDM-MCXA153
FRDM-MCXA153是一款緊湊且可擴展的開發(fā)板,可快速基于MCX A14和A15 MCU開展原型設計。它們提供行業(yè)標準的接口,可輕松訪問MCU的I/O、集成的開放標準串行接口、外部閃存和板載MCU-Link調試器。本文主要基于恩智浦FRDM—MCXA153開發(fā)板 X RT-Thread,測試I2C(軟件) 功能以及SSD1306 OLED。

通過MCUXpresso Developer Experience(MCUXpresso開發(fā)人員體驗)提供其他工具,如面向附加板的擴展板中心和面向軟件示例的應用代碼中心。
(三)SSD1306 OLED
SSD1306是一款單片CMOS OLED/PLED驅動器,具有有機/聚合物發(fā)光控制器二極管點陣圖形顯示系。SSD1306內置對比度控制、顯示RAM和振蕩器,減少了外部組件和功耗。它有256級亮度控制。數(shù)據(jù)/命令是從通用單片機通過硬件可選的6800/8000系列兼容并行接口發(fā)送,I2C接口或串行外圍接口。它適用于許多緊湊型便攜式應用程序,例如手機副顯示屏、MP3播放器、計算器等。

二、工程創(chuàng)建
目前RT-Thread Studio尚未支持恩智浦FRDM-MCXA153開發(fā)板BSP,需要從gitee下載最新的主線,通過scons命令創(chuàng)建工程。下載好主線源碼后,在rt-thread\bsp\nxp\mcx\mcxa\frdm-mcxa153 目錄下打開scons環(huán)境,配置軟件I2C驅動和SSD1306 OLED。
(一)軟件I2C配置
在恩智浦FRDM-MCXA153開發(fā)板板載的mikroBUS socket找到2個pin做軟件I2C接口的SCL/SDA,考慮到3.3V/GND的需要,直接選擇; P1_0和P1_2,具體可以從針腳圖看到,下圖紅框處的針腳。

因為是軟件I2C,直接在menuconfig的設備驅動中選擇“Use GPIO to soft simulate I2C”,設置中直接配置到I2C1 bus上,之前選擇了P1_0和P1_2作為SCL/SDA,按照((port*32)+pin)的計算公式配置好即可,具體如下圖。

其它的軟件I2C的具體實現(xiàn),都在RT-Thread的組件中實現(xiàn)了,不再介紹。
(二)SSD1306 OLED配置
在menuconfig中選擇enable SSD1306,并且設置好I2C bus name,I2C的地址默認是0x3c無需修改,同時打開SSD1306測試demo。

上述內容設置好之后,選擇保存。分別執(zhí)行下述2個命令:
pkgs —update
scons —target=mdk5
待Keil工程生成后,打開工程編譯程序。
Program Size: Code=83324RO-data=25164RW-data=784ZI-data=7876 Finished:0information,2warning and0error messages.".\build\rtthread.axf"-0Error(s),6Warning(s).Build Time Elapsed: 00:00:04
然后下載到恩智浦FRDM-MCXA153開發(fā)板上。

三、軟件I2C測試
固件下載完成后,reset系統(tǒng),可以看到軟件I2C已經配置成功。
sram heap,begin:0x0x200019d4,end:0x0x20005c00\|/-RT- Thread OperatingSystem/|\ 5.2.0build Jul21202415:49:402006-2024CopyrightbyRT-Thread teamI/I2C: I2C bus [i2c1] registeredD/I2C_S: Software simulation i2c1 init done, SCL pin:0x20, SDA pin:0x22I/I2C: I2C bus [i2c0] registeredusingarmclang, version:6180002MCXA153 HelloWorldmsh>
list device后,可以看到I2C1已經起來:
msh>list devicedevice type refcount-------- -------------------- ----------i2c0 I2C Bus 0i2c1 I2C Bus 0pin Pin Device 0uart0 CharacterDevice 2msh>
把ssd1306_TestAll的demo跑起來。

對比硬件I2C,軟件I2C的刷屏速度的確差了很多。
-
軟件
+關注
關注
69文章
5332瀏覽量
91603 -
I2C
+關注
關注
28文章
1556瀏覽量
131264 -
RT-Thread
+關注
關注
32文章
1614瀏覽量
44904
發(fā)布評論請先 登錄
基于RT-Thread的EK-RA2E2 設備驅動移植與應用 | 技術集結
RT-Thread Vector軟件包:嵌入式開發(fā)的動態(tài)數(shù)組容器 | 技術集結
RT-Thread里面驅動層的i2c能否用硬件方式實現(xiàn)呢?
基于RT-Thread測試NK-980 IoT開發(fā)板的I2C外設性能簡析
詳解RT-Thread I2C設備驅動框架及相關函數(shù)
詳細講解RT-Thread I2C設備驅動框架及相關函數(shù)
RT-Thread軟件包定義和使用
基于RT-Thread的智慧路燈案例實驗分享
RT-Thread全球技術大會:RT-Thread開源重塑軟件發(fā)展新生態(tài)
RT-Thread全球技術大會:螢石研發(fā)團隊使用RT-Thread的技術挑戰(zhàn)
RT-Thread全球技術大會:使用RT-Thread開發(fā)大規(guī)模嵌入式軟件帶來的挑戰(zhàn)與好處
基于RT-Thread的I2C(軟件) 實踐 | 技術集結
評論