CH32V208繼承了沁恆產品一貫的傳統,即U盤的讀寫功能。這使得盡管CH32V208的閃存要比CH32V307的小一倍,但有了U盤讀寫功能的支持就可有效地緩解用戶對存儲空間的需求。它除了支持U盤的讀取,還支持對CS SD NAND (貼片式TF卡/SD卡) 這類器件的使用,將看圖8所示
圖1是U盤讀寫功能的測試條件及構成,在使用廠家例程的情況下其測試結果如圖2所示,由此可說明其讀寫功能正常。
圖1 測試條件
圖2 測試結果
圖3是進行測試的文本文件及其內容,由于文件前段所存放的是單字節的字符信息,故可以確保顯示與存儲內容的一致性,若是存放漢字信息會因讀取字節數的問題而出現異常。
圖3 測試文件
為了實現數碼相框的功能,實現在U盤讀寫功能的基礎上為其添加了TFT屏的顯示功能,其顯示讀取數據的效果如圖4所示。
圖4 顯示測試
隨后,可將處理過的圖像數據存放到文件中以供讀取和圖像再現。
在圖像再現的過程中,其關鍵的地方就是按圖像文件的大小來限制讀取數據的數量,并將2個字節的數據拼接成一個16位的色彩數據從而在屏幕上繪制出一個彩色點。
通過讀取U盤的圖像數據文件,來就可實現圖像再的現。在具有多個圖像數據文件的情況下,依順序進行顯示就可形成了一個具有圖片瀏覽效果的數碼相框,其顯示效果如圖5和圖6所示。
圖5 顯示效果
圖6 讀取狀態
通過讀取U盤圖像數據實現圖像再現的函數為:
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電子時鐘 & 環境狀態 if(w==8) { w=0; while(Bit_SET==GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)); //顯示:RTC電子時鐘 & 環境狀態 } }Delay_Ms(500); } }
實現數碼相框功能的主程序為:
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電子時鐘及環境狀態(如使用BH1750進行光照強度檢測等)的顯示功能等,見圖7所示。
在實現RTC電子時鐘功能時,需在文件ch32v20x_it.c中添加以下函數內容:
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中添加以下函數:
u8 RTC_Get(void);
在文件Udisk_Func_BasicOp.c中添加以下函數內容:extern u8 RTC_Get(void);
extern vu8 houra;
extern vu8 mina;
extern vu8 seca;
圖7 電子時鐘測試
在圖片顯示過程中,實現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盤的讀取,還支持對CS SD NAND (貼片式TF卡/SD卡) 這類器件的使用,將圖8多功能測試所示。
圖8
圖9
CS SD NAND 不用寫驅動程序自帶壞塊管理的NAND Flash(貼片式TF卡),尺寸小巧,簡單易用,兼容性強,穩定可靠,固件可定制,LGA-8封裝,標準SDIO接口,兼容SPI/SD接口,兼容各大MCU平臺,可替代普通TF卡/SD卡,尺寸6x8mm毫米,內置SLC晶圓擦寫壽命10萬次,通過1萬次隨機掉電測試耐高低溫,支持工業級溫度-40°~+85°,機貼手貼都非常方便,速度級別Class10(讀取速度23.5MB/S寫入速度12.3MB/S)標準的SD 2.0協議使得用戶可以直接移植標準驅動代碼,省去了驅動代碼編程環節。支持TF卡啟動的SOC都可以用SD NAND,提供STM32參考例程及原廠技術支持,主流容量:128MB/512MB/2GB/4GB/8GB,比TF卡穩定,樣品可找雷龍發展申請免費樣品測試。
-
NAND
+關注
關注
16文章
1690瀏覽量
136387 -
存儲
+關注
關注
13文章
4353瀏覽量
86107 -
STM32
+關注
關注
2271文章
10923瀏覽量
357246 -
flash內存
+關注
關注
0文章
5瀏覽量
2144
發布評論請先 登錄
相關推薦
評論