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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4043|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

對“用FSMC驅(qū)動(dòng)TFT-LCD”的爛筆頭

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
前幾天在那個(gè)寶上買的STM32F4小板子到了,板子上帶一塊3.2寸320*240的電阻屏。然后就想著把正點(diǎn)原子的LCD驅(qū)動(dòng)和uc/GUI移植到這個(gè)小板子上,然后將之前不甚明白的FSMC驅(qū)動(dòng)TFT-LCD的知識(shí)全面學(xué)習(xí)一下。


圖為我的小板,本人什么都喜歡mini的
之所以不用GPIO口直接驅(qū)動(dòng)液晶,是因?yàn)檫@種方法速度太慢,而FSMC是用來外接各種存儲(chǔ)芯片的,所以其數(shù)據(jù)通信速度是比普通GPIO口要快得多的。TFT-LCD 驅(qū)動(dòng)芯片的讀寫時(shí)序和SRAM的差不多,所以就可以用FSMC四塊中的SRAM塊來驅(qū)動(dòng)LCD。SRAM有數(shù)據(jù)線和地址線,所以FSMC跟它匹配同樣也有數(shù)據(jù)線和地址線,而LCD數(shù)據(jù)線跟地址線共用,通信時(shí)用RS端來區(qū)分線上是數(shù)據(jù)還是指令,RS高是數(shù)據(jù),RS低是指令。
其實(shí)這中間一開始最不理解就是與LCD的RS引腳相關(guān)的東西,那時(shí)候也不知道咋回事一直以為FSMC的地址線和數(shù)據(jù)線是共用的,導(dǎo)致我一直沒明白怎么回事,昨天一看正點(diǎn)原子的探索者原理圖才發(fā)現(xiàn)FSMC有數(shù)據(jù)線還有地址線,是分開的。驅(qū)動(dòng)液晶的時(shí)候,數(shù)據(jù)線接液晶的并口,RS接到了FSMC的某個(gè)地址引腳。具體為什么這樣接,也是我想著重記錄的。

首先,F(xiàn)SMC是什么,F(xiàn)SMC我自己的理解就是,一個(gè)銜接CPU與外部存儲(chǔ)的橋梁,它的功能呢就是你往相應(yīng)的地址里寫數(shù)據(jù)時(shí)候,你不需用軟件來模擬外部存儲(chǔ)芯片的讀寫時(shí)序,而只需配置好FSMC相關(guān)的時(shí)序寄存器,配置好相關(guān)寄存器之后,你只管往相應(yīng)存儲(chǔ)塊中的地址里寫數(shù)據(jù)就可以了。最直觀的解釋就看上邊正點(diǎn)原子的一小段代碼,代碼中定義了一個(gè)結(jié)構(gòu)體,然后強(qiáng)制性的把結(jié)構(gòu)體的起始地址設(shè)在了0x6C000000 | 0x0000007E處。那么這個(gè)0x6C000000 | 0x0000007E地址是啥意思呢,其中0x6C000000是FSMC存儲(chǔ)塊1的區(qū)4起始地址,0x6C00007E為存儲(chǔ)塊1區(qū)4內(nèi)的某個(gè)地址,你給LCD_REG賦值,就是往外部存儲(chǔ)設(shè)備中的0x6C00007E地址處寫數(shù)據(jù),給LCD_RAM賦值,就是往0x6C00007F地址處寫數(shù)據(jù)。這里是結(jié)構(gòu)體,當(dāng)然也可以是一個(gè)巨大的數(shù)組或其他數(shù)據(jù)類型。當(dāng)然了,F(xiàn)SMC只是一個(gè)數(shù)據(jù)銜接部件,真正的存儲(chǔ)芯片是需要通過引腳連接在FSMC的地址和數(shù)據(jù)引腳上的。存儲(chǔ)芯片在指定地址寫入數(shù)據(jù)的時(shí)候需要地址線來指定要寫數(shù)據(jù)往哪個(gè)地址。也就是說上例中,往0x6C00007E中寫數(shù)據(jù)的時(shí)候,地址線的低8位(0x7E)就是0111 1110。這就是FSMC的工作機(jī)制。
說完FSMC,下面說如何用FSMC的某跟地址線控制LCD的RS端。以RS連接到A6為例,TFT-LCD的數(shù)據(jù)是16位的,即讀寫一次數(shù)據(jù)為兩個(gè)字節(jié)按字節(jié)編址的話就是所有的地址都是偶地址,LCD的顯示RAM編址確實(shí)是按兩個(gè)字節(jié)編址的(即stm32中AHB總線上的地址,總是FSMC地址線上地址的2倍,即左移一位)。具體怎么個(gè)意思,就如下圖(朕的御用畫圖軟件Altium Designer16繪制)所示了:

這樣的話FSMC地址線上的0000 0001就代表AHB(FSMC是接到AHB總線上的)總線上的0000 0010,FSMC地址線上的0000 0010就代表AHB總線上的0000 0100,也就是說你在程序中寫的這個(gè)地址右移一位才是FSMC地址線引腳上所表現(xiàn)出來的地址狀態(tài)。造成這種現(xiàn)象的原因就是因?yàn)樵谂渲肍SMC傳輸數(shù)據(jù)位寬時(shí)設(shè)置成了16位。向LCD傳輸數(shù)據(jù)一次都是兩個(gè)字節(jié)。所以對應(yīng)上例,往地址0x6C00007E寫數(shù)據(jù),地址線的低8位并不是0111 1110,而是0011 1111。然后假如RS端連接在地址線A6端,那么也就是讓A6端的高低來決定數(shù)據(jù)線上傳輸?shù)氖菙?shù)據(jù)還是命令。上邊說了,當(dāng)往0x6C00007E地址(LCD_REG)寫的時(shí)候,F(xiàn)SMC地址線低8位是0011 1111,A6(紅色標(biāo)出)為低電平,這時(shí)數(shù)據(jù)線上的是命令,所以寫命令函數(shù)就是直接往LCD_REG寫就行了,實(shí)際上就是為了讓RS接低電平,當(dāng)往0x6C000080(低8位1000 0000)地址(LCD_RAM)中寫數(shù)據(jù)時(shí),F(xiàn)SMC地址線低8位是01000000,A6(紅色標(biāo)出)為高電平,這時(shí)數(shù)據(jù)線上是數(shù)據(jù),所以寫數(shù)據(jù)就直接往LCD_RAM中寫,實(shí)際是為了讓RS接高電平。
當(dāng)然了,這里RS接的是A6,其他場合,RS可能接的是其他地址線,只需要根據(jù)上邊的規(guī)律技巧來改變“0x6C000000 | 0x0000007E”中后者就可以了。這里這個(gè)RS的接法和用法很巧妙,摘自正點(diǎn)原子。

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产视频在线观看一区二区三区 | 国精产品一品二品国精在线观看 | 国产成人免费视频网站高清观看视频 | 男人午夜视频 | 日本一区二区三区在线观看 | 成人毛片一区二区三区 | 欧美xxxⅹ性欧美大片 | 欧美日韩精品影院 | 国产农村一级片 | 久久久精品 | 很黄很污的网站 | 台湾佬伊人| 91在线免费视频 | 精品电影 | 久久人人爽人人爽人人片av免费 | 中文在线一区 | 欧美 日韩 中文 | 不卡在线视频 | 羞羞视频免费观看入口 | aacc678成免费人电影网站 | 欧美精品久久 | 国产精品视频二区三区 | 无吗视频| 欧美一级淫片免费视频黄 | 日韩在线免费视频 | 久久九九免费 | 99国产精品久久久 | 在线观看国产视频 | 视频在线h| 国产欧美精品一区二区 | 国产91亚洲精品 | 国产日韩精品一区二区三区 | 殴美成人在线视频 | 亚洲欧美综合精品另类天天更新 | 亚洲国产一区视频 | 国产精品一区在线观看 | 亚洲午夜久久久 | 欧美精品在线观看 | 久久国产精品-国产精品 | 99久久99久久精品国产片果冰 | 成人福利电影 |