91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

樹莓派4 rt-thread如何實現SPI屏人機交互界面

發布時間:2021-11-20 10:36:40 來源:億速云 閱讀:658 作者:小新 欄目:互聯網科技

這篇文章主要介紹了樹莓派4 rt-thread如何實現SPI屏人機交互界面,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

 

樹莓派4 rt-thread實現SPI屏人機交互界面

 

1.前言

樹莓派4的rt-thread一直在不斷的更新,充分挖掘可以樹莓派底層硬件的特性,同時借助各種外設,使得樹莓派4成為一個更加適合學習嵌入式開發,驗證各種外設功能,學習操作系統的好用的平臺。

在樹莓派4上進行各種外設的開發,需要一定的嵌入式調試經驗與驅動調試方法,因為樹莓派雖然資料很多,但是關鍵核心的芯片資料卻非常的少,都是進行應用層面的開發工作。為了更加深刻的學習嵌入式,了解方法是不夠的,而是要弄清楚原理才行。本文主要是介紹樹莓派4圖像,觸摸相關的使用方式,從而實現GUI的移植和界面交互。

 

2.樹莓派4顯示接口介紹

樹莓派4默認是不帶任何屏接口的顯示的,可以接上HDMI接口。

樹莓派4 rt-thread如何實現SPI屏人機交互界面


 

另外,樹莓派4上帶有MIPI的顯示器DSI排線接口,可以通過排線進行連接。

樹莓派4 rt-thread如何實現SPI屏人機交互界面


 

這兩種顯示接口的驅動實現,都已經在樹莓派的videocore中實現了,具體的實現細節需要查看相關的GPU的使用。作為學習嵌入式圖像這一塊,已經無法從樹莓派上進行任何的底層相關的開發了。想調用圖像的讀寫操作,可以通過CPU與GPU的通信管道作為數據的傳輸通道,具體可以查看mbox的驅動實現細節:

https://github.com/RT-Thread/rt-thread/blob/master/bsp/raspberry-pi/raspi4-32/driver/mbox.c
 

將圖像放到一段內存空間,然后發消息給GPU,讓其去該地址取數據,最后就可以在屏幕上看到顯示的畫面了。

這一種只有顯示,如果要實現觸摸,還需進行另外的接口實現。一種是DSI可以將觸摸的坐標傳遞給GPU,通過mbox取獲取坐標數據,另外一種接HDMI屏的常見做法就是將觸摸另外接到USB上,通過USB獲取坐標點。這是常見的實現手段。

除此之外,微雪則出了MHS-3.5inch RPi Display的3.5寸的SPI屏。

http://www.lcdwiki.com/MHS-3.5inch_RPi_Display
 

下圖是基本的展示:

樹莓派4 rt-thread如何實現SPI屏人機交互界面


 

樹莓派4 rt-thread如何實現SPI屏人機交互界面


 

該屏是利用SPI總線所驅動,最大spi速率支持125Mhz。支持電阻屏觸摸。而且價格也很便宜。是本文研究的重點。

 

3.樹莓派4 SPI接口

要想將該屏驅動起來,首先必須了解的是SPI協議,以及bcm2711芯片的spi控制器的使用。所有深度的研讀了rpi_DATA_2711_1p0.pdf文檔。

https://gitee.com/bigmagic/raspi_sd_fw/tree/master/doc/raspi4
 

重點是說,樹莓派4的SPI是支持兩種模式的,一種是標準的SPI總線。

樹莓派4 rt-thread如何實現SPI屏人機交互界面


 

這個很基本,也就是CE片選決定是那個設備,主機通過傳輸SCLK時鐘信號,然后傳輸MOSI,從機響應數據,MISO。這是標準的SPI協議,可以好好復習一下。

另外一種則是LOSSI模式。

樹莓派4 rt-thread如何實現SPI屏人機交互界面


 

也就是低速串行總線。片選外設后,主機可以通過SCL發送時鐘,然后通過SDA發送數據,從機接受到數據后,也會通過SDA數據線傳輸到主機。只有一條線傳輸數據。

區分的方法就是在發送數據位時比如發送8位數據位,則會在前面增加一位表示讀寫。這種適合于低速外設總線的使用。這一種模式目前暫時沒有使用到,后面使用的時候再進行分析。

 

4.樹莓派4 上的SPI屏的實現

具體細節我就不過多的展開,反正調試就占用了兩天時間,下面主要講一講調試的心得和步驟。

標準的SPI屏接上后,觸摸和LCD都是用的同樣的SPI線。

樹莓派4 rt-thread如何實現SPI屏人機交互界面

通過CS引腳進行選擇,正好對應上樹莓派SPI0的兩個片選。我剛開始調試的是LCD,由于LCD的主控是ILI9486,看來一下芯片手冊,準備按照以往的調試經驗,先讀出出廠ID試試。怎么都不讀到數據,嘗試了好久,結果仔細看上圖,發現SO引腳上標注的是Touch panel SPI data output。原來是不能輸出數據的呀。于是轉換方向,先調試觸摸,因為觸摸標準一些。

剛開始的時候,觸摸讀不到數據,因為SPI驅動寫的不好,而且測試也不嚴格,對SPI的協議理解不深刻,后來干脆采用邏輯分析儀跟蹤數據。才發現速率太高了,原來這個觸摸支持的spi的頻率是很低的,只有幾百K。我終于看到數據讀出來變化了。

由于是電阻屏,所以讀到的是12位的數據,讀到2個字節,然后計算偏移得到12位的數據,總體變化范圍是0到2048之間。按照這個規律,不斷的在屏的上下左右角度測試坐標,終于測試得到了以下結論。

XPT2046:Width:320 High:480
no pressed:(0x800,0xfff)
---ETH----USB-----------------------
| (0x800,0x800)      (0xfff,0x800) |
|                                  |
| (0x800,0xFFF)      (0xfff,0xfff) |
------------------------------------
 

不進行觸摸得到的數據(0x800,0xfff),各個角度的值可以看上面的信息。

計算坐標,由于電阻屏,每個點的坐標均勻分布,有著二次方程的線性關系。很容易就通過取到的數據算出坐標點了。調試這個花費了一天時間。終于可以開始調試LCD了。

由于兩個片選不一樣,而且只能寫不能讀,這樣調試起來需要非常的精確。首先LCD復位,也就是22號引腳先高電平再低電平再高電平。此時完成復位動作。

接著,注意命令和數據是一個GPIO的高低電平進行控制的。這個細節要注意。接著就是開始傳輸配置的參數了,參數主要參考類似的lcd的實現。參數傳遞完成,屏的面板顯示又白色變成黑色,這個是證明參數寫進去的關鍵。為了這個細節的實現,調試了許久。然后寫數據到lcd中。

剛開始的時候,刷屏的速度肉眼可見,每個坐標點在變化,這肯定不能接受,然后算了一下SPI的頻率還不到1MHZ。這肯定不行,于是配置樹莓派SPI,將時鐘提升到125Mhz。速度雖然有了提升,但是還是不夠,差不多1s才能刷新全屏。最后直接跳過rt-thread的spi框架,直接操作底層進行SPI寫數據。發現真的快了許多。

用數據來說話,用Image2LCD來生成一張圖像,進行刷屏測試。

樹莓派4 rt-thread如何實現SPI屏人機交互界面


 

最后的結果如下所示:

樹莓派4 rt-thread如何實現SPI屏人機交互界面


 

由于操作系統的tick為10ms,所以測試得到差不多40到50ms,所以幀率在20~25幀左右。這是目前實測的數據。雖然速率不是特別高,但是還是可以接受的。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“樹莓派4 rt-thread如何實現SPI屏人機交互界面”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南川市| 临安市| 唐山市| 延津县| 武胜县| 博兴县| 乌拉特前旗| 子洲县| 东兰县| 射阳县| 包头市| 宜章县| 于田县| 桐庐县| 惠东县| 林周县| 论坛| 霍州市| 福建省| 通海县| 鹤庆县| 鄯善县| 达孜县| 镇雄县| 高安市| 塔河县| 中阳县| 徐水县| 思南县| 焦作市| 讷河市| 镇巴县| 新乡市| 乌恰县| 龙海市| 马公市| 万宁市| 新河县| 平远县| 石林| 新巴尔虎右旗|