衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用FPGA驅動SPI屏幕

FPGA研究院 ? 來源:FPGA之旅 ? 2023-08-23 09:17 ? 次閱讀

一. 簡介

相信大家都玩過屏幕,在FPGA上使用最多的就是VGA/HDMI接口的顯示器了,這兩種顯示器的優(yōu)點就不用說了,缺點就是體積比較大,而且價格比較貴,對于追求便攜/價格低的我來說,SPI接口的屏幕才是我的首要選擇,而且一般是可以帶觸摸的哦。

此為圖像處理的基礎,后面圖像處理相關的代碼都會基于此屏幕哦!

二. SPI屏幕驅動(驅動芯片ST7789V)

1. SPI模式

SPI時序就不介紹了,很重要且必須要掌握的協(xié)議。要想驅動屏幕,最關系的肯定是使用那種模式來驅動了,答案就在這里,數(shù)據在SCL時鐘的上升沿被采樣,數(shù)據在SCL時鐘的下降沿切換(空閑的時候對SCL的電平不作要求),對應的模式為0和3。

64dc1e58-4144-11ee-a2ef-92fbcf53809c.png

2. 初始化

摸清楚SPI的模式之后,就可以開始初始化屏幕了,最簡單高效的方法當然是參考C語言的現(xiàn)實。

可以看出,初始化的過程就是依次發(fā)送命令和數(shù)據即可。那么如何辨別命令和數(shù)據呢?

64f3f6a4-4144-11ee-a2ef-92fbcf53809c.png

通過下圖可以清楚的知道,是通過DC信號線的電平來區(qū)別的(低電平表示當前發(fā)送的數(shù)據為命令)。

6509b610-4144-11ee-a2ef-92fbcf53809c.png

弄懂了上述問題之后,就可以按照C語言實現(xiàn)依葫蘆畫瓢,依次將命令和數(shù)據發(fā)送出去即可。另外有兩點需要注意的是:

兩條命令不能連續(xù)發(fā)送,中間需要停頓數(shù)個時鐘周期;而數(shù)據則不需要。

命令到數(shù)據,或者數(shù)據到命令,是不能連續(xù),中間需要停頓數(shù)個時鐘周期。

6522bb06-4144-11ee-a2ef-92fbcf53809c.png

另外這三個命令需要注意一下0x36,0x2A,0x2B,它們分別是設置顯示的方向(還有就是數(shù)據是RGB還是BGR)、列地址和行地址。0x36涉及到的東西比較多,需要詳細了解的可以自行去翻閱數(shù)據手冊。

經過上面的初始化,如果成功了,屏幕上顯示出雜亂無章的圖案。

3. 顯示數(shù)據

C語言的實現(xiàn)如下,設置要顯示X,Y的范圍,也就是矩形的左上角和右下角的值,然后發(fā)送要顯示的數(shù)據即可。非常簡單。

654142a6-4144-11ee-a2ef-92fbcf53809c.png

三. FPGA實現(xiàn)

有了C語言作為參考,F(xiàn)PGA端的實現(xiàn)那還不是小菜一碟,總共只需要分為如下的三個模塊:

SPI主機模塊: 用來和屏幕進行數(shù)據交互

屏幕初始化模塊: 將初始化數(shù)據依次通過SPI主機模塊發(fā)送給模塊

屏幕刷新模塊: 將顯示數(shù)據依次通過SPI主機模塊發(fā)送給模塊

模塊框圖如下,有點小哈()

656517da-4144-11ee-a2ef-92fbcf53809c.png

SPI主機模塊和初始化模塊非常簡單,就不作說明啦!重點來說說刷新模塊。

刷新模塊不會像單片機中那樣,調用的時候才會進行刷新,而且在初始化完成之后,就一直在對整個屏幕進行刷新了,

1. 模塊狀態(tài)跳轉

模塊由如下四個在狀態(tài)組成,在發(fā)送前11個數(shù)據的時候,需要進入打啊奧延時狀態(tài),原因是這11個數(shù)據中既有命令也有數(shù)據(此數(shù)據,懂?), 后面則一直在DATA態(tài),它只包括顯示數(shù)據,所以不需要延時。最后一個顯示數(shù)據發(fā)送完成后,就進入幀同步狀態(tài),表示一幀數(shù)據發(fā)送完成。

658be3ec-4144-11ee-a2ef-92fbcf53809c.png

65b67350-4144-11ee-a2ef-92fbcf53809c.png

2. 圖像顯示數(shù)據

很easy!發(fā)送完前面的命令和數(shù)據后,剩下的全部都是顯示數(shù)據了,都丟在default里面就可以了。這里暫時寫死了(后面會將顯示的數(shù)據修改為模塊輸入的數(shù)據)。

65e40568-4144-11ee-a2ef-92fbcf53809c.png

3. 模塊端口

端口信號如下,著重關注用戶接口的三個信號即可,非常easy!

65fa2168-4144-11ee-a2ef-92fbcf53809c.png

四. 模塊封裝

spi模塊top模塊的接口如下,很明顯不夠完美,無法知道當前顯示的像素坐標,而且圖像數(shù)據一般為16bit的,而這個模塊的輸入為8bit的數(shù)據,另外在替換VGA接口的屏幕時候,也不能簡單高效的替換下來,所以需要經過一次封裝,將其與外部進行交互的端口信號封裝為VGA接口的信號(近似)。

6613b0ba-4144-11ee-a2ef-92fbcf53809c.png

封裝后的模塊端口信號如下,其內部實現(xiàn)類似于VGA驅動。

663c66b8-4144-11ee-a2ef-92fbcf53809c.png

五. 上板測試

測試代碼如下,顯示四個方塊,是不是感覺so easy!。

66575856-4144-11ee-a2ef-92fbcf53809c.png

測試圖片如下,顯示效果完美!!!!

6674ee48-4144-11ee-a2ef-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21796

    瀏覽量

    606010
  • 顯示器
    +關注

    關注

    21

    文章

    5010

    瀏覽量

    140406
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1721

    瀏覽量

    92125
  • 驅動芯片
    +關注

    關注

    13

    文章

    1295

    瀏覽量

    54922

原文標題:FPGA驅動SPI屏幕

文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用FPGA驅動OLED屏幕

    這是FPGA之旅設計的第九例啦!!!本例將介紹如何使用FPGA驅動OLED屏幕,并在接下來的幾例中,配合其它模塊,進行一些有趣的綜合實驗。由于使用的OLED屏是IIC接口的,對IIC接
    發(fā)表于 09-01 10:51 ?3448次閱讀

    【正點原子新起點開發(fā)板免費試用連載】基于FPGA實現(xiàn)TFT屏幕驅動

    項目名稱:基于FPGA實現(xiàn)TFT屏幕驅動試用計劃:申請理由:本人在某家電公司負責TFT屏幕部分,最近開發(fā)了一個新方案使用ST單片機驅動TFT
    發(fā)表于 06-23 09:44

    SPI驅動屏幕移植LVGL軟件包具體流程

    一、spi驅動屏幕,我使用的屏幕為1.8寸spi屏幕 驅動
    發(fā)表于 07-08 15:09

    SPI驅動TFTLCD屏幕相關資料推薦

    1、SPI驅動TFTLCD屏幕簡析  本文實現(xiàn)了使用GD32FF427V-START板子的SPI1驅動TFTLCD,LCD是2.2寸的ILI
    發(fā)表于 12-21 15:19

    SPI方式FPGA配置和SPI flash編程

    SPI方式FPGA配置和SPI flash編程
    發(fā)表于 05-16 18:01 ?165次下載
    <b class='flag-5'>SPI</b>方式<b class='flag-5'>FPGA</b>配置和<b class='flag-5'>SPI</b> flash編程

    SPI_FLASH

    網上找的FPGASPI驅動,測試可用,分享給大家。。。。
    發(fā)表于 05-13 17:14 ?19次下載

    SPI接口的應用與基于FPGASPI自動發(fā)送模塊設計

    一種基于FPGA 的將并行數(shù)據以SPI 串行方式自動發(fā)送出去的方法。 二、關鍵字: VHDL、FPGASPI、串行數(shù)據輸出選擇模塊、移位脈沖產生模塊、
    發(fā)表于 10-19 10:33 ?19次下載
    <b class='flag-5'>SPI</b>接口的應用與基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>SPI</b>自動發(fā)送模塊設計

    基于FPGASPI協(xié)議及設計實現(xiàn)

    基于FPGASPI協(xié)議及設計實現(xiàn)博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨詢,歡迎大家前來投稿,謝謝!引言介紹在電子通信領域里采用的通信協(xié)議有IIC,SPI,UART
    發(fā)表于 11-05 19:05 ?24次下載
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>SPI</b>協(xié)議及設計實現(xiàn)

    STC8的硬件SPI驅動ST7735彩色TFT屏幕

    20200719STC8的屏幕驅動摸了,不會用markdown。放上代碼完事代碼是基于中景園的軟件SPI屏幕驅動的,僅僅是改成了硬件
    發(fā)表于 12-22 19:17 ?44次下載
    STC8的硬件<b class='flag-5'>SPI</b><b class='flag-5'>驅動</b>ST7735彩色TFT<b class='flag-5'>屏幕</b>

    FPGA實現(xiàn)的SPI協(xié)議(二)----基于SPI接口的FLASH芯片M25P16的使用

    寫在前面SPI協(xié)議系列文章:FPGA實現(xiàn)的SPI協(xié)議(一)----SPI驅動 在上篇文章,簡要介紹了
    發(fā)表于 12-22 19:25 ?19次下載
    <b class='flag-5'>FPGA</b>實現(xiàn)的<b class='flag-5'>SPI</b>協(xié)議(二)----基于<b class='flag-5'>SPI</b>接口的FLASH芯片M25P16的使用

    STM32L4 模擬SPI 驅動LCD 240*240屏幕

    第一次寫博客,寫的可能很亂,各位看客可能費點精神。因為不能保證打樣的板子沒那么快到手上,所以在開發(fā)板上先進行了模擬SPI驅動屏幕。在開發(fā)板上開發(fā)主要器件:TFTLCD屏幕240*240
    發(fā)表于 12-22 19:29 ?22次下載
    STM32L4  模擬<b class='flag-5'>SPI</b> <b class='flag-5'>驅動</b>LCD 240*240<b class='flag-5'>屏幕</b>

    FPGA實現(xiàn)SPI

    FPGA實現(xiàn)SPI協(xié)議
    發(fā)表于 03-20 10:35 ?2次下載

    FPGA中關于SPI的使用

    FPGA中關于SPI的使用
    的頭像 發(fā)表于 04-12 10:13 ?953次閱讀

    R128實現(xiàn)SPI驅動TFT LCD屏教程

    同時,提供了SPILCD驅動框架以供 SPI 屏幕使用,本次使用的是 Dshan_Display Module。
    的頭像 發(fā)表于 10-21 16:31 ?1586次閱讀
    R128實現(xiàn)<b class='flag-5'>SPI</b><b class='flag-5'>驅動</b>TFT LCD屏教程

    DS1302芯片與FPGA之間SPI通信原理

    本文通過以DS1302芯片為基礎,介紹該芯片與FPGA之間SPI通信原理,詳細描述硬件設計原理及FPGA SPI接口驅動設計。
    的頭像 發(fā)表于 10-24 14:16 ?610次閱讀
    DS1302芯片與<b class='flag-5'>FPGA</b>之間<b class='flag-5'>SPI</b>通信原理
    易球百家乐娱乐城| 百家乐赌场规则| 宝龙百家乐的玩法技巧和规则| 威尼斯人娱乐城排名| 六合彩特码开奖结果| 百家乐官网有多少网址| 海王星百家乐官网技巧| 百家乐稳赢秘笈| 大发888游戏平台 送1666元礼金领取lrm| 虎林市| 网上百家乐官网指| 百家乐平台哪个好本站所有数据都是网友推荐及提供 | 百家乐官网如何打轮盘| 百家乐路子技巧| 金龙娱乐城| 华泰百家乐官网的玩法技巧和规则 | 百家乐平游戏| 六合彩查询| 百家乐官网稳赢技法| ez百家乐技巧| 网上澳门| 百家乐官网博赌场娱乐网规则| 百家乐娱乐网代理佣金| 皇冠足球| 百家乐官网操作技巧| 大发888娱乐城赢钱| 百家乐官网对子计算方法| 百家乐太阳城怎么样| 香港六合彩管家婆| 波音百家乐官网网上娱乐| 视频百家乐代理| 网上真钱轮盘| 百家乐官网赌台| 大发888在线网址| 百家乐官网怎么才能包赢| 南宁百家乐的玩法技巧和规则| 资溪县| 百家乐赌博怎么玩| 娱乐城注册送彩金| 成都百家乐官网牌具| 德州扑克与梭哈|