新聞中心

EEPW首頁 > 嵌入式系統 > 牛人業話 > 從一張示波器截圖談FIFO

從一張示波器截圖談FIFO

作者:Jobs時間:2021-04-22來源:EEPW收藏

概要:SPI外設具有協議通用性強,高速串行通訊,操作簡便等優點。本文講述了在使用SPI外設驅動LCD屏時,由于功能遇到的“異步”發送數據,導致LCD屏驅動異常,從而屏幕顯示失敗的問題。借助示波器觀察引腳信號,分析信號時序等方法的解決過程,并最終實現SPI外設驅動LCD屏。

本文引用地址:http://www.5nmn.com/article/202104/424757.htm

本人的一個項目,項目使用公司的LPC11U68微處理器作為主控芯片,其設計功能之一是驅動TFT LCD屏。TFT LCD屏為SPI接口,于是使用LPC11U68芯片的SSP0外設接口來驅動。

很簡單的三兩行字,卻讓我在調試的時候一度深陷困境。先上一張示波器截圖,我們慢慢道來。

圖片.png

這張示波器截圖對應的是下面這段代碼實現:

void ssp0_send_byte(uint8_t data)

{

uint16_t tmp = data;

LCD_DESELECT();

LCD_CMD();

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_TNF) == RESET));

Chip_SSP_SendFrame(LPC_SSP0, tmp);

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_TFE) != SET));

LCD_SELECT();

}

LCD驅動對于寄存器或數據的寫入流程還是比較清晰、簡單。如上述源代碼所示:

step1:將片選CS信號拉低

step2:配置本條發送數據是命令or數據

step3:發送8位串行數據

step4:將片選CS信號拉高

圖片.png

上圖為TFT LCD驅動datasheet中的引腳時序參考圖。代碼的編寫也是完全符號時序的要求。可是就是這么簡單的6行代碼出現了問題!

我將代碼編譯后燒錄入LPC11U68芯片后開始運行,發現LCD屏驅動異常,屏幕沒有任何顯示。

考慮到代碼是從示例程序移植過來,也不排除出現問題——也許原例程亦無法實現呢!我將代碼更換為GPIO模擬SPI方式實現驅動LCD屏——這次顯示成功了,只是頁面刷新要慢好多了。再次換回SPI外設方式,故障依舊——這也充分說明了硬件是完好的,而問題就出在了軟件設計上面了。

剛剛開始以為配置LPC11U68芯片的SSP0外設出現了問題,經過反復驗證后,也未能定位原因所在。在軟件分析無果后,請出來了示波器,便有了文章開頭的那一張截圖。

截圖中,藍線CH1為SPI外設的SCK引腳,黃線CH2為LCD的片選CS信號。從示波器上面可以清晰看到片選CS信號并沒有在發送一幀數據后才拉高,而是提前拉高了。當片選CS引腳為高時,LCD屏忽略SDA上面傳輸的數據,自然LCD屏不會有正確的顯示。

通過示波器的 介入,我們觀察到了控制信號與數據信號的傳輸過程,并發現了LCD屏未能正確的顯示的癥結所在。下面我們就分析一下其中的原因。

示例的例程是基于STM32系列單片機,閱讀兩者的datasheet,對比所使用的微處理器LPC11U68的SPI外設,可以看到STM32系列單片機沒有發送。那發送為何物呢?

“FIFO是先進先出的意思,隊列的方式。”

“FIFO是一個硬件環形的緩沖隊列,物理上不可尋址,不可見,僅SSPDR這個FIFO出口可見。”

“SSP接口向SPI總線發送數據時,數據先存到SSPDR當中,由Tx FIFO的狀態及總線是否空閑決定已經存入到SSPDR當中的數據何時進行發送。”

因為Tx FIFO的深度是有限的,每次發送過程中都是將現有FIFO中所有數據一起發送,所以SSPDR可以理解為發送過程當中的數據緩沖寄存器。”

以上我從網絡上面摘錄下來的。通過FIFO的介紹可以得出,當程序執行到Chip_SSP_SendFrame()時,僅將數據“塞入”FIFO,并在成功“塞入”后即返回。而此時數據并未成功發送,但片選CS信號 卻在Chip_SSP_SendFrame()返回后,誤認為其成功執行而對片選CS信號進行了釋放拉高操作,待SPI外設真正發送數據時,此時片選CS信號已經釋放,LCD驅動芯片也就不會再接收其數據了。沒有了正確的輸入數據,屏幕也就“漆黑一片”了。

分析問題已經完成,那么下面我們就著手解決問題。

通過閱讀官方技術手冊,可以查詢到BUSY標志位代表SPI外設正在發送操作,所以我們僅需要在此標志位清零后再執行片選CS釋放即可。源代碼如下:

void ssp0_send_byte(uint8_t data)

{

uint16_t tmp = data;

LCD_DESELECT();

LCD_CMD();

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_TNF) == RESET));

Chip_SSP_SendFrame(LPC_SSP0, tmp);

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_TFE) != SET));

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_BSY) == SET));

LCD_SELECT();

}

公司旗下LPC系列微處理器對外設增加FIFO可以減少數據中斷的調用,提高整體通訊效率,而這也恰恰營造了一種“異步”指令處理的環境。這時,也就出現了我們的微處理器在代碼執行順序上面出現了沒有按“順序”執行的問題。

在增加了等待指令后,軟件的操作順序與期望順序一致,TFT LCD驅動顯示正常。我們在軟件設計時,合理使用硬件外設提供的FIFO功能,充分利用其優勢,規避其使用過程中的副作用。雖然本次FIFO帶來了一些困擾,但從整體的系統角度來講,仍然提升了我們的系統效率。




關鍵詞: NXP FIFO

評論


相關推薦

技術專區

關閉
人人超碰超国产看一天高清影视在线天天看,天天看高清视频 婷婷五月色香综合缴情,九九最新电影免费在线观看,在线成年av动漫电影,午夜伦理 日本伦理,女同性恋色情的迫性| 777米奇色狠狠在线,奇米网在线首也,99热在线视频奇米,奇米在线免费播放| 色综合久久手机在线网,一级做人爱c视频日本,久久精品6热在线18,99这里视频只精品2019久久热 久久精品热2019| 天天射天天日香蕉,青青青草国产大香蕉,青青草华人绿色在线观看视频,好吊纽视频cao| K频道苹果,国产精品k频道视频在线观看,湖南卫视4k频道试播,k频道宅男导航免费| k频道风月海棠哥摸醒我在线,央视高清频道 4k,香蕉大伊人k频道,k频道kkpd.26.com| 激情综合k频道,k频道国产精品网络-站长资源,ut视讯美女 k频道,k频道在线精品视频日本有码| 香蕉视频无限次观看,青青青视频在线观看,亚洲香蕉视频在线播放,一级香蕉视频在线观看| k频道橹,k频道luluse宅男影院,国产精选k频道网络分享系统,k频道贴吧最新地址| 奇米电影网在线观看,奇米777影院在线观看2018,奇米久草视频在线观看,147奇米在线视频| 奇米青青青在线,奇米四色偷偷在线观看,奇米影视第四最新在线,在线视频网站奇米| kpd导航k频道在线,k频道官网快速导航,k频道app网址导航,k频道官网视频在线| k频道最新网止导航,为什么进不去k频道了,k频道kpd33,国产k频道精彩视频| 婷婷五月丁香,久久爱www免费人成,依人青青青免费观看,国内自拍久久久久影院,一本到午夜92版福利| k频道在线导航首页,k频道vip视频免费观看,k频道网,k频道在线网址导航网址| 亚洲 欧美 中文 日韩aV 能免费看Av的网,欧美在线,国产情侣av偷拍视频,超碰免费视频| 奇米网络在线播放,奇米四色狠狠在线影院,奇米av在线线观看视频,奇米第四色起碰在线| 奇米狠狠手机在线影院,奇米影视四色在线播放,奇米姐姐在线影院,奇米777欧美在线视频播放| 奇米四色视频777在线播放,在线奇米,奇米第四色春视频在线,奇米影影视在线观看天天影院| 一级a爰片免费观看,色欲天香天天影视综合,精品在线线观看,色拍拍拍免费视频在线| 亚洲无码,欧美A一片,人人色在线正精品视频正品,456亚洲人成免费视频网站,这里只有精品,黄色视频做爰视频| 奇米视频大香蕉 在线,奇米在线影视播放器,奇米四色在线影视影音先锋迅雷下载,奇米影视77777在线观看| 啪啪网 啪啪啪视频,啪啪网站免费线看,强奸电影高清在线播放,久久爱看免费观看15,五月天情色电影| 777米奇大香蕉在线影院,奇米777在线影视四色,在线观看777奇米视频,奇米在线影视| 2019夜夜干天天天爽,中文字幕乱码 电影在线观看,久久爱电影网,色吊丝中文字幕,成人动漫在线观看| k频道站长推荐,k频道国产分享系统,k频道 站长资源,k频道园产| k频道网络视频共享系统日韩剧情,k频道国产视频播放,k频道在线观看网站,嫩模写真k频道网络视频分享系统| 五月天情色电影1080P,开心网宝贝五月王老撸,五月激网情网开心网,男人到天堂在线,暴力强奷系列在线观看| 亚洲 师生 中文 制服,高清特黄a大片,日韩欧美高清在线一区二区,人人摸人人搞综合色站,青青草资源站| k频道网红在线视频,k频道国产精品在线,k频道国内主播,k频道公告网址导航| 奇米777me.com,888奇米影视四色,777米奇影院狠狠色,奇米影视网址| 任你躁免费精品视频2,任你躁不一样的视觉盛宴,老湿机视频懂得,伊人大香线蕉久久久| 天天色综合区,熟女自拍,狠狠在线插口日日,丁香五月婷婷,999亚洲图片自拍偷欧美,我色我爱色成人,四虎影最新网站2019| 奇米影视影音在线播放器,奇米四色97在线影院,奇米影音在线,奇米在线| 777米奇影在线影院欧美,奇米网在线观看视频在线观看,奇米在线ae86,奇米在线在线影视| 午夜成人免费福在线播放,老司机你懂的在线视频,啪啪啪网站免费,久久爱 午夜影院tv| 伊人大蕉香视频75,freepeople性欧美熟妇,性感美女视频直播,午夜影院app在线观看,性感美女诱惑在线| 奇米视频澳门在线,女av影音先锋奇米影视在线,奇米影视777在线视频8,色哥奇米 在线| 奇米影视888在线影院,奇米在线区,影视先锋奇米在线,奇米影视综合在线视频| 奇米中文字幕影音先锋在线,小色哥奇米在线,奇米影院777在线电影,888米奇网 在线| 最新视频k频道网络视频分享系统,k频道网站下载安装,k频道在线观看好屌色,k频道网络消失的白鸭子|