⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 沁恒电子的CH374芯片程序和列子,包插51、AVR等平台
💻 TXT
字号:
有关CH374的U盘文件级子程序库的接口说明以及例子程序
请参考CH374评估板资料CH374/EVT/PUB/CH374EVT.PDF和CH374HF.PDF
网上可供下载的压缩包文件是CH374EVT.ZIP

*****************************************************************************************

CH374LIB V1.5 最新更新 2008.01.14

一、修正BUG
 1、新批号CH374对部分U盘的兼容性问题

*****************************************************************************************

CH374LIB V1.4 最新更新 2007.09.20

一、修正BUG
 1、U盘读写操作出错重试仍然失败才能自动关闭文件
 2、修正扇区大小不是512字节时的写文件操作的簇分配问题
二、更新和增加
 1、支持内置ROOT-HUB
三、功能调整
 1、修改查询磁盘信息CH374DiskQuery,去除其包含的CH374DiskSize功能,使之只查询剩余容量,
    如果需要像原版本程序一样同时查询U盘物理容量,那么要另外调用CH374DiskSize,即修改后,
    如果先调用CH374DiskSize,再调用CH374DiskQuery,就等同于原版本的CH374DiskQuery,
    也就是说,修改后的CH374DiskQuery程序调用后不修改mCmdParam.DiskSize.mDiskSizeSec

*****************************************************************************************

CH374LIB V1.3 最新更新 2007.06.18

一、修正BUG
 1、CH374SaveVariable恢复时的输入参数必须区分单个U盘或者多个U盘(含HUB)
 2、修正部分32位单片机在FAT12文件系统下的对齐存取
 3、错误重试
二、更新和增加
 1、简单优化U盘枚举过程

*****************************************************************************************

CH374LIB V1.2 最新更新 2006.09.21

一、更新和增加
 1、用磁盘缓冲区指针pDISK_BASE_BUF代替缓冲区DISK_BASE_BUF,便于缓冲区合用,由.H文件初始化
 2、支持任意的扇区大小,通常是512字节,有个别U盘可能是2K字节(支持这些U盘前请分配足够缓冲区)
 3、修改首扇区DBR/MBR的识别方法
二、功能调整
 1、由于磁盘缓冲区指针pDISK_BASE_BUF本身不分配内存,所以主程序应该调用CH374LibInit初始化,
    使该指针指向一个容量足够大并且实际可用的缓冲区,也可定义DISK_BASE_BUF_LEN由.H文件分配
 2、市面上的大多数U盘,其扇区大小为512字节,除此之外也有一部分U盘的扇区大小为2K字节或更大,
    对于从旧版本升级到本新版本程序的应用,如果像以前那样仍然只分配512字节的磁盘缓冲区,
    那么请参考新版本例子在CH374DiskReady成功后检查CH374vSectorSize是否大于实际缓冲区大小,
    如果大于则应将该U盘视为不可支持的U盘,否则在调用CH374FileOpen等程序时会导致缓冲区溢出,
    如果参考新版本例子分配足够大小(2K甚至4K)的磁盘缓冲区,那么可以支持各种扇区大小的U盘

*****************************************************************************************

CH374LIB V1.1 最新更新 2006.09.01

一、修正BUG
 1、高速单片机字节到扇区移位优化错误
二、更新和增加
 1、支持内置USB-HUB的复合U盘,支持外接USB-HUB之后再连接U盘,
    增加全局变量CH374vHubPortCount指示当前HUB上的端口数,为0则没有HUB
 2、子程序内部去掉CH374FileEnumer和CH374FileQuery以及CH374Reset三个子程序,节约内部代码,
    由.H文件提供可由条件编译控制的外部子程序实现向前兼容
 3、为外部子程序CH374_READ_BLOCK64和CH374_WRITE_BLOCK64增加一个参数mAddr作为起始地址
 4、关闭外部块接口子程序,去掉.H文件中的xWriteToExtBuf( )和xReadFromExtBuf( ),
    实际应用可以在外部子程序CH374_READ_BLOCK64和CH374_WRITE_BLOCK64中实现类似功能
 5、去掉CH374LibConfig中的数据复制方式的控制位,去掉.H文件中的相关定义,
    对于MCS51单片机,可以通过链接三种复制方式I/O库中的一种选择复制方式和速度
 6、将单OBJ文件改为多OBJ文件,便于在链接时节约代码量

*****************************************************************************************
CH374LIB V1.0 最新更新 2006.07.20

一、更新和增加
 1、以CH375LIB的V2.9版本为基础形成CH374LIB的V1.0版本
 2、在.H文件中去掉了EN_CH374LIB_MORE条件编译选项,直接置为允许
 3、在CH374FileOpen子程序中增加了回调子程序xFileNameEnumer( ),用于在枚举到文件时调用,
    使用CH374vFileSize作为枚举序号,并且其值为0xFFFFFFFF,参考EXAM13可加快搜索速度
 4、增加了外部子程序xDelayAfterWrite( ),用于根据实际需要在U盘写操作后延时
 5、修改CH374vDiskRoot始终为32位变量,对于MCS51单片机,修改CH374vDiskRoot为外部变量
    修改CH374vFdtLba为外部变量,修改CH374IntStatus始终为内部变量
 6、增加了备份/恢复子程序库的变量的子程序CH374SaveVariable( ),
    用于子程序库在多个CH374芯片之间进行切换,以及外接USB-HUB后在多个U盘之间进行切换
 7、增加了延时指定毫秒的子程序CH374DelaymS( ),用于延时1到255毫秒
 8、增加了USB基本传输事务的子程序CH374HostTransact( ),用于实现基本的USB传输
 9、增加了执行USB控制传输的子程序CH374CtrlTransfer( ),用于执行控制传输
 10、查询U盘是否连接或断开,只能使用CH374DiskConnect子程序或者自行编写的外部子程序
 11、预留外部扇区接口,只读版本支持xDiskSectorAccess( )用于外部以扇区为单位存取磁盘

*****************************************************************************************

附录A:关于CH374子程序库与CH375子程序库的区别
 1、硬件端口或者硬件接口子程序名称不同,
    对于总线I/O操作,CH374和CH375都只占用两个地址位,但名称及用途不同,
        高地址位对CH374是索引地址端口,用于设置起始地址,对CH375是命令端口,用于发出命令码,
        CH374端口名是CH374_IDX_PORT/CH374_DAT_PORT,CH375端口名是CH375_CMD_PORT/CH375_DAT_PORT,
    对于非总线I/O操作,前者是CH374_READ_REGISTER、CH374_WRITE_REGISTER、CH374_WRITE_BLOCK_C、
        CH374_READ_BLOCK、CH374_WRITE_BLOCK、CH374_READ_BLOCK64、CH374_WRITE_BLOCK64,
        后者是xWriteCH375Cmd、xWriteCH375Data、xReadCH375Data
 2、各变量、各子程序名称不同,前者是CH374开头,后者是CH375开头
 3、CH374只能以CH374DiskConnect子程序查询U盘是否连接,而CH375除此之外还可以用xQueryInterrupt
 4、一些基本功能例如BulkOnly协议及基本SCSI命令等,CH374是以软件实现,而CH375是以硬件实现,
    所以对于CH375用一个命令就能完成的操作,对于CH374可能要执行一个子程序,
    所以CH374子程序开放了两个新的API:CH374HostTransact( )和CH374CtrlTransfer( )
 5、对于速度高于4MIPS的单片机,CH374子程序库略快,对于速度低于4MIPS的单片机,CH375子程序库略快
 6、现有的CH375应用程序只需做如下改动即可用于CH374
  1)、硬件上,如果是并口连接,那么完全不需要做任何改变,直接替换原CH375,外部晶体频率换成24MHz,
      如果是CH375串口连接,那么需要改成CH374的SPI连接,使用非总线I/O子程序库
  2)、软件上,
      对于总线I/O操作,I/O端口地址名称CH375_CMD_PORT改成CH374_IDX_PORT
      对于非总线I/O操作,重新编写I/O接口子程序,如CH374_READ_REGISTER、CH374_WRITE_REGISTER等
      各子程序名称不同,CH375*改成CH374*
      查询U盘是否连接,应该用CH374DiskConnect子程序,不能用xQueryInterrupt,参考EXAM1和EXAM13
      CH374不支持外部接口子程序,但可在CH374_WRITE_BLOCK和CH374_READ_BLOCK64中实现类似功能
      外部的查询中断子程序不同,参考.H文件中的默认例子,CH374也支持无中断引脚的操作
      如果有BulkOnly协议的其它SCSI命令处理,参考EXAM12用CH374BulkOnlyCmd等实现
      如果需要精确定时,可以用CH374库新增加的子程序CH374DelaymS( )实现

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -