基于CH376的U盘读写

CH376 对 U 盘文件的读写方式分为两种:扇区模式和字节模式;CH376 对 SD 卡文件的读写方式只
有一种是字节模式。
扇区模式下,以扇区(每扇区通常是 512 字节)为基本单位对 U 盘文件进行读写,所以读写速度
略快,但是通常情况下需要额外的文件数据缓冲区,额外的文件数据缓冲区必须是扇区长度 512 的整
数倍,所以适用于 RAM 多、数据量大、频繁读写数据的单片机系统。扇区读写的子程序主要有扇区读
CH376SecRead 和扇区写 CH376SecWrite。
字节模式下,以字节为基本单位对 U 盘文件进行读写,少则 1 字节,多则 65535 字节,读写速度
略慢,但是不需要额外的文件数据缓冲区,使用方便,适用于 RAM 少(从几字节到几十 K 都可以)、
数据量小或者数据零碎、不经常读写数据的单片机系统。但是,因为闪存只能进行有限次擦写,如果
频繁地向 U 盘写入零碎的数据,可能会缩短 U 盘中闪存的使用寿命。字节读写的子程序主要有字节读

CH376ByteRead 和字节写 CH376ByteWrite 及移动文件指针 CH376ByteLocate。

使用单片机对U盘进行读写可以参考一下方式:

有关 U 盘和 SD 卡文件读写的例子主要由以下文件组成:
① 硬件抽象层,即 I/O 接口子程序,由单片机与 CH376 芯片之间的通讯接口方式决定
HAL.H 硬件抽象层头文件
HAL_BASE.C 硬件抽象层基本子程序,包括延时子程序,需要根据单片机实际速度修改
I/O 接口子程序,必须根据实际的通讯方式选择以下其中一种并按实际硬件和参数进行修改:
PARA_HW.C 是硬件总线 8 位并口连接方式;
PARA_SW.C 是软件模拟 8 位并口连接方式;
SPI_HW.C 是硬件 SPI 接口连接方式;
SPI_SW.C 是软件模拟 SPI 接口连接方式;
UART_HW.C 是硬件异步串口连接方式,支持波特率从 9600bps 到 3Mbps。
② 文件系统层,将常用命令进行打包,提供了常用的文件管理子程序和一些不太常用的子程序
FILE_SYS.H 文件系统层头文件,子程序声明等;
FILE_SYS.C 文件系统层子程序,子程序源程序等,在第 5 节有详细说明。
对于 MCS51 单片机,可以使用针对其优化过的 FILE_SYS_C51.H 和 FILE_SYS_C51.C 文件。
为了节约单片机的程序 ROM 空间和数据 RAM 空间,默认情况下,不太常用的子程序会被禁止掉,
需要使用时,可以在 include “FILE_SYS.H”和 include “FILE_SYS.C”之间定义以下宏:
定义 NO_DEFAULT_CH376_INT 用于禁止默认的 Wait376Interrupt 子程序,禁止后,应用程序
必须自行定义一个同名子程序;
定义 DEF_INT_TIMEOUT 用于设置默认的 Wait376Interrupt 子程序中的等待中断的超时时间/
循环计数值,0 则不检查超时而一直等待;
定义 EN_DIR_CREATE 用于提供新建多级子目录的子程序,默认是不提供;
定义 EN_DISK_QUERY 用于提供磁盘容量查询和剩余空间查询的子程序,默认是不提供;
定义 EN_SECTOR_ACCESS 用于提供以扇区为单位读写文件的子程序,默认是不提供;
定义 EN_LONG_NAME 用于提供支持长文件名的子程序,默认是不提供,使用长文件名子程序必
须先定义全局缓冲区 GlobalBuf,长度不小于 64 字节,可以与其它子程序共用。
有些子程序要求输入文件名参数,有三种:
name 参数是指短文件名,通常是根目录下的文件(含有根目录符)或者当前目录下的文件,
不能含有路径分隔符,总长度不超过 1+8+1+3+1 字节,最末字节为数据 0;
PathName 参数是指全路径的短文件名,包括根目录符、多级子目录及路径分隔符、文件名
或者目录名;
LongName 参数是指长文件名,以 UNICODE 小端顺序编码,以两个 0 字节结束。
③ 辅助调试子程序,用于打印输出调试信息,以便检查程序运行结果,正式产品中必须删除之
DEBUG.H 辅助调试子程序头文件;
DEBUG.C 辅助调试子程序源程序等。
④ 应用程序主程序,针对一些常见的实际应用提供程序范例,分别位于 EXAM??各个子目录中。不同
单片机的 C 语言示例程序基本通用,尤其是 main 主程序基本上适用于所有单片机,只需要修改硬
件 I/O 相关部分,重新编译和链接就可以使用。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nwsuaf_huasir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值