u盘读写控制源程序 - ch376芯片
主要包含4个C文件和和三个头文件 CH376INC.H 与CH376HFT.C为u盘主文件 SPI_SW.C 为对硬件操作文件 单片机与SPI接口 FILE_SYS.H与FILE_SYS.C 为ch376接口函数 分别列出
CH376INC.H文件:
/* C Define for CH376 */ /* Website: http://wch.cn */ /* Email: tech@wch.cn */ /* Author: W.ch 2008.10 */ /* V1.0 for CH376 */
#ifndef __CH376INC_H__ #define __CH376INC_H__
#ifdef __cplusplus extern \#endif /*
********************************************************************************************************************* */ /* 常用类型和常量定义 */
#ifndef TRUE #define TRUE 1 #define FALSE 0
#endif #ifndef NULL #define NULL 0 #endif
#ifndef UINT8
typedef unsigned char UINT8; #endif
#ifndef UINT16
typedef unsigned short UINT16; #endif
#ifndef UINT32
typedef unsigned long UINT32; #endif
#ifndef PUINT8
typedef unsigned char *PUINT8; #endif
#ifndef PUINT16
typedef unsigned short *PUINT16; #endif
#ifndef PUINT32
typedef unsigned long *PUINT32; #endif
#ifndef UINT8V
typedef unsigned char volatile UINT8V; #endif
#ifndef PUINT8V
typedef unsigned char volatile *PUINT8V; #endif /*
********************************************************************************************************************* */ /* 硬件特性 */
#define CH376_DAT_BLOCK_LEN 0x40 /* USB单个数据包, 数据块的最大长度, 默认缓冲区的长度 */ /*
********************************************************************************************************************* */ /* 命令代码 */
/* 部分命令兼容CH375芯片, 但是输入数据或者输出数据的可能局部不同) */ /* 一个命令操作顺序包含:
一个命令码(对于串口方式,命令码之前还需要两个同步码), 若干个输入数据(可以是0个),
产生中断通知 或者 若干个输出数据(可以是0个), 二选一, 有中断通知则一定没有输出数据, 有输出数据则一定不产生中断
仅CMD01_WR_REQ_DATA命令例外, 顺序包含: 一个命令码, 一个输出数据, 若干个输入数据
命令码起名规则: CMDxy_NAME
其中的x和y都是数字, x说明最少输入数据个数(字节数), y说明最少输出数据个数(字节数), y如果是H则说明产生中断通知,
有些命令能够实现0到多个字节的数据块读写, 数据块本身的字节数未包含在上述x或y之内 */
/* 本文件默认会同时提供与CH375芯片命令码兼容的命令码格式(即去掉x和y之后), 如果不需要, 那么可以定义_NO_CH375_COMPATIBLE_禁止 */ /*
********************************************************************************************************************* */
/* 主要命令(手册一), 常用 */
#define CMD01_GET_IC_VER 0x01 /* 获取芯片及固件版本 */ /* 输出: 版本号( 位7为0, 位6为1, 位5~位0为版本号 ) */ /* CH376返回版本号的值为041H即版本号为01H */
#define CMD21_SET_BAUDRATE 0x02 /* 串口方式: 设置串口通讯波特率(上电或者复位后的默认波特率为9600bps,由D4/D5/D6引脚选择) */ /* 输入: 波特率分频系数, 波特率分频常数 */
/* 输出: 操作状态( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值说明操作未完成 ) */
#define CMD00_ENTER_SLEEP 0x03 /* 进入睡眠状态 */
#define CMD00_RESET_ALL
0x05
/* 执行硬件复位 */
#define CMD11_CHECK_EXIST 0x06 /* 测试通讯接口和工作状态 */ /* 输入: 任意数据 */
/* 输出: 输入数据的按位取反 */
#define CMD20_CHK_SUSPEND 0x0B /* 设备方式: 设置检查USB总线挂起状态的方式 */
/* 输入: 数据10H, 检查方式 */
/* 00H=不检查USB挂起, 04H=以50mS为间隔检查USB挂起, 05H=以10mS为间隔检查USB挂起 */
#define CMD20_SET_SDO_INT 0x0B /* SPI接口方式: 设置SPI的SDO引脚的中断方式 */
/* 输入: 数据16H, 中断方式 */
/* 10H=禁止SDO引脚用于中断输出,在SCS片选无效时三态输出禁止, 90H=SDO引脚在SCS片选无效时兼做中断请求输出 */
#define CMD14_GET_FILE_SIZE 0x0C /* 主机文件模式: 获取当前文件长度 */ /* 输入: 数据68H */
/* 输出: 当前文件长度(总长度32位,低字节在前) */
#define CMD50_SET_FILE_SIZE 0x0D /* 主机文件模式: 设置当前文件长度 */ /* 输入: 数据68H, 当前文件长度(总长度32位,低字节在前) */
#define CMD11_SET_USB_MODE 0x15 /* 设置USB工作模式 */ /* 输入: 模式代码 */
/* 00H=未启用的设备方式, 01H=已启用的设备方式并且使用外部固件模式(串口不支持), 02H=已启用的设备方式并且使用内置固件模式 */
/* 03H=SD卡主机模式/未启用的主机模式,用于管理和存取SD卡中的文件 */
/* 04H=未启用的主机方式, 05H=已启用的主机方式, 06H=已启用的主机方式并且自动产生SOF包, 07H=已启用的主机方式并且复位USB总线 */
/* 输出: 操作状态( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值说明操作未完成 ) */
#define CMD01_GET_STATUS 0x22 /* 输出: 中断状态 */
#define CMD00_UNLOCK_USB 0x23
/* 获取中断状态并取消中断请求 */
/* 设备方式: 释放当前USB缓冲区 */
#define CMD01_RD_USB_DATA0 0x27 /* 从当前USB中断的端点缓冲区或者主机端点的接收缓冲区读取数据块 */ /* 输出: 长度, 数据流 */
#define CMD01_RD_USB_DATA 0x28 /* 设备方式: 从当前USB中断的端点缓冲区读取数据块, 并释放缓冲区, 相当于 CMD01_RD_USB_DATA0 + CMD00_UNLOCK_USB */ /* 输出: 长度, 数据流 */
#define CMD10_WR_USB_DATA7 0x2B /* 设备方式: 向USB端点2的发送缓冲区写入数据块 */
/* 输入: 长度, 数据流 */
#define CMD10_WR_HOST_DATA 0x2C /* 向USB主机端点的发送缓冲区写入数据块 */
/* 输入: 长度, 数据流 */
#define CMD01_WR_REQ_DATA 0x2D /* 向内部指定缓冲区写入请求的数据块 */
/* 输出: 长度 */
/* 输入: 数据流 */
#define CMD20_WR_OFS_DATA 0x2E */
/* 向内部缓冲区指定偏移地址写入数据块
/* 输入: 偏移, 长度, 数据流 */
#define CMD10_SET_FILE_NAME 0x2F /* 主机文件模式: 设置将要操作的文件的文件名 */
/* 输入: 以0结束的字符串(含结束符0在内长度不超过14个字符) */ /*
************************************************************ …… 此处隐藏:3159字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




