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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用FPGA驅(qū)動(dòng)SPI屏幕

FPGA研究院 ? 來(lái)源:FPGA之旅 ? 2023-08-23 09:17 ? 次閱讀

一. 簡(jiǎn)介

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

此為圖像處理的基礎(chǔ),后面圖像處理相關(guān)的代碼都會(huì)基于此屏幕哦!

二. SPI屏幕驅(qū)動(dòng)(驅(qū)動(dòng)芯片ST7789V)

1. SPI模式

SPI時(shí)序就不介紹了,很重要且必須要掌握的協(xié)議。要想驅(qū)動(dòng)屏幕,最關(guān)系的肯定是使用那種模式來(lái)驅(qū)動(dòng)了,答案就在這里,數(shù)據(jù)在SCL時(shí)鐘的上升沿被采樣,數(shù)據(jù)在SCL時(shí)鐘的下降沿切換(空閑的時(shí)候?qū)CL的電平不作要求),對(duì)應(yīng)的模式為0和3。

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

2. 初始化

摸清楚SPI的模式之后,就可以開(kāi)始初始化屏幕了,最簡(jiǎn)單高效的方法當(dāng)然是參考C語(yǔ)言的現(xiàn)實(shí)。

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

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

通過(guò)下圖可以清楚的知道,是通過(guò)DC信號(hào)線的電平來(lái)區(qū)別的(低電平表示當(dāng)前發(fā)送的數(shù)據(jù)為命令)。

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

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

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

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

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

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

經(jīng)過(guò)上面的初始化,如果成功了,屏幕上顯示出雜亂無(wú)章的圖案。

3. 顯示數(shù)據(jù)

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

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

三. FPGA實(shí)現(xiàn)

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

SPI主機(jī)模塊: 用來(lái)和屏幕進(jìn)行數(shù)據(jù)交互

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

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

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

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

SPI主機(jī)模塊和初始化模塊非常簡(jiǎn)單,就不作說(shuō)明啦!重點(diǎn)來(lái)說(shuō)說(shuō)刷新模塊。

刷新模塊不會(huì)像單片機(jī)中那樣,調(diào)用的時(shí)候才會(huì)進(jìn)行刷新,而且在初始化完成之后,就一直在對(duì)整個(gè)屏幕進(jìn)行刷新了,

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

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

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

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

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

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

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

3. 模塊端口

端口信號(hào)如下,著重關(guān)注用戶接口的三個(gè)信號(hào)即可,非常easy!

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

四. 模塊封裝

spi模塊top模塊的接口如下,很明顯不夠完美,無(wú)法知道當(dāng)前顯示的像素坐標(biāo),而且圖像數(shù)據(jù)一般為16bit的,而這個(gè)模塊的輸入為8bit的數(shù)據(jù),另外在替換VGA接口的屏幕時(shí)候,也不能簡(jiǎn)單高效的替換下來(lái),所以需要經(jīng)過(guò)一次封裝,將其與外部進(jìn)行交互的端口信號(hào)封裝為VGA接口的信號(hào)(近似)。

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

封裝后的模塊端口信號(hào)如下,其內(nèi)部實(shí)現(xiàn)類似于VGA驅(qū)動(dòng)。

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

五. 上板測(cè)試

測(cè)試代碼如下,顯示四個(gè)方塊,是不是感覺(jué)so easy!。

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

測(cè)試圖片如下,顯示效果完美?。。?!

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

審核編輯:湯梓紅

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

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600458
  • 顯示器
    +關(guān)注

    關(guān)注

    21

    文章

    4890

    瀏覽量

    139641
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1681

    瀏覽量

    91050
  • 驅(qū)動(dòng)芯片
    +關(guān)注

    關(guān)注

    13

    文章

    1235

    瀏覽量

    54302

原文標(biāo)題:FPGA驅(qū)動(dòng)SPI屏幕

文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使用FPGA驅(qū)動(dòng)OLED屏幕

    這是FPGA之旅設(shè)計(jì)的第九例啦?。?!本例將介紹如何使用FPGA驅(qū)動(dòng)OLED屏幕,并在接下來(lái)的幾例中,配合其它模塊,進(jìn)行一些有趣的綜合實(shí)驗(yàn)。由于使用的OLED屏是IIC接口的,對(duì)IIC接
    發(fā)表于 09-01 10:51 ?3122次閱讀

    【正點(diǎn)原子新起點(diǎn)開(kāi)發(fā)板免費(fèi)試用連載】基于FPGA實(shí)現(xiàn)TFT屏幕驅(qū)動(dòng)

    項(xiàng)目名稱:基于FPGA實(shí)現(xiàn)TFT屏幕驅(qū)動(dòng)試用計(jì)劃:申請(qǐng)理由:本人在某家電公司負(fù)責(zé)TFT屏幕部分,最近開(kāi)發(fā)了一個(gè)新方案使用ST單片機(jī)驅(qū)動(dòng)TFT
    發(fā)表于 06-23 09:44

    SPI驅(qū)動(dòng)屏幕移植LVGL軟件包具體流程

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

    SPI驅(qū)動(dòng)TFTLCD屏幕相關(guān)資料推薦

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

    SPI方式FPGA配置和SPI flash編程

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

    SPI_FLASH

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

    SPI接口的應(yīng)用與基于FPGASPI自動(dòng)發(fā)送模塊設(shè)計(jì)

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

    基于FPGASPI協(xié)議及設(shè)計(jì)實(shí)現(xiàn)

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

    STC8的硬件SPI驅(qū)動(dòng)ST7735彩色TFT屏幕

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

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

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

    STM32L4 模擬SPI 驅(qū)動(dòng)LCD 240*240屏幕

    第一次寫博客,寫的可能很亂,各位看客可能費(fèi)點(diǎn)精神。因?yàn)椴荒鼙WC打樣的板子沒(méi)那么快到手上,所以在開(kāi)發(fā)板上先進(jìn)行了模擬SPI驅(qū)動(dòng)屏幕。在開(kāi)發(fā)板上開(kāi)發(fā)主要器件:TFTLCD屏幕240*240
    發(fā)表于 12-22 19:29 ?22次下載
    STM32L4  模擬<b class='flag-5'>SPI</b> <b class='flag-5'>驅(qū)動(dòng)</b>LCD 240*240<b class='flag-5'>屏幕</b>

    FPGA實(shí)現(xiàn)SPI

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

    FPGA中關(guān)于SPI的使用

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

    Raspberry Pi、相機(jī)和SPI屏幕開(kāi)源分享

    電子發(fā)燒友網(wǎng)站提供《Raspberry Pi、相機(jī)和SPI屏幕開(kāi)源分享.zip》資料免費(fèi)下載
    發(fā)表于 06-15 11:31 ?0次下載
    Raspberry Pi、相機(jī)和<b class='flag-5'>SPI</b><b class='flag-5'>屏幕</b>開(kāi)源分享

    R128實(shí)現(xiàn)SPI驅(qū)動(dòng)TFT LCD屏教程

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