本帖最后由 jinglixixi 于 2020-7-5 08:07 編輯
在官網的例程中,提供了W25D16讀寫的程序,掌握它的使用可用于中文字庫的構建。 在功能測試時發現其輸出內容如圖1所示,并未能完成正確的讀寫操作。
1.png (16.71 KB, 下載次數: 126)
下載附件
2020-7-5 08:01 上傳
圖1 測試輸出內容
后經原理圖的觀察才發現,W25D16的片選端是接到SW2上,出廠時是置于斷開狀態,故影響正常讀寫。
2.png (24.54 KB, 下載次數: 121)
下載附件
2020-7-5 08:01 上傳
圖2 W25D16讀寫原理圖
將SW2置到連接狀態后,即可見到正確的讀寫效果,如圖3和圖4所示。
3.png (18.03 KB, 下載次數: 151)
下載附件
2020-7-5 08:01 上傳
圖3 讀寫效果
4.png (17.96 KB, 下載次數: 104)
下載附件
2020-7-5 08:01 上傳
圖4 讀寫效果
2. 中文字庫的構建 對于普通的顯示屏顯然是不提供中文字庫的,因此要顯示中文就必須自行構建一個小字庫來解決問題。 由于開發板上配置了W25D16,就可以用它來存放中文字庫。 在中文字庫的提取方面,可以用3310液晶顯示屏漢字提取程序來實現,如圖5所示。
5.png (46.2 KB, 下載次數: 132)
下載附件
2020-7-5 08:01 上傳
圖5 漢字提取
在字模數據量較少時,可使用內存來存放字模,進而轉儲到W25D16。而對于字模數據量較大的情況,則需要分批次來轉存或采用通訊傳輸文件的方式來轉儲。 以內存轉儲為例,其方法是: 1)將字模存入數值 unsigned char tmp1[256]={ 0x00,0x00,0xE0,0x9C,0x84,0x84,0x84,0xF4,0x82,0x82,0x83,0x82,0x80,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x06,0x40,0x80,0x7F,0x00,0x00,0x02,0x04,0x08,0x30,0x00,0x00, ... ... 0x10,0x10,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0xFF,0x10,0x10,0x11,0x16,0x10,0x00,0x00,0x20,0x60,0x20,0x3F,0x10,0x10,0x10,0x00,0x03,0x0C,0x10,0x20,0x40,0xF8,0x00, }; 2)使用SPIM_PageProgram(0,tmp1,256)語句執行轉儲 3)使用SPIM_PageRead(0,rxtmpdata,256) 語句讀取,并通過如下語句進行驗證,其效果如圖6所示。 for(i=0;i<256;i++) { printf("rx[%d]=0x%x\r\n",i,rxtmpdata); }
6.png (19.12 KB, 下載次數: 123)
下載附件
2020-7-5 08:01 上傳
圖6 驗證效果
4)在OLED 屏上加以驗證,其效果如圖7所示
7.png (211.57 KB, 下載次數: 134)
下載附件
2020-7-5 08:01 上傳
圖7 顯示效果 |