標(biāo)題: 基于AT32F403A開發(fā)板的FLASH存儲(chǔ)圖片 [打印本頁]
作者: jinglixixi 時(shí)間: 2020-10-24 12:59
標(biāo)題: 基于AT32F403A開發(fā)板的FLASH存儲(chǔ)圖片
本帖最后由 jinglixixi 于 2020-10-24 18:31 編輯
在AT32F403A的開發(fā)板上,為增強(qiáng)存儲(chǔ)的能力,特意配置了EN25QH128這樣一個(gè)輔助存儲(chǔ)器,作為第二存儲(chǔ)器,并可參與編程,其接口如圖1所示。
相應(yīng)引腳的連接關(guān)系為:
SPIF_SCK : PB1
SPIF_CS : PA8
SPIF_TX : PB10= MOSI
SPIF_RX : PB11= MISO
SPIF_HOLD_N : PB6
SPIF_WP_N : PB7
1.jpg (54.23 KB, 下載次數(shù): 64)
下載附件
2020-10-24 12:56 上傳
圖1W25Q128接口
有了EN25QH128,就不再為存儲(chǔ)器容量小二發(fā)愁了,但新的問題也提了出來,該如何消化它那,白放在那豈不是浪費(fèi)?
要問當(dāng)今啥最費(fèi)存儲(chǔ)容量,除了強(qiáng)大規(guī)模的程序,就數(shù)圖庫和字庫,字庫還好說,畢竟誰也不會(huì)天天換字庫,相對(duì)講它是固定的。但圖庫就不同了,千圖千樣,非常好存儲(chǔ)容量。所以就用EN25QH128
作個(gè)數(shù)碼相框吧。
依EN25QH128的存儲(chǔ)容量為128Mbit,即16MB。若以320*240像素的顯示屏來顯示一張圖片,則需要320*240*2=153600B,也就是說它能存放6MB/153600B=40張圖片。
1. EN25QH128的讀寫
要實(shí)現(xiàn)數(shù)碼相框功能,首先就要從EN25QH128的讀寫開始。
在廠家的例程中,就有EN25QH128讀寫的程序,只不過粗糙了些,被寫成了一個(gè)點(diǎn)燈程序,即讀寫一致就點(diǎn)亮指定的LED,缺少一種應(yīng)用感。
但提供的這個(gè)EN25QH128讀寫基礎(chǔ)是十分重要的。
該例程的執(zhí)行結(jié)果如圖2和圖3所示,簡不簡單,驚不驚奇!
2.jpg (119.77 KB, 下載次數(shù): 66)
下載附件
2020-10-24 12:56 上傳
圖2 串口的顯示結(jié)果
3.jpg (111.05 KB, 下載次數(shù): 52)
下載附件
2020-10-24 12:56 上傳
圖3 LED燈的顯示效果
為了進(jìn)行透明觀察,特將數(shù)據(jù)寫入過程添加了串口輸出處理,其效果如圖4所示。
4.jpg (265.1 KB, 下載次數(shù): 54)
下載附件
2020-10-24 12:56 上傳
圖4按地址顯示數(shù)據(jù)
2.圖片的存儲(chǔ)
要建立圖庫,首先要將圖片存放到EN25QH128中,方法有2種,一種是通過數(shù)組調(diào)用內(nèi)存來完成,具有操作簡單的特點(diǎn);另一種是使用串行通訊,將圖片文件分批次的傳入并進(jìn)行相應(yīng)處理。
這里選擇前者,編寫程序的工作相對(duì)較小,但不足是需要多次寫入才能完成。
圖片存儲(chǔ)的主要步驟為:
1)整體尺寸一幅圖片的存儲(chǔ)區(qū),因?yàn)镋N25QH128是按頁進(jìn)行擦除的,每頁為4096字節(jié)。
一幅圖片要占20頁,200*200*2/4096=19頁,故擦除程序如下:
5.jpg (130.38 KB, 下載次數(shù): 42)
下載附件
2020-10-24 12:56 上傳
2)將數(shù)組中的數(shù)據(jù)轉(zhuǎn)存到FLASH
圖片轉(zhuǎn)存的程序?yàn)椋?/div>
6.jpg (141.87 KB, 下載次數(shù): 62)
下載附件
2020-10-24 12:56 上傳
3)TFT屏驅(qū)動(dòng)
TFT顯示屏所占用的引腳為:
CS:PA5
REST:PA6
DC:PA7
SDI: PC7
SCK: PA9
LED: PB6
TFT屏驅(qū)動(dòng)的測試效果如圖5所示
8.jpg (114.52 KB, 下載次數(shù): 65)
下載附件
2020-10-24 12:56 上傳
圖5 測試TFT屏
4)模擬讀取FLASH顯示圖片
為保證按讀取FLASH數(shù)據(jù)顯示圖片的正確性,先按讀取FLASH的方式改寫了原圖片顯示函數(shù),其驗(yàn)證結(jié)果如圖6所示。
9.jpg (111.44 KB, 下載次數(shù): 65)
下載附件
2020-10-24 12:56 上傳
圖6 以讀取FLASH方式顯示圖片
5)讀取FLASH顯示圖片
顯示一頁FLASH數(shù)據(jù)的程序如下:
10.jpg (71.22 KB, 下載次數(shù): 66)
下載附件
2020-10-24 12:56 上傳
11.jpg (99.06 KB, 下載次數(shù): 49)
下載附件
2020-10-24 12:56 上傳
圖7 圖片再現(xiàn)
顯示單張圖片的測試主程序如下:
- int main(void)
- {
- AT32_Board_Init();
- AT32_TFT_Init();
- AT32_key_Init();
- Delay_ms(200);
- TFT_Init();
- LCD_Clear(RED);
- BACK_COLOR=RED;
- POINT_COLOR=WHITE;
- while(GPIO_ReadInputDataBit(GPIOA,
- GPIO_Pins_0)==0);
- LCD_Clear(WHITE);
- show_imageh(10,300,1); //200*200 * 1
- UART_Print_Init(115200);
- LCD_ShowString(10,10,"ext.flash test");
- SPIM_test();
- LCD_ShowString(10,60,"test SPIM success!");
- while(1);
- }
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |