歡迎關注燚智能頭條号↗
燚智能硬件開發網
用簡單的語言,講複雜的技術!
第一章:需求分析一款智能硬件産品,往往需要适配多個廠家的觸摸屏模塊,以及多顆觸摸屏IC。通常Android底層驅動同時隻能支持一款電容觸摸屏模組的驅動。
我們設計了一個兼容方案,使同一硬件版本、同一版本軟件支持2種以上的觸摸屏模塊。包括不同廠家、不同sensor形狀、不同分辨率等。
觸摸屏接口
2.1 總體設計
(1). 觸摸屏IC通信必須是I2C接口。
(2). 觸摸屏共用同一I2C接口的硬件通路。
(3). 觸摸屏擁有相同的供電和控制信号線。供電包含:VDD。控制信号包含:RESET、INT。
(4). 通過區别不同IC的I2C地址加載不同的觸摸屏驅動。
2.2 硬件需求
(1). 原理圖設計需滿足2.1所述總體設計方案。
(2). 硬件原理設計需要滿足I2C信号質量要求。
(4). 選用的IC需要支持進入sleep模式。
2.3 軟件架構
在Linux中,輸入子系統是由輸入子系統設備驅動層、輸入子系統核心層(Input Core)和輸入子系統事件處理層(Event Handler)組成。其中設備驅動層提供對硬件各寄存器的讀寫訪問和将底層硬件對用戶輸入訪問的響應轉換為标準的輸入事件,再通過核心層提交給事件處理層。Linux驅動架構分3個部分,即BUS(總線)、device(設備)、driver(驅動)。Device就是描述的一個外設,driver則是提供操作這個外設的方法,而BUS就是匹配連接device和driver的橋梁。在觸摸屏驅動中,不同的觸摸屏可以生成不同的device并注冊到系統總線,而不同的觸摸屏操作方法也可以注冊到系統總線中,這裡的系統總線就是I2C總線。因此觸摸屏兼容就是要實現将不同的觸摸屏設備(device)和對應的操作方法(driver)注冊到系統的I2C總線中。
觸摸屏兼容分為2種情況:
1、不同IC的觸摸屏
對于此種情況需要IC具有不同的I2C地址便可以注冊為不同的device和driver,不同的IC分别使用對應的設備和驅動。系統開機時,總線會匹配具有相同名字的device和driver,如果匹配成功,則會調用驅動中方法對觸摸屏設備做初始化配置,如供電,參數配置等。如果匹配失敗,則會将分配的資源全部回收,釋放申請的電源,中斷引腳等。因此不論哪一種IC先注冊,沒有檢測到實際I2C地址的觸摸屏都會釋放資源,以便實際存在的觸摸屏可以申請相同的資源。這就實現了使用同一供電和中斷控制引腳可以實現對不同IC的觸摸屏控制。
2、相同IC不同模組廠的觸摸屏。
對于此種情況,根據不同觸摸屏IC的工作方式又分為以下2種情況:
(1)觸摸屏IC固件在出廠前就已經固化在IC内部
對于此類IC,實現兼容很簡單,驅動代碼可以使用同一個,什麼也不需要更改,讓模組廠在觸摸屏出廠時就把固件固化在IC中就可以。
(2)觸摸屏IC需要将配置參數通過驅動燒寫進IC中
對于此類IC,需要觸摸屏IC具有不同ID識别的功能才可以做兼容。即通過IC上的特殊引腳組合成不同的接法,并且IC中有專門的寄存器來表示特殊引腳不同的接法。通過讀取這個寄存器來識别是哪一個模組廠的觸摸屏。然後根據不同的ID來燒寫對應模組廠的觸摸屏配置參數到IC中。
2.4 技術要點
1. 硬件技術要點。(由硬件評估)
2. 不同的觸摸屏 IC如何在内核中描述、注冊、并存。
3. 相同的觸摸屏IC,不同模組廠的觸摸屏如何實現燒寫對應的初始化配置參數。
2.5 工作量評估
1. 硬件設計與物料準備。(硬件評估)
2. 相同sensor在内核中的注冊與共存。
3. HAL層代碼call flow修正。
4. 調試、測試。
第三章:實驗與執行方法為進一步驗證此功能的可行性,降低相關風險,制定并執行本章所述的相關驗證實驗。
3.1 硬件驗證
主要是設計IC的引腳的不同組合實現不同的ID。飛線進行硬件驗證,具體方案如圖
3.2 軟件驗證
為驗證第二章所述的軟件設計思路是否可行,做如下實驗。
1.内核中增加2份不同觸摸屏IC的設備和驅動,分别描述為對應IC的設備名。分别連接上不同的觸摸屏IC,系統運行起來後在設備節點中查看是否有對應IC設備名的輸入設備,并檢查觸摸屏是否正常工作。
2.在其中一個觸摸屏IC驅動中,實現讀取ID寄存器的值來加載不同模組廠的初始化配置參數。分别連接上不同模組廠的同一款IC,檢測觸摸屏是否正常工作。
歡迎關注燚智能頭條号↗
燚智能硬件開發網
智能硬件開發實戰派
相關内容回顧:
I2C和串口如何使用?一文看懂!
Android Things物聯網操作系統,和Android軟件有什麼區别?
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!