久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 51單片機驅動TFT彩屏+攝像頭+有實用意義的高幀率!原創發布! [打印本頁]

作者: njzr    時間: 2021-10-23 20:58
標題: 51單片機驅動TFT彩屏+攝像頭+有實用意義的高幀率!原創發布!
      閑來無事逛某一個寶,赫然發現同尺寸的TFT小屏竟然比單色點陣屏還便宜,頓時萌發了嘗試一下的念頭,以前需要用到彩屏的時候通常都是選用現成的串口屏,使用串口收發下數據就搞定用戶界面了,但近年來芯片張價潮波及到了幾乎所有電子行業,原來選型時一百多的屏現在要近四百了,當然材料成本沒漲那么多,奸商跟風漲價罷了。根據現有手頭項目產品要求選定了一款2.4''彩屏,驅動ILI9341分辨率320*240,典型的爛大街規格不愁斷貨,立刻下單!不過考慮到通常TFT驅動對MCU的需求還是比較高的,如果套用現成方案例程搞個STM32(現在是奢侈品了)做驅動到也四平八穩,但是成本就不忍直視了,補充一下F1系列只有100腳以上的帶FSMC接口,所以價格肯定會很感人!再說本來就是為了省錢才干的這事,咱必須不忘初心對吧。    用高射炮打蚊子不算本事,用彈弓打飛機才是水平,立刻著手查資料算時序,我就不信51搞不定TFT(是指基本流暢播放全屏動畫,而不是慢吞吞刷出幾個字來),一算才發現這玩意要求還挺高,平時常用的中穎系列主頻最多20冒頭,這速度來刷屏怕是要看著圖片一條線往下跑了,雖然有些STM32開發板例程也是這個水平但咱自己對覺悟還是有要求的!^_^
      搞到這里有點頭痛,想著不行就換MCU吧,無意間忽然想到電機控制MCU不是對速度要求挺高的嘛,于是就發現了這頭怪獸— SH79F3213。32KB的FLASH、1.5KB的RAM、關鍵是有16KB的程序RAM,只要把前16K的CODE拷貝到里面就能以84M的主頻的跑程序,芯片其它外圍也挺豐富但我暫時用不到就不去管它了,沒有硬件支持下刷屏幕MIPS才是王道!
      芯片選定開始電路方案設計,彩色圖片的數據量對51來說非常可觀的,一幅全屏的RGB565數據就是153KB,與用單色屏習慣把字庫和小圖片防在CODE區不同,這種應用必須外擴存儲器了。你沒猜錯,我又選了爛大街的W25Q系列,便宜才是王道嘛,手頭有現成的W25Q16先頂上用吧。這里要吐槽一下MCU硬件SPI口,最快只能8分頻,都什么年代了還這么慢,現在SPI口的FLASH都支持100M以上了。好在內核跑得快,我用軟件模擬還不行嘛,最終軟件模擬的SPI口做到20個指令周期取一字節并放到總線,同樣時間你硬件SPI三位還沒有傳完,在此替中穎汗顏一下。
      言歸正傳,  選P0、P4口做16位數據總線,因為這倆口排列規整方便布線,P2口給W25Q用(實際只用了6個PIN,為啥這樣用可以想想),留了一個串口做圖象文件下載和顯示控制,其他控制IO就隨便就近分配了。正好某配有免費打樣券,PCB圖畫好就去做了。


  板子回來焊接器件沒啥好說的,參照賣家的例程做個驅動初始化,自己寫了畫點和字庫顯示文字的程序,文字顯示很快是預料中,因為前景、背景色是相對固定兩色刷就完了,有些賣家例程以單色刷屏速度吹噓就更是糊弄人民群眾了,這個總線數據都不用變拼命刷WR線就行了。






作者: njzr    時間: 2021-10-23 21:32
  重點到了!其實搞過TFT的(用開發板移植一下例程在我看來不能算搞過)都知道,刷圖象速度的瓶頸是在取數據而不在刷總線,即使你用STM32,用上了DMA、FSMC限制你速度的依然是SPI總線上的存儲器,前面提到了我用20個指令周期取到一字節數據并把它放到總線上,這樣16位總線就需要40周期,再加上8080口的控制和循環指令,整屏刷下來平均51-52周期/像素,換算成刷新率大約21FPS,這個速度基本可以滿足一般的工業產品顯示需要了。當然最終產品還會有些中斷程序的干擾,但做到18FPS以上應該沒有任何難度。https://v.youku.com/v_show/id_XNTgxMDkwNzE3Mg==.html?spm=a2hbt.13141534.1_2.d_4&scm=20140719.manual.114462.video_XNTgxMDkwNzE3Mg==

附上刷圖片的視頻,雖然有20FPS左右但畫面切換時撕裂感還是明顯的,一是屏硬件沒有接出TE腳不能同步,二是幀率還是低了些,理論上如果有ILI9341幀率的一半配合同步刷頻就可以完全無感地切換了。
下面是動態圖象的效果
https://v.youku.com/v_show/id_XNTgxMzQ5MDE2OA==.html?spm=a2hbt.13141534.1_2.d_3&scm=20140719.manual.114461.video_XNTgxMzQ5MDE2OA==

    因為存儲容量有限,所以只有十二幅畫面,不過基本還算是播放流暢了。為了能進一步提高幀率,此時腦子里已經在構思第二版了......




作者: njzr    時間: 2021-10-23 21:39
    第二版的做好了,這幾天焊接調試忙得不亦樂乎,今晚終于基本成型了,雖然最終完全按上篇預告的內容完成目標甚至刷新率還遠超預計,但期間也遇見了各種奇怪問題,現將過程和心得與大家共享。
    老規矩,先上裸.................板!第一版因為要驗證用595同時驅動128顆LED,所以板子做得略大,這次版本純粹奔著驗證圖形性能去的,所以又緊湊了些。


    焊接完畢,用第一版的程序想稍做修改把屏先搞亮起來,結果就卡在這了,任你怎么折騰屏幕都是沒有反應,因為這次使用了8080II的8位總線方式驅動(第一版是16位方式),設計硬件時還特意跟某一個寶屏幕賣家溝通確認過想必應該沒啥問題了,但屏幕就是沒動靜讀ID也沒反應,一度我都懷疑新買的這個屏是不是壞的。


下面是賣家提供的原理圖局部,圖中的11腳雖然標著NC但每一個毛孔都散發著IM0的氣息,畫板前與賣家溝通也驗證了這個想法。


這一卡就是近一天的時間,不得以我把粘好的屏又從PCB上翹下來,干了快30年的老電工開始懷疑自己的焊接是不是有問題,這也太打擊人了! ^_^
既然把屏翹下來了,順便仔細檢查一下FPC是不是有折彎損傷吧,這一檢查就發現問題了,下面是FPC的照片,看看哪個小機靈鬼能發現問題。


電阻R1、R2字符旁邊多了8和16兩個數字,莫非.....難道.....?插上烙鐵立刻開動把零歐電阻換到8那邊去,再上電瞬間圖象它出來了,這時內心激動程度絲毫不亞于第一版屏幕出圖象的時候,并且有種想把賣家ko的沖動!實踐證明這款屏的IM0端口根本沒有引出,而是直接在FPC上完成不同通訊接口的設置。



作者: njzr    時間: 2021-10-23 22:10
屏幕亮了就好辦,字符顯示一切正常,但顯示圖片又出問題了,屏幕是花的!首先就懷疑自己寫的PC端圖片處理程序和BIN文件合并、拆分程序的問題,可檢查了半天沒問題啊,用示波器一看FLASH芯片只有一個腳在出數據可我用的是4I/O模式,難道芯片QE=0?(JV版本的應該出廠QE=1),找來幾片同次買的芯片上編程器讀狀態字節,果然有部分QE=0的,甚至還有幾片被燒了加密位,看來是又遇見奸商了,說是全新原裝但就算是用拆機貨也要正規點吧,好歹恢復到出廠狀態算是拆機貨的良心和底線了吧!也怪自己貪便宜,省錢辦大事才是硬道理!
修改過QE狀態后4I/O數據可以源源不斷地輸出了,按即定思路修改程序,一切順利達到了42FPS刷新率,接下來繼續優化刷屏循環,一條條指令一個個周期的摳,最終達到了71FPS的水平,連我自己也有些意外,當然此時MCU除了刷屏基本干不了其它大事了,下面是實測FLASH的片選引腳波形


上圖中一個低電平周期刷一幀圖象時間大約是14mS,每秒10幀圖象,也就是每幅圖象后有八十多毫秒可以做其它任何事,當然快速的即時性中斷任務也可以隨時執行,包括在刷屏期間對刷屏也基本沒影響。這也驗證了速度就是王道,什么同步也不用,刷屏期間中斷也沒事,只要你夠快對顯示就沒有肉眼可見的影響。這次的動態圖視頻就不發了,大家也不想看廣告對吧^_^


作者: njzr    時間: 2021-10-23 22:19
為什么看不見自己的帖子?暈了
作者: njzr    時間: 2021-10-23 23:11
竟然被吃掉了一貼,碼字實在是辛苦啊!那就過程不表直接來結果吧
第二版準備動手的時候已經計劃要接攝像頭了,網上的主流說法是51接攝像頭必須要用FIFO存下以后慢慢去讀,就算STM32F1系列也推薦用帶FIFO的,直接驅動速度不夠,刷新率只有幾fps甚至不到1fps。但咱就是明知山有虎偏向虎山行的主,經過充分計算和評估后認定可以做到10幀以上!百密一疏的是我簡單認為攝像頭的水平方向是排針方向,結果就是攝像頭與顯示圖象差了90度,作為技術驗證的東西應該屬于可接受缺陷吧。
你在看自己的波型,看波形的人在背后看你
選用了6.6包郵(符合我的風格)的OV7670攝像頭,使用直接驅動的方式進行圖象采集,攝像頭的時鐘由MCU提供,平均大約在10M多一點滿足攝像頭標稱工作最低頻率要求。直接驅動攝像頭的關鍵點在時鐘的穩定和時序,而時序的正確又很大程度上取決于時鐘的穩定,為了綜合考慮各項要求在能夠正確出圖后我又花了兩天時間細調時序和時鐘占空比,最終性能確定在14.6fps,其實可以做到接近18fps但穩定性會有明顯下降,時序容易出錯。



這是幀同步信號,最終性能定格在14.6Hz
拍攝一段小豬佩奇看看效果
https://v.youku.com/v_show/id_XNTgxNTAwMDIzMg==.html


作者: njzr    時間: 2021-10-23 23:51
總結篇
    這次的兩版技術驗證性制作充分證明了現在高性能的51內核可以有效驅動小型TFT和直接驅動低分辨率攝像頭,如果用STC的新款產品性能應該會更好一些,因為中穎這款MCU雖然主頻高的變態但受制于中穎內核比較老,多周期指令還是很多的,所以最終執行效率反而不如其它新廠主頻四十M以上的產品。其實我本來是打算用STC做的,但STC的端口規劃太凌亂了而且仿真方面是弱項所以還是選了中穎的MCU,畢竟用了十幾年輕車熟路。
    雖然最終性能指標相當突出但也還是為了驅動而驅動(主要是指攝像頭方面),51內核的主流配置對于圖象數據量來說太可憐了,只能做個數據的搬運工,基本不用想做什么處理了,從內核運算來看還是能夠擠出點時間做簡單處理的無奈RAM太小,即使做完二值化后再存儲也要十幾K容量了,對于51內核的MCU基本找不到符合要求的。
    對于中低分辨率TFT屏幕現在的高性能51是可以輕松驅動的,這完全可以進一步應用在產品中。
所有程序都是匯編語言寫的,這里就不公開了,有興趣探討的朋友可以就技術細節展開討論。

作者: xjx51    時間: 2021-10-31 11:54
TFT驅動都用匯編,牛啊!為你點贊!
作者: hhdsdy    時間: 2021-10-31 13:20
看到此帖我只能膜拜,真的是牛啊!
作者: Dxiaofeng    時間: 2022-3-4 06:45
找到組織了,我想利用緩存來全屏顯示,可以指教一下不
作者: xa3952163    時間: 2022-3-19 11:01
我用51也是匯編編程,四十年了,輕車熟路。
作者: Chenzy123    時間: 2022-3-24 16:28
還以為是我也能學的事,,往后一看,,這調試我都搞不定
作者: zpxm01    時間: 2022-6-25 10:50
工程有點大,一般愛好者難于實施
作者: wwgk    時間: 2022-6-26 11:44
正想搞個便宜的視頻采集方案,感謝樓主分享
作者: youlinys    時間: 2022-7-7 11:37
資料開源嗎?
作者: llionwang    時間: 2022-12-29 18:15
我用STC16位驅動LCD,感覺比SPI快不了多少,感覺瓶頸還是在W25Q讀取速度,,,樓主能分享下思路不?
作者: Su_xin    時間: 2023-2-6 08:26
求資料開源
作者: wangwenhai8    時間: 2023-2-7 10:09
老江湖不錯,值得學習。
作者: 你個豬頭g    時間: 2023-3-15 13:01
樓主好,能不能分享一下你這個原理圖哈,我想學習一下。感激不盡!
作者: joyb    時間: 2023-8-30 09:25
原來是大師級別的
作者: powerdruy    時間: 2023-10-25 17:17
51刷屏,不用匯編做基本難做到流暢,我曾經在C8051F340上跑100M主頻刷攝像頭+屏,容易出現畫面出錯,穩定性還是不行,但是幀率還可以,要我用匯編寫一遍,那是萬萬干不來了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美一级二级视频 | 亚洲视频三区 | 久久网国产 | 亚洲欧美日韩久久久 | 一区二区三区小视频 | 亚洲精品免费观看 | 91成人精品 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 大象一区 | 亚洲欧美日韩在线 | 羞羞视频网站免费看 | 亚洲三级在线观看 | 日韩在线日韩 | 久久手机在线视频 | 国产精品美女久久久久aⅴ国产馆 | 久久国产一区 | 欧美一区二区三区电影 | 2019天天干夜夜操 | 欧美精品一区二区三区蜜臀 | 精品一区二区三区在线观看国产 | 亚洲免费精品 | 国产精品久久久久久吹潮 | 欧美1—12sexvideos | 久久久久久久久久爱 | 欧美激情在线观看一区二区三区 | 97免费在线观看视频 | 尹人av | 中文字幕免费视频 | 国产免费一区二区三区最新6 | 欧美精品在欧美一区二区少妇 | 中文字幕国产视频 | 紧缚调教一区二区三区视频 | 欧美成人精品 | 国产精品久久久久久久三级 | 九九亚洲精品 | 一级毛片免费 | 久久精品国产清自在天天线 | 久久高清亚洲 | 成年人黄色小视频 | 日日操日日干 | 欧美理论片在线 |