發布日期:2022-10-09 點擊率:90
前言
之前搞過的默認橫屏大都都是強制性的,靜止了自動旋轉,那是因為本身也不帶重力傳感器。之前的改法過于暴力不太正統,
這次仔細研究了下 android 橫豎屏控制相關的代碼,整理了一套合適的修改方案。
大多情況下豎屏橫用是常見的應用場景,這樣做應該能節省成本,但給系統軟件帶來的麻煩不小。
而在安卓版本的迭代中,谷歌和 MTK 已經將屏幕旋轉這塊做的很完善了, 這里就以 MTK 平臺 android11 最新源碼分析。
1、Uboot Logo(開機第一屏)方向控制
MTK 的 UbootLogo 繪制在 lk 代碼中,算是比較完善的框架了,不管版本怎么迭代,幾乎沒怎么變動。
代碼路徑如下
vendormediatekproprietaryootableootloaderlkplatformmt6765mt_logo.c
看到核心方法 init_fb_screen(),其中根據 MTK_LCM_PHYSICAL_ROTATION 來設置 ubootlogo 旋轉角度,說明 MTK 已經做好了兼容
我們只需找到 MTK_LCM_PHYSICAL_ROTATION 配置為想要的方向角度即可。
經過搜索在 project/$(PROJECT).mk 中找到定義
alpsvendormediatekproprietaryootableootloaderlkprojectk62v1_64_bsp.mk
lk 的編譯規則定義在 alpsvendormediatekproprietaryootableootloaderlkmakefile
2、Kernel Logo(開機第二屏)方向控制
KernelLogo 的繪制在 libshowlogo 庫中,調用 show_kernel_logo()
alpsvendormediatekproprietaryexternalchargerootlogo.cpp
alpsvendormediatekproprietaryexternallibshowlogocharging_animation.cpp
在調用繪制之前進行了 fb_fd 初始化,核心方法為 anim_fb_init(void),其中根據 int rotation = getRotation();
來設置 kernellogo 旋轉角度,找到 getRotation() 實現方法位于
alpsvendormediatekproprietaryexternallibshowlogo.cpp
從中讀取 prop 屬性 primary_display_orientation_values 對應值,繼續尋找在哪里賦值
primary_display_orientation_values定義
位于 alpsdevicemediatekcommondevice.mk
不難發現 primary_display_orientation 值由宏定義 MTK_LCM_PHYSICAL_ROTATION 決定
alpsdevicemediateksamplek62v1_64_bspProjectConfig.mk
3、關機充電 Logo 方向控制
關機充電 Logo 繪制代碼也在 libshowlogo 中
alpsvendormediatekproprietaryexternallibshowlogoshow_animation_common.c
也是根據 int rotation = getRotation(); 來決定旋轉角度,和上面的 kernel logo 一樣由 MTK_LCM_PHYSICAL_ROTATION 決定。
4、開機動畫方向控制
開機動畫播放代碼位置如下
alpsframeworksasecmdsootanimationBootAnimation.cpp
播放繪制核心方法為 BootAnimation::readyToRun(),其中可通過 Transaction t 的 displayProjection
來決定方向。 ui::ROTATION_0 ui::ROTATION_90 ui::ROTATION_180 ui::ROTATION_270
這里添加的是 ui::ROTATION_0 為了解決播放動畫后半段有一半顯示不完整問題。
5、RecoveryUI 方向控制
RecoveryUI 繪制代碼位于,alpsootable
ecoveryminuigraphics.cpp
谷歌已經為我們提供了兼容旋轉顯示
核心方法 gr_init() 中讀取 prop ro.minui.default_rotation 值決定繪制方向
搜索后發現并沒有定義賦值的地方,那我們就自己加一個賦值為橫屏 ROTATION_LEFT
alpsdevicemediateksamplek62v1_64_bspdevice.mk
6、系統 TP 觸控 x y 方向控制
核心控制邏輯如下
alpskernel-4.19driversinput ouchscreenmtk_tpd.c
alpskernel-4.19driversinput ouchscreenGT911gt9xx_driver.c
得到由宏定義 CONFIG_MTK_LCM_PHYSICAL_ROTATION 決定 x y 坐標
alpskernel-4.19archarm64configsk62v1_64_bsp_defconfig
7、開機默認橫屏顯示
修改完上面的步驟后開機已經是橫屏了,具體和 MTK_LCM_PHYSICAL_ROTATION
所決定 ro.surface_flinger.primary_display_orientation 值有關系
核心代碼如下
alpshardwareinterfacesconfigstore1.1defaultsurfaceflinger.mk
alpshardwareinterfacesconfigstore1.1defaultSurfaceFlingerConfigs.cpp
alpsframeworks
ativeservicessurfaceflingerSurfaceFlinger.cpp
alpsframeworks
ativeservicessurfaceflingerSurfaceFlingerProperties.cpp
8、重力傳感器驅動調試
參考這篇
MTK 9.0平臺調試 gsensor
9、默認橫屏兼容重力傳感器自動旋轉
打開系統自動旋轉功能按鈕,屏幕可跟隨當前方向旋轉顯示
關閉系統自動旋轉功能按鈕,強制所有 APP 默認橫屏顯示,不管 portrait 屬性
alpsframeworksaseservicescorejavacomandroidserverwmDisplayRotation.java
frameworks/base/services/core/java/com/android/server/wm/DisplayContent.java
10、參考資料
Android 屏幕顯示方向分析
一種ASG驅動電路、平板傳感器以及電子裝置。所述ASG驅動電路包括:多個第一ASG移位寄存器和多個第二ASG移位寄存器,所述第一ASG移位寄存器和所述第二ASG移位寄存器分別交替級聯;僅所述第一ASG移位寄存器連接對應行的掃描線以為所述掃描線提供柵驅動信號,所述第二ASG移位寄存器為與其級聯的兩個所述第一ASG移位寄存器的柵驅動信號提供時間間隔。本發明專利技術提高了尺寸較小的ASG驅動電路柵驅動信號讀取的準確性。
全部詳細技術資料下載
【技術實現步驟摘要】
本專利技術涉及平板傳感器
,尤其涉及一種ASG(Amorphous Silicon Gate,非晶硅柵極)驅動電路、平板傳感器以及電子裝置。
技術介紹
平板傳感器是一種將入射光按照光強轉換為電信號的裝置,入射光可以是X光、可見光或者紅外光。入射光照射物體后經物體反射或者透射后,會發生吸收、散射以及反射等作用,由于物體不同區域的結構不同,所以經過不同區域的光強不同,最后通過平板傳感器對光強的表達,形成一個與物體表面或者內部結構相應的灰階圖,以便于對物體進行分析。由于平板傳感器可有效地對物體進行無損檢測,所以在醫療、安檢、工業無損探測等領域都得到了廣泛的發展和應用。參考圖1所示,平板傳感器包括多條掃描線11 (Scan Line或者Gate Line)和多條數據線12(Data Line),掃描線11和數據線12按照X軸和Y軸交錯排列形成一個像素陣列,像素陣列包括多個像素單元,每個像素單元包括:一個光電二極管13和一個TFT 14(薄膜晶體管),光電二極管用于將可見光轉換為電荷,TFT 14用于控制像素單元的開和關,每行像素單元的TFT 14的柵極連接至同一條掃描線,每列像素單元的TFT的漏極連接至同一數據線,掃描線由柵極驅動電路15 (Gate Driver Circuit)控制,數據線由讀出芯片16(ReadOut IC)控制。目前平板傳感器的柵極驅動電路普遍采用多晶硅柵極驅動電路,該驅動電路通過FOG(FiIm On Glass,芯片在薄膜上)或者C0G(Chip On Glass,芯片在玻璃上)等方式綁定在平板傳感器,實現平板傳感器與柵極驅動電路的電連接和導通。具體地,當多晶硅柵極驅動電路通過FOG方式綁定在平板傳感器上時,先將多晶石圭柵極驅動電路封裝在一個柔性導電薄膜上,形成一個COF(Chip On Film,芯片在薄膜上的封裝)模塊,再通過熱壓合的工藝方式并以各向異性導電膠(ACF, anisotropicconductive film)作為連接介質將COF模塊綁定到平板傳感器裸露的導電襯墊上;當多晶硅柵極驅動電路通過COG方式綁定在平板傳感器上時,直接將硅晶柵極驅動電路的導電凸塊與玻璃上裸露導電襯底連接起來,也是以各向異性導電膠作為連接介質,此綁定方法避免了器件之間以線或者引腳作為連結,也避免了由此引起的一系列問題,如材料成本、封裝成本以及信號傳輸過程中電阻過大等,因此COG方式較FOG方式的應用更為普遍。參考圖2所示,當多晶硅柵極驅動電路通過COG方式綁定在平板傳感器上時,柵極驅動電路15與柔性電路板23電連接以將信號輸入至該柔性電路板23,平板傳感器的外圍布線24呈扇形分布。由于COG綁定時為了防止綁定機臺壓到像素陣列22區域,所以要求柵極驅動電路15離像素陣列22有一定的距離;而柔性電路板23也是通過壓合工藝綁定到平板傳感器上,所以柔性線路板23距離柵極驅動電路15也需一定距離;柵極驅動電路15和柔性電路板23自身也有一定的尺寸;因此平板傳感器的外圍部分(即從像素陣列外圍到平板傳感器切割線25)總共寬12?15mm。對于尺寸較大的平板傳感器來說,12?15mm的外圍部分對其不會產生影響。但是對于中小尺寸的平板傳感器,如只有幾十條或者幾百條掃描線,12?15mm的外圍部分則會對其產生較大的影響,例如因外圍部分空間太大因而不能滿足機械尺寸的需要以致不能滿足應用。另外,外圍部分較大對于小尺寸的平板傳感器(如:像素陣列22區域寬度只有幾厘米)來說,采用FOG或者COG綁定方式難度較大,不容易對位和壓合,因此增加了生產難度,降低了良率;而且采用多晶硅柵極驅動電路會導致外圍電路太大,從而導致整個平板傳感器太大,不能滿足機械要求。為了減小柵極驅動電路的尺寸,可以考慮采用尺寸較小的ASG驅動電路。參考圖3所示,現有技術中ASG驅動電路包括:初始信號提供單元31,用于為第一個移位寄存器提供開啟控制信號;結束信號提供單元32,用于為最后一個移位寄存器提供關閉控制信號;第一時鐘信號提供單元33,用于提供第一時鐘信號;第二時鐘信號提供單元34,用于提供第二時鐘信號,所述第二時鐘信號和所述第一時鐘信號反向;η個級聯的移位寄存器,第i個移位寄存器Stage i包括:開啟控制端STP1、關閉控制端END1、第一時鐘信號輸入端CKl1、第二時鐘信號輸入端CK2i和輸出端OUTi, i ^ 1,其中:奇數行移位寄存器的第一時鐘信號輸入端均連接第一時鐘信號提供單元33,奇數行移位寄存器的第二時鐘信號輸入端均連接第二時鐘信號提供單元34,偶數行移位寄存器的第二時鐘信號輸入端均連接第一時鐘信號提供單元33,偶數行移位寄存器的第一時鐘信號輸入端均連接第二時鐘信號提供單元34,每個移位寄存器的輸出端分別連接前一個移位寄存器的關閉控制端、后一個移位寄存器的開啟控制端以及對應行的掃描線(即柵極),第一個移位寄存器的開啟控制端STPl連接初始信號提供單元31,最后一個移位寄存器的關閉控制端ENDn連接結束信號提供單元32。結合參考圖4所示,第一時鐘信號提供單元提供第一時鐘信號CKl且第二時鐘信號提供單元提供第二時鐘信號CK2,當初始信號提供單元提供的STP信號傳輸至第一級移位寄存器時,第一級移位寄存器將輸出第一行柵驅動信號Gl,第一行柵驅動信號Gl將打開第一行TFT以把對應的第一行源端信號進行寫入,同時第一行柵驅動信號Gl將觸發下一級移位寄存器打開并進行工作;當第二級移位寄存器開始工作時,則輸出第二行柵驅動信號G2,第二行柵驅動信號G2反饋到上一級移位寄存器并將其關斷,依次類推,直至最后一級移位寄存器由結束信號提供單元提供的END信號進行關斷。此時,一行信號讀取的時間Line Time等于每行柵驅動信號(如:第一行柵驅動信號Gl)的時長。但是,在現有技術的柵極驅動電路中,ASG驅動電路是由非晶硅TFT形成,所以存在一定的延時,即上一行TFT關閉的下降沿和下一行TFT開啟的上升沿可能存在重疊的時間,這樣會造成上一行的TFT還沒有關閉,下一行的TFT已經開啟,由于平板傳感器是讀出信號,所以不允許此現象存在,否則導致信號讀取有誤,因此限制了 ASG驅動電路在平板傳感器中的應用。
技術實現思路
本專利技術解決的問題是提供一種ASG驅動電路、平板傳感器以及電子裝置,在減小平板傳感器的尺寸的前提下,可以提高ASG驅動電路柵驅動信號讀取的準確性。為解決上述問題,本專利技術提供一種ASG驅動電路,包括:多個第一 ASG移位寄存器和多個第二 ASG移位寄存器,所述第一 ASG移位寄存器和所述第二 ASG移位寄存器分別交替級聯;僅所述第一 ASG移位寄存器連接對應行的掃描線以為所述掃描線提供柵驅動信號,所述第二 ASG移位寄存器為與其級聯的兩個所述第一 ASG移位寄存器的柵驅動信號提供時間間隔。當前第1頁1 2 3 4 本文檔來自技高網...
【技術保護點】
一種ASG驅動電路,其特征在于,包括:多個第一ASG移位寄存器和多個第二ASG移位寄存器,所述第一ASG移位寄存器和所述第二ASG移位寄存器分別交替級聯;僅所述第一ASG移位寄存器連接對應行的掃描線以為所述掃描線提供柵驅動信號,所述第二ASG移位寄存器為與其級聯的兩個所述第一ASG移位寄存器的柵驅動信號提供時間間隔。
【技術特征摘要】
【專利技術屬性】
技術研發人員:鄭婭潔,凌嚴,
申請(專利權)人:上海籮箕技術有限公司,
類型:發明
國別省市:上海;31
全部詳細技術資料下載 我是這個專利的主人
觸摸屏作為一種輸入設備具有易于使用、堅固耐用、反應速度快、節省空間等優點,用戶使用時可以直接通過觸摸屏幕來實現操作,無需借助鍵盤或鼠標,實用性很強且應用廣泛。
觸摸屏的主要元件有處理用戶選擇的傳感器單元、感知觸摸并定位的控制器、傳送觸摸信號到操作系統的軟件驅動。這三類元件構成了觸摸屏的工作機制。觸摸屏除了元件之外,還有電容式觸摸屏、電阻式觸摸屏、紅外線觸摸屏、表面聲波觸摸屏和近場成像觸摸屏這幾種技術類型。
電容式觸摸屏表面涂有透明電導層ITO,電壓連接到四角,微小直流電散部在屏表面,形成均勻的電場,操作時趣味性強、支持多點觸控,而且不會誤觸。因為它只有在感應到人體的電流時,才能做出相應的反應。
電阻式觸摸屏是由顯示屏和電阻薄膜屏構成的,電阻薄膜屏分為兩層,一層以玻璃為基層,表面涂有透明的導電層;基層外是同樣有導電層的塑料層。每當按壓或觸摸屏幕時,導電層之間就會相觸從而形成接觸信號,實現操作。
紅外觸摸屏是基于光線的中斷技術,在顯示器周圍設置一個外框,外框的一邊有光源線或者LED,另一邊有光線探測器或光電傳感器,兩邊對應形成交叉的紅外線網絡。每當用物體觸摸顯示屏時,紅外線就會被擋住,由此即可判斷出觸摸點在屏幕的位置。
聲波觸控屏是將傳感器安裝在玻璃屏幕邊緣用來發送超聲波信號。超聲波穿過屏幕反射,由傳感器接受。表面聲波信號,是把反射條紋匯聚成的表面聲波能轉變為電信號;導向聲波技術則是把控制器通過屏幕電纜送來的電信號轉化為聲波能
近場成像觸摸屏是由兩個薄型玻璃層組成,在導電層施加交流信號,屏幕的表面就會產生電場,當用手指或導電筆接觸傳感器時,電場一產生擾動,屏幕就能得到信號。
這幾種觸摸屏技術類型中,電阻式觸摸屏在工作時只能判斷一個控制點,超過一個就無法做出正確判斷,不適用在具有多功能的手機、平板上,僅適用于點擊、拖拽等簡單動作的判斷。紅外觸摸屏的分辨率較低、觸控方式比較受限制,易受環境干擾而且對光照環境因素比較敏感,這些技術上的局限使紅外觸摸屏在市場上受歡迎程度較低。表面聲波屏需要定期維護,屏幕表面一旦沾染上灰塵、油污或是液體時,觸摸屏表面的導波槽就會被阻塞,使波無法正常發射和識別,從而導致觸摸屏無法正常使用。
而電容式觸摸屏的耐用度很高,有防塵、防水、耐磨的特性,而且它的多點觸控功能可以將用戶的觸摸動作分解,完成對復雜動作的判斷,因此是非常理想的可用于手機、平板的觸摸屏幕。
傳感器 HID 類驅動程序
08/16/2021
m
o
請為你的體驗評分
還有其他反饋嗎?
反饋將發送到 Microsoft:按“提交”按鈕,你的反饋將用于改進 Microsoft 產品和服務。 隱私策略。
謝謝。
本文內容
從 Windows 8 開始,Windows操作系統包括一個箱內傳感器 HID 類驅動程序 (SensorsHIDClassDriver.dll) ,該驅動程序支持使用 HID 傳輸進行通信的十一種類型的傳感器。
下面是支持的傳感器列表:
加速計 3D
環境光
環境溫度
氣壓
Compass 3D
設備方向
Gyroscope 3D
濕度
傾斜計 3D
狀態
鄰近幫助
下圖描繪了兩個傳感器應用程序之間來回流動的數據流,這些應用程序通過驅動程序堆棧向下流動,最后到硬件本身。
對自定義傳感器的支持
除了前面列表中介紹的 11 個傳感器之外,類驅動程序還支持自定義類。 此類允許傳感器制造商集成在上一列表中找不到的設備:例如,一氧化碳傳感器。 自定義傳感器以具有唯一屬性的自定義設備向傳感器 API 呈現自身。
體系結構和概述
如果要為兼容的傳感器創建固件,則需要基本了解類驅動程序支持的 I/O 模型。
傳感器將功能報告或輸入報告發送到 HID 類驅動程序。 將發送功能報告以響應來自驅動程序的請求。 此報表包含屬性數據,包括傳感器的區分更改設置、其報告間隔和報告狀態。 輸入報告根據請求發送,或異步發送以響應事件。 此報表包含實際傳感器數據。 例如,對于加速計,報表包含沿 x 軸、y 軸和 z 軸的 G) 。
HID 類驅動程序將功能報告發送到傳感器。 例如,當應用程序請求新的更改敏感度或報告間隔時,驅動程序將這些值打包到功能報告中,并使用此報告將請求發送到傳感器的固件。
下圖演示了 I/O 模型:
示例報表描述符
如果傳感器支持類驅動程序原生的七個類別之一,則其固件將需要支持特定功能報告和輸入報告。 功能報告包括傳感器的當前報告狀態、其狀態、更改敏感度和報告 (以及其他可能的屬性) 。 輸入報告包含傳感器讀數:開關的 True 或 False、加速計的 G-force 值或環境光傳感器的照度值。
加速計功能報告示例
下面的代碼示例顯示了加速計的 HID 功能報告。 請注意此報表的自我描述性。 它包括最小值和最大值,以及各個字段的計數和大小。
示例加速計輸入報告
下面的代碼示例顯示了同一設備的 HID 輸入報告。 同樣,請注意此報告中字段的自我描述性。
舊版文檔
博客
參與
隱私和 cookie
使用條款
商標
? Microsoft 2021
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原