• 【沁恒 CH32V208 开发板免费试用】+ U盘/ SD NAND读写与多功能数码相框


    CH32V208继承了沁恆产品一贯的传统,即U盘的读写功能。这使得尽管CH32V208的闪存要比CH32V307的小一倍,但有了U盘读写功能的支持就可有效地缓解用户对存储空间的需求。它除了支持U盘的读取,还支持对CS SD NAND (贴片式TF卡/SD卡) 这类器件的使用,将看图8所示

    图1是U盘读写功能的测试条件及构成,在使用厂家例程的情况下其测试结果如图2所示,由此可说明其读写功能正常。

    image.png

    image.png

    图1 测试条件

    image.png

    图2 测试结果

    图3是进行测试的文本文件及其内容,由于文件前段所存放的是单字节的字符信息,故可以确保显示与存储内容的一致性,若是存放汉字信息会因读取字节数的问题而出现异常。

    image.png

    图3 测试文件

    为了实现数码相框的功能,实现在U盘读写功能的基础上为其添加了TFT屏的显示功能,其显示读取数据的效果如图4所示。

    image.png

    图4 显示测试

    随后,可将处理过的图像数据存放到文件中以供读取和图像再现。

    在图像再现的过程中,其关键的地方就是按图像文件的大小来限制读取数据的数量,并将2个字节的数据拼接成一个16位的色彩数据从而在屏幕上绘制出一个彩色点。

    通过读取U盘的图像数据文件,来就可实现图像再的现。在具有多个图像数据文件的情况下,依顺序进行显示就可形成了一个具有图片浏览效果的数码相框,其显示效果如图5和图6所示。

    image.png

    图5 显示效果

    image.png

    图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;

    image.png

    图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多功能测试所示。

    image.png

    图8

    SD NAND,贴片式TF卡,贴片式SD卡,北京君正,nor flash,存储,芯片,主控,小尺寸emmc,大容量SLC Nand,语音芯片,语音识别,语音控制,语音模块,离线语音

    图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卡稳定,样品可找雷龙发展申请免费样品测试。

  • 相关阅读:
    Java设计模式 _行为型模式_空对象模式
    Hutool 工具类之日期时间工具-DateUtil mysql日期字段
    区块链原理及Fabric学习笔记
    Python+Numpy+CV2/GDAL实现对图像的Wallis匀色
    Java:实现DoubleHashing双哈希测试算法(附完整源码)
    聊聊单点登录(SSO)中的CAS认证
    Java Class09
    SpringBoot 入门
    前端provide 与 inject 的用法,作用
    【计算机网络(1)】计算机网络体系结构1:计算机网络概述
  • 原文地址:https://blog.csdn.net/qq_42688853/article/details/134329063