HI3556V200 Linux+Liteos雙系統學習(7)----Liteos端對接RGB888 OLED螢幕
文章目錄
參考文件:
1.螢幕對接使用指南.pdf
HI3556V200這塊板子附帶一款索尼的ECX336 OLED螢幕,螢幕解析度為640X400,RGB888介面。比較感興趣,所以按照文件對接一番,中間爬了不少的坑,特此記錄下。
1 硬體確認
板端與螢幕硬體一般需要四種連線,各執行不同的功能,這個要根據具體螢幕和硬體來確認,如下圖:(來自海思文件)
控制命令傳輸介面(對應圖中 SPI OR I2C)
影像資料傳輸介面(對應圖中 HSYNC VSYNC CLK DATA0~DATAN DE)
背光控制(對應圖中 BACKLIGHT)
硬體復位介面(對應圖中 RESET)
1.1通訊介面(SPI or I2C)確認
螢幕一般是通過SPI或者I2C方式和裝置通訊的,這臺裝置的螢幕是部署在Liteos端的,ECX336這塊螢幕是通過SPI2和裝置通訊的,因此需要確認Liteos端的SPI2是否被開啟了。
在Liteos控制端,輸入ls /dev ,如果有SPI2的欄位說明Liteos端已經開啟了SPI2。如果沒有,則需要配置Liteos的核心開啟SPI2,另外需要注意在Linux端的dts裝置樹中對應disable SPI2,防止衝突。
1.2硬體管腳確認
簡單對比一下硬體管腳是否正確,在Liteos端配置好LCD的管腳複用功能以及SPI功能之後,最好先對管腳進行簡單通訊來確定整個硬體通路是否正常。
比如根據螢幕的Datasheet,對LCD的SPI管腳傳送某個指令檢視是否有回應,或者是否有收到。
在前期對整個硬體部分最好做好驗證工作,不然後面有問題,查一大堆軟體方面,最終卻發現硬體有問題,那就酸爽了…
2 軟體配置
2.1 使能SPI管腳
在Liteos端初始化時候,使能SPI功能,以及配置SPI對應管腳。
大致程式碼如下:
spi_dev_init
static void spi2_pin_mux(void)
{
himm(0x114F0050, 0x5f4);
himm(0x114F0054, 0x5f4);
.......
}
2.2 配置螢幕資料管腳複用
根據硬體原理圖,找到螢幕對應的HSYNC VSYNC CLK DATA0~DATAN DE等管腳,在Liteos端進行管腳複用。
部分程式碼截圖如下:
2.3 配置螢幕背光及Reset管腳複用
根據硬體原理圖,複用對應的管腳。
2.4 螢幕驅動初始化
一般螢幕在上電後會有對應的初始化過程,裝置通過SPI或者I2C向螢幕傳送對應的控制指令,用於向螢幕傳送比如顯示幀率,解析度等配置資訊。
螢幕的datasheet上或者原廠會有對應的配置方式,可直接進行配置。
2.5 配置VO相關
2.5.1 配置時序型別
配置時序型別為user時序,並配置螢幕的輸出是那種型別。
2.5.2 配置User時序
在User時序結構體VO_SYNC_INFO_S 的畫素區域相關的引數需要配置。我們可以根據datasheet上螢幕對應的解析度相關的引數,將其填入《RGB_MIPI螢幕時鐘時序計算器.xlsx》中,如下:
並將其填入結構體中:
2.5.3 其它配置項
VO輸出時鐘,是否反相,分頻比等資訊也要進行配置。
3 圖片顯示
在前面配置了螢幕相關的引數後,可以呼叫HI_MAPI_DISP_SetAttrEx函式進一步設定視訊顯示裝置的影像效果,然後進一步呼叫HI_MAPI_DISP_Start/HI_MAPI_DISP_SetWindowAttr/HI_MAPI_DISP_SetWindowAttrEx/HI_MAPI_DISP_StartWindow來配置屬性,使能VO顯示部分。
然後,我們可以將一張圖片轉換為YUV 格式,然後呼叫HI_MAPI_DISP_SendFrame函式送到VO部分,正常的話,就會在螢幕上顯示出對應的圖片。
相關文章
- LiteOS雲端對接教程03-LiteOS基於MQTT對接EMQ-X服MQQT
- oled螢幕不卡方案
- 【WebRTC 跨端通訊】React + React Native 雙端影片聊天、螢幕共享Web跨端React Native
- GhostTouch:針對智慧觸控式螢幕的非接觸性攻擊
- 國產OLED螢幕被認可,蘋果讓京東方獲得iPhone供應螢幕資格蘋果iPhone
- Flutter學習 ---- 螢幕截圖和高斯模糊Flutter
- Flutter學習 —- 螢幕截圖和高斯模糊Flutter
- 短視訊系統原始碼,限制DialogFragment相對螢幕的最大高度原始碼Fragment
- Win10系統設定接投影儀演示時自動禁用螢幕保護的方法Win10
- LCD、OLED以及Mini/Micro LED(未來螢幕的發展趨勢)
- 如何使用系統音訊錄製Mac螢幕?音訊Mac
- Qt學習筆記-使用QScreen對螢幕進行截圖(可全屏,可部分)QT筆記
- @media 移動端螢幕適配
- 透過終端控制螢幕亮度
- win10遠端桌面多螢幕怎麼設定_win10系統下將多個多個螢幕都用於遠端連線的方法Win10
- windows7視窗跑到螢幕外面Windows
- 手機護眼概論及OLED螢幕降低頻閃原理介紹
- Win10系統如何取消開始螢幕 Win10取消開始螢幕的步驟Win10
- 移動 web 端螢幕適配 – remWebREM
- 多系統對接-簽名校驗案例
- ActivePresenter 螢幕教學錄影
- ABP微服務系列學習-對接前端介面微服務前端
- WebRTC本地分享螢幕,錄製螢幕Web
- windows10系統中禁用螢幕鎖定的方法Windows
- Windows10系統如何修改開始螢幕顏色Windows
- Win10系統下怎麼禁止螢幕旋轉Win10
- 直播系統搭建,判斷螢幕橫豎屏狀態
- 如何通過一個SAPGUI螢幕反查這個螢幕對應的事務碼GUI
- iPhone XS/XS Max/XR螢幕區別對比 哪塊螢幕最適合你?iPhone
- 什麼是醫學影像PACS系統?PACS系統功能有哪些?對接哪些裝置?
- 【工具類】PC端所有的螢幕的尺寸
- 如何遠端投屏實現螢幕共享
- OLED螢幕還未普及,移動VR沒有想象中爆發那麼快VR
- Linux學習--遠端登入Linux系統Linux
- 學習筆記:自適應佈局,多螢幕適配筆記
- 黑猴子的家:window7+CentOS7雙系統CentOS
- Ajax前後端對接---Springmvc後端SpringMVC
- ABP微服務系列學習-對接Apollo配置中心微服務