CH32V208繼承了沁恆產(chǎn)品一貫的傳統(tǒng),即U盤的讀寫功能。這使得盡管CH32V208的閃存要比CH32V307的小一倍,但有了U盤讀寫功能的支持就可有效地緩解用戶對(duì)存儲(chǔ)空間的需求。它除了支持U盤的讀取,還支持對(duì)CS SD NAND (貼片式TF卡/SD卡) 這類器件的使用,將看圖8所示
圖1是U盤讀寫功能的測(cè)試條件及構(gòu)成,在使用廠家例程的情況下其測(cè)試結(jié)果如圖2所示,由此可說明其讀寫功能正常。
圖1 測(cè)試條件
圖2 測(cè)試結(jié)果
圖3是進(jìn)行測(cè)試的文本文件及其內(nèi)容,由于文件前段所存放的是單字節(jié)的字符信息,故可以確保顯示與存儲(chǔ)內(nèi)容的一致性,若是存放漢字信息會(huì)因讀取字節(jié)數(shù)的問題而出現(xiàn)異常。
圖3 測(cè)試文件
為了實(shí)現(xiàn)數(shù)碼相框的功能,實(shí)現(xiàn)在U盤讀寫功能的基礎(chǔ)上為其添加了TFT屏的顯示功能,其顯示讀取數(shù)據(jù)的效果如圖4所示。
圖4 顯示測(cè)試
隨后,可將處理過的圖像數(shù)據(jù)存放到文件中以供讀取和圖像再現(xiàn)。
在圖像再現(xiàn)的過程中,其關(guān)鍵的地方就是按圖像文件的大小來限制讀取數(shù)據(jù)的數(shù)量,并將2個(gè)字節(jié)的數(shù)據(jù)拼接成一個(gè)16位的色彩數(shù)據(jù)從而在屏幕上繪制出一個(gè)彩色點(diǎn)。
通過讀取U盤的圖像數(shù)據(jù)文件,來就可實(shí)現(xiàn)圖像再的現(xiàn)。在具有多個(gè)圖像數(shù)據(jù)文件的情況下,依順序進(jìn)行顯示就可形成了一個(gè)具有圖片瀏覽效果的數(shù)碼相框,其顯示效果如圖5和圖6所示。
圖5 顯示效果
圖6 讀取狀態(tài)
通過讀取U盤圖像數(shù)據(jù)實(shí)現(xiàn)圖像再現(xiàn)的函數(shù)為:
void UDisk_PHOTO( void ){uint8_t ret;uint8_t i,t;uint16_t TotalCount = 0;uint8_t w=0;while(1) {Address_set(0+w*20,0+w*20,159+w*20,79+w*20);if(w==0) strcpy( (char *)mCmdParam.Open.mPathName,"/PHOTO/HKTK.BIN" );if(w==1) strcpy( (char*)mCmdParam.Open.mPathName, "/PHOTO/FJAA.BIN" );if(w==2) strcpy( (char*)mCmdParam.Open.mPathName, "/PHOTO/HYAA.BIN" ); ...if(w==7) strcpy( (char*)mCmdParam.Open.mPathName, "/PHOTO/HKTK.BIN" ); ret= CHRV3FileOpen( );if ( ret == ERR_MISS_DIR || ret ==ERR_MISS_FILE ) {LCD_ShowString(20,10,"NOFIND ... "); }else { TotalCount = N;Delay_Ms(10);while ( TotalCount ) {if ( TotalCount >(MAX_PATH_LEN-1) ) { t = MAX_PATH_LEN-1; }else { t = TotalCount; } ByteCount = t; ByteBuffer= &Com_Buffer[0]; ret = CHRV3ByteRead( ); TotalCount -= ByteCount;for ( i=0; i!= ByteCount; i++ ) {LCD_WR_DATA8(ByteBuffer[i]); }if (ByteCount < t ) {LCD_WR_DATA8(ByteBuffer[i]);break; } } i = CHRV3FileClose( ); mStopIfError( i ); } w++;//顯示:RTC電子時(shí)鐘 & 環(huán)境狀態(tài) if(w==8) { w=0; while(Bit_SET==GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)); //顯示:RTC電子時(shí)鐘 & 環(huán)境狀態(tài) } }Delay_Ms(500); } }
實(shí)現(xiàn)數(shù)碼相框功能的主程序?yàn)椋?/span>
int main(void){ Delay_Init( ); Udisk_USBH_Initialization( ); key_INIT(); App_TFTInit(); tft_Init(); LCD_Clear(RED); BACK_COLOR=RED; POINT_COLOR=YELLOW; LCD_ShowString(20,10," CH32V208");while(1) { UDisk_USBH_ByteOperation( ); } }
另外,還可添加RTC電子時(shí)鐘及環(huán)境狀態(tài)(如使用BH1750進(jìn)行光照強(qiáng)度檢測(cè)等)的顯示功能等,見圖7所示。
在實(shí)現(xiàn)RTC電子時(shí)鐘功能時(shí),需在文件ch32v20x_it.c中添加以下函數(shù)內(nèi)容:
void RTC_IRQHandler(void) { if (RTC_GetITStatus(RTC_IT_SEC) != RESET) {RTC_Get(); } if(RTC_GetITStatus(RTC_IT_ALR)!= RESET) {RTC_ClearITPendingBit(RTC_IT_ALR);RTC_Get(); } RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW); RTC_WaitForLastTask(); }
并在文件ch32v20x_it.h中添加以下函數(shù):
u8 RTC_Get(void);
在文件Udisk_Func_BasicOp.c中添加以下函數(shù)內(nèi)容:extern u8 RTC_Get(void);
extern vu8 houra;
extern vu8 mina;
extern vu8 seca;
圖7 電子時(shí)鐘測(cè)試
在圖片顯示過程中,實(shí)現(xiàn)RTC顯示的語句為:
RTC_Get();
LCD_ShowNum(240,60,houra,2);
LCD_ShowNum(264,60,mina,2);
LCD_ShowNum(288,60,seca,2);
Delay_Ms(500);
此外,它除了支持U盤的讀取,還支持對(duì)CS SD NAND (貼片式TF卡/SD卡) 這類器件的使用,將圖8多功能測(cè)試所示。
圖8
圖9
CS SD NAND 不用寫驅(qū)動(dòng)程序自帶壞塊管理的NAND Flash(貼片式TF卡),尺寸小巧,簡(jiǎn)單易用,兼容性強(qiáng),穩(wěn)定可靠,固件可定制,LGA-8封裝,標(biāo)準(zhǔn)SDIO接口,兼容SPI/SD接口,兼容各大MCU平臺(tái),可替代普通TF卡/SD卡,尺寸6x8mm毫米,內(nèi)置SLC晶圓擦寫壽命10萬次,通過1萬次隨機(jī)掉電測(cè)試耐高低溫,支持工業(yè)級(jí)溫度-40°~+85°,機(jī)貼手貼都非常方便,速度級(jí)別Class10(讀取速度23.5MB/S寫入速度12.3MB/S)標(biāo)準(zhǔn)的SD 2.0協(xié)議使得用戶可以直接移植標(biāo)準(zhǔn)驅(qū)動(dòng)代碼,省去了驅(qū)動(dòng)代碼編程環(huán)節(jié)。支持TF卡啟動(dòng)的SOC都可以用SD NAND,提供STM32參考例程及原廠技術(shù)支持,主流容量:128MB/512MB/2GB/4GB/8GB,比TF卡穩(wěn)定,樣品可找雷龍發(fā)展申請(qǐng)免費(fèi)樣品測(cè)試。
-
NAND
+關(guān)注
關(guān)注
16文章
1681瀏覽量
136121 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4296瀏覽量
85800 -
STM32
+關(guān)注
關(guān)注
2270文章
10895瀏覽量
355744 -
flash內(nèi)存
+關(guān)注
關(guān)注
0文章
5瀏覽量
2127
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論