環境
硬件環境:STM32MP157C-DK2
軟件:
-
MPU上使用ST官方提供的STM32MP15x OpenSTLinux Starter Package
-
編譯系統:Ubuntu 1604 64bit
-
編譯器:ST提供的SDK
u8g2
u8g2 是面向嵌入式設備的單色圖形庫,什么意思呢,如果你做些嵌入式設備,恰好是用單色顯示設備(可以是單色LCD,OLED,LED點陣屏等),用這個可就很方便了,直接使用u8g2 API來顯示字符或者圖片等,不用知道這些顯示設備的底層操作。
u8g2 github地址是https://github.com/olikraus/u8g2,還有官方文檔, 官方提供的例子 ,不過這些都是MCU的,如果要在Linux上使用呢?已經有人移植了,在github上可以找到:https://github.com/wuhanstudio/u8g2-arm-linux。
在STM32MP157C-DK2上使用u8g2
下載u8g2
首先下載下來:
在目錄u8g2-arm-linux\examples下有兩個例程,一個是SPI驅動SSD1306 OLED,一個是I2C前驅動SSD1306 OLED,正好我手上有I2C接口的SSD1306 OLED模塊。
修改源碼
- 修改makefile
分別把u8g2-arm-linux/examples\u8g2_hw_i2c和u8g2-arm-linux\examples\u8g2_4wire_hw_spi目錄下的makefile中的CC賦值的語句注釋掉:
- 修改例程
然后修改u8g2-arm-linux/examples\u8g2_hw_i2c\main.c文件,原來的程序如下圖:
把顯示的文字修改為:U8g2 on STM32MPU。
編譯
首先使能SDK,然后輸入make就可以編譯。編譯完之后,在bin目錄下可以找到編譯出來的可執行文件,
把bin目錄中的u8g2_hw_i2c拷貝到STM32MPU板子上。
連接硬件並測試程序
該例子使用的I2C是i2c-0:
STM32MP157C-DK2引出的IO如下:
把顯示器連上板子,執行程序,結果如下:
顯示板子的IP地址
嘗試使用下u8g2,試着在OLED上顯示板子的IP地址,
參考:
https://blog.csdn.net/dpjcn1990/article/details/92831760#21_U8g2_26