<tr id="tp1vn"><td id="tp1vn"><dl id="tp1vn"></dl></td></tr>
  1. <p id="tp1vn"></p>
  2. <sub id="tp1vn"><p id="tp1vn"></p></sub>
    <u id="tp1vn"><rp id="tp1vn"></rp></u>
    <meter id="tp1vn"></meter>
      <wbr id="tp1vn"><sup id="tp1vn"></sup></wbr>
      日韩第一页浮力,欧美a在线,中文字幕无码乱码人妻系列蜜桃 ,国产成人精品三级麻豆,国产男女爽爽爽免费视频,中文字幕国产精品av,两个人日本www免费版,国产v精品成人免费视频71pao
      網易首頁 > 網易號 > 正文 申請入駐

      手把手教你用位圖映射方式優化灰度液晶控制器驅動

      0
      分享至


      單色液晶控制器通常的寫顯示RAM方式是一次寫8個像素,容易實現MCU主存到控制器的位圖映射。但是支持灰度的液晶控制器不一定有這樣的操作方式,于是只用黑白二色的顯示時,也不得不每個像素都要寫灰階編碼到控制器。但是在MCU主存中每個像素用8-bit甚至16-bit來表示,開銷就大多了,很多時候是不必要的。如果用二值的位圖存放顯示內容,在顯示驅動軟件中轉換,就可能實現和單色液晶在圖形庫上的兼容性。


      例如ST7529液晶控制器的顯存數據是5-bit灰度,采用并行接口(8080模式)驅動時,有16-bit表示3個像素的辦法和3個8-bit表示3個像素的辦法。這個控制器是給CSTN液晶設計的,所以總是要RGB 3個像素一起寫,作為FSTN的驅動顯得有些別扭——列方向的坐標只能以3像素為單位。如果能忍受這一點,用8-bit數據模式,每次寫顯存操作就是更新一個像素,按列優先模式能實現逐條掃描線的數據寫入。


      現在考慮類似ST7529這種控制器的位圖映射軟件驅動。在MCU的SRAM中開辟一塊連續空間作為顯示區域內容的位圖存儲(只顯示兩種顏色,每個像素1 bit),向控制器寫像素數據時每次根據位圖中的一個bit,決定寫控制器的數據是兩種顏色代碼中哪一個。如果控制器是用MCU的內存控制器(如STM32的FMC)連接的,寫操作就對應到一條STR指令;如果不能用FMC,就要用一組GPIO輸出并行數據,另一單獨GPIO產生寫脈沖。

      基本的顯示代碼:


      在寫每個像素數據的時候,要進行位運算測試內存中數據的某位是1還是0. 按照低地址數據在前,每個字中LSB在前的順序訪問整個位圖。取數據的時候一次取32 bit的效率要高于8 bit. 內層循環就是逐位處理。在Cortex-m4上,以上代碼的實現效率約為12.2 時鐘周期每像素。

      這樣的代碼足夠簡潔了。用位運算是因為不能直接尋址SRAM的某一位…… 但是真的不能嗎?Cortex-m3/m4有bit-banding的功能,雖然我以前沒覺得有什么用,SRAM是處于bit-band區域中的。也就是,在SRAM中存儲了位圖,就有某一段地址是每個32-bit映射到位圖中一個bit的。按連續地址訪問就可以遍歷位圖中每個像素。于是顯示代碼就只需要一個循環了:


      針對ST7529,如果輸出是全黑和全白兩種顏色,數據接口上有效位是全0或者全1,還可以把條件判斷也省去,修改成這樣:


      代碼中直接輸出數據 -p[n] , 因為p[n]為1則寫數據就成了 0xFF,是滿足需要的。這樣又能少用指令了。實際測試的執行時間減少到 8~9 時鐘周期每像素,有一個浮動可能是CPU流水線的關系。看一下編譯的結果:


      標出的部分就是循環主體,一共7條指令,顯得沒有任何多余操作,實際執行時間變化可能是總線的緣故。

      到這里,好象已經優化到頭了,不繞彎。

      回頭看,從原理上呢,根據每個像素判斷一下要寫什么數據是沒錯的,但是如果寫的數據和上次一樣其實可以不用更新接口上的并行數據,所以可以少一步操作?然而要增加這個條件判斷其實是又繞彎了,因為測試、保存前次結果和條件分支會消耗更多的周期。實際測試也是平均執行時間到了 10.4 時鐘周期每像素。 程序如下:


      雖然上面這個嘗試改進失敗,減少不必要的操作的思路是有價值的。實際的顯示驅動就是寫連續一串(個數不確定)的前景色像素,再寫連續一串背景色像素,交替進行的。假如SRAM存儲的不是位圖,而是按順序排列的兩種顏色各自連續的像素個數的序列,則顯示代碼有可能執行更快。

      但是現在SRAM存儲的是位圖,只能在此前提下討論。那么,從位圖掃描的角度,統計連續的1個的個數,再統計后面連續的0的個數,再統計后面連續1的個數……如此下去也可以,只不過效率是個問題。不妨對比以下:


      這段程序將"1"像素和"0"像素分組輸出,包含了測試統計和連續寫脈沖的過程,屬于是繞了彎路的做法,最后的執行時間大約是 15.5 時鐘周期每像素. 比最基本的方法還要慢,也是可想而知的。

      如果不用bit-banding呢,像最基本的方法那樣每次先取一個字,那么程序還會可預期地多耗費點時間:


      上面這段程序實際測試大約平均 20.4 時鐘周期每像素, 是明顯慢多了。

      但之所以要這么改寫,是我想嘗試一下能否快速地找出連續的1或0的個數——Cortex-m3/m4有CLZ (Count Leading Zeros)指令。在一個32-bit字之內,用這條指令直接得到從最高位開始往下有多少個連續的0. 它能省去一個循環的位測試。

      還是要嘗試的,下面的代碼看起來過于復雜了。可能還有可優化的地方。


      調試查錯過后,上面這段代碼在我用的測試位圖(文本字符為主)上達到了平均約 8 時鐘周期每像素的效率,追上了前面用bit-band的最快的代碼。不枉這份努力啊。這種方式,執行時間與顯示內容是關聯的,一般圖形界面的話像素顏色連續出現的時候多,所以應該是適用的。

      到了這個地步,覺得還有更快的可能嗎?其實使用CLZ指令得以提升效率的原因是減少了循環次數,上面這個程序仍然有循環:除了不可避免的從SRAM中取數據之外,連續產生多少次寫脈沖是用循環來實現。而后者還有優化的可能:

      1. 不用GPIO翻轉的方式,用硬件自動產生N個脈沖。STM32的TIM1/TIM8等定時器的PWM能做到,或者用一個定時器作為另一個輸出PWM的定時器的門控。我暫時還沒有實驗,好象用的板子GPIO連接缺少條件。

      2. 如果用了FMC接口的話可以用借用這個思路,用DMA內存到內存的方式快速寫。

      3. 循環展開,這要費一些代碼空間了。在上面的程序中,連續的寫脈沖一般不會太長。比如說,在32個以內就完全展開循環:


      用這個 wr_pulses() 函數代替前一段代碼中的產生WR脈沖的循環,實現部分的循環展開,之后…… 執行速度提升到了 6 時鐘周期每像素的水平。

      當然,要求刷屏刷得快簡單地把時鐘頻率提上去就是了,是否要糾結這種優化是MCU玩家自己決定,本文只是假期時候的一點研究分享。關鍵點:一是bit-band的使用,二是CLZ指令的使用。這兩個特性都得要m3/m4起才有,m0是沒有的(現在國產m4也很便宜了嘛)。

      歡迎將我們設為“星標”,這樣才能第一時間收到推送消息。

      歡迎關注EEWorld旗下訂閱號:“汽車開發圈”

      掃碼添加小助手回復“進群”

      和電子工程師們面對面交流經驗

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      從領先9分到加時憾負!廣東新人絕殺,北汽輸在哪?

      從領先9分到加時憾負!廣東新人絕殺,北汽輸在哪?

      一點點想法
      2026-05-10 16:44:10
      前巴薩教練:不希望穆帥回皇馬,否則兩隊可能重演不愉快往事

      前巴薩教練:不希望穆帥回皇馬,否則兩隊可能重演不愉快往事

      懂球帝
      2026-05-10 17:07:25
      悲哀!舉報自己吃空餉的柳某逼進死胡同,網友:成“三無”人員了

      悲哀!舉報自己吃空餉的柳某逼進死胡同,網友:成“三無”人員了

      火山詩話
      2026-05-09 19:07:52
      停火第一天,烏克蘭就遭到攻擊;俄計劃發動大規模海上進攻

      停火第一天,烏克蘭就遭到攻擊;俄計劃發動大規模海上進攻

      近距離
      2026-05-10 07:10:25
      曬太陽被關注!醫生發現:曬得越久,壽命越長?告訴你答案

      曬太陽被關注!醫生發現:曬得越久,壽命越長?告訴你答案

      橘子約定
      2026-05-09 20:46:06
      “中國發出警告,引起多國共鳴”

      “中國發出警告,引起多國共鳴”

      參考消息
      2026-05-10 14:51:15
      醫生勸告:一旦吃上降壓藥,這6種食物必須戒掉,再吃有中風風險

      醫生勸告:一旦吃上降壓藥,這6種食物必須戒掉,再吃有中風風險

      墜入二次元的海洋
      2026-05-10 15:02:36
      果不其然,特朗普訪華再生變故?中國提的要求,美國竟然拒絕了

      果不其然,特朗普訪華再生變故?中國提的要求,美國竟然拒絕了

      福建睿平
      2026-05-10 12:28:31
      伊朗深夜清理門戶,兩名內鬼被絞,身份曝光后中國也驚出一身冷汗

      伊朗深夜清理門戶,兩名內鬼被絞,身份曝光后中國也驚出一身冷汗

      達文西看世界
      2026-05-09 14:03:46
      存儲芯片核心概念名單

      存儲芯片核心概念名單

      風風順
      2026-05-10 01:00:05
      5月10日金價拐點已現!明后兩天大變盤,散戶千萬別踩坑

      5月10日金價拐點已現!明后兩天大變盤,散戶千萬別踩坑

      戶外釣魚哥阿旱
      2026-05-10 16:34:34
      三年虧光183億!周鴻祎的造車夢,為何成了一地雞毛?

      三年虧光183億!周鴻祎的造車夢,為何成了一地雞毛?

      芳華青年
      2026-05-08 10:53:34
      一定要多存錢,大量存錢,特別是2026-2028年。

      一定要多存錢,大量存錢,特別是2026-2028年。

      老陸不老
      2026-05-10 15:37:02
      皇馬中場楚阿梅尼打破沉默,回應更衣室沖突傳聞

      皇馬中場楚阿梅尼打破沉默,回應更衣室沖突傳聞

      熱血體育社
      2026-05-09 14:31:52
      退休數學老教師:如今高中數學,真不是多數孩子能學明白的!

      退休數學老教師:如今高中數學,真不是多數孩子能學明白的!

      金哥說新能源車
      2026-05-10 05:51:23
      大師賽之王即將誕生!辛納29連勝追平費德勒,沖擊史無前例的紀錄

      大師賽之王即將誕生!辛納29連勝追平費德勒,沖擊史無前例的紀錄

      體育妞世界
      2026-05-10 09:25:48
      赫內斯談克羅斯:多要一歐元,那就得走

      赫內斯談克羅斯:多要一歐元,那就得走

      懂球帝
      2026-05-10 17:07:24
      小寶與王某雷,誰探訪花的數量更多?

      小寶與王某雷,誰探訪花的數量更多?

      挪威森林
      2026-01-31 12:15:26
      瀏陽煙花廠爆炸事故親歷者:“跑了兩秒鐘,后面就爆炸了”

      瀏陽煙花廠爆炸事故親歷者:“跑了兩秒鐘,后面就爆炸了”

      新京報
      2026-05-10 11:43:36
      星鉉:漢坦病毒最新進展-多國擴散,全球各國如臨大敵

      星鉉:漢坦病毒最新進展-多國擴散,全球各國如臨大敵

      星鉉
      2026-05-09 11:42:41
      2026-05-10 17:52:49
      EEWorld電子工程世界 incentive-icons
      EEWorld電子工程世界
      即時參與討論電子工程世界最火話題,搶先知曉電子工程業界資訊。
      288文章數 22關注度
      往期回顧 全部

      科技要聞

      DeepSeek融資,改寫所有人的估值

      頭條要聞

      縣交警隊長被舉報工作日KTV飲酒 當地:其事先已請假

      頭條要聞

      縣交警隊長被舉報工作日KTV飲酒 當地:其事先已請假

      體育要聞

      那個曾讓詹姆斯抱頭的兄弟,40歲從大學畢業了

      娛樂要聞

      大S女兒玥兒開通賬號,用煙花緬懷母親

      財經要聞

      白酒大逃殺

      汽車要聞

      軸距加長/智駕拉滿 阿維塔07L定位大五座SUV

      態度原創

      教育
      家居
      旅游
      本地
      公開課

      教育要聞

      少年說|媽媽,今天我有些話要對你說

      家居要聞

      菁英人居 全能豪宅

      旅游要聞

      初夏泰山 青綠漫山野 古建映海棠

      本地新聞

      用蘇繡的方式,打開江西婺源

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 亚洲人成小说网站色在线| 成人精品在线观看| 无码亚欧激情视频在线观看| 无码日韩精品一区二区三区免费 | 99re6在线观看国产精品| 国产成人亚洲精品日韩激情| jizz日本版| 亚洲狼人伊人免费视频| 国语自产免费精品视频在| 亚洲中文字幕va毛片在线| 亚洲中文字幕久在线| 久久婷婷国产五月综合色| 毛片亚洲AV无码精品国产午夜| 手机看片福利日韩国产| av不卡中文| 日韩人妻无码一区二区三区综合部| 女人乱人伦国产在线观看| 日韩人妻中文无码一区二区| 蜜桃AV在线| 亚洲成人日韩| 97精品视频69v精品视频| 伊人久久一区二区三区无码| 88XV日韩| CaoPorn国产一区二区| 男女无遮挡猛进猛出免费观看视频 | 午夜无码AV| 欧美人与动牲猛交a欧美精品 | 3p视频在线观看| 五月丁香六月综合缴情在线| 91免费国产在线观看尤物| 日日摸天天爽天天爽视频 | 国产精品内射在线免费看| 亚洲一区二区中文| 韩产日产国产欧产| 久久AV中文综合一区二区| 无码欧美毛片一区二区三| 中文无码天天av天天爽| 久久国产精品久久精品国产| 欧美三级大片| 国产精品一区二区国产主播| 免费无码在线播放av|