U盘IC卡SD卡读写时钟芯片应用.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【实例94】读写U盘#includereg51.h #define uchar unsigned char uchar volatile xdata CH372_CMD_PORT _at_ 0x7DFF; // CH372命令端口的I/O地址 uchar volatile xdata CH372_DAT_PORT _at_ 0x7CFE; //CH372数据端口的I/O地址 uchar Usb_Length; //USB数据缓冲区中数据的长度 uchar Usb_Buffer[ CH372_MAX_DATA_LEN ]; // USB数据缓冲区 #define CH372_MAX_DATA_LEN 0x40 //最大数据包的长度,内部缓冲区的长度 //命令代码 #define CMD_RESET_ALL 0x05 //执行硬件复位 #define CMD_CHECK_EXIST 0x06 //测试工作状态 #define CMD_SET_USB_ID 0x12 // 设置USB厂商VID和产品PID #define CMD_SET_USB_ADDR 0x13 //设置USB地址 #define CMD_SET_USB_MODE 0x15 //设置USB工作模式 #define CMD_SET_ENDP2 0x18 //设置USB端点0的接收器 #define CMD_SET_ENDP3 0x19 //设置USB端点0的发送器 #define CMD_SET_ENDP4 0x1A //设置USB端点1的接收器 #define CMD_SET_ENDP5 0x1B //设置USB端点1的发送器 #define CMD_SET_ENDP6 0x1C //设置USB端点2/主机端点的接收器 #define CMD_SET_ENDP7 0x1D //设置USB端点2/主机端点的发送器 //命令CMD_SET_ENDP2~CMD_SET_ENDP7输入为:工作方式,位7为1则位6为同步触发位,否则同步触发位不变,位3~位0为事务响应方: 0000~1000-就绪ACK,1101-忽略,1110-正忙NAK,1111-错误STALL #define CMD_GET_TOGGLE 0x0A //获取OUT事务的同步状态,输入:数据1AH, 输出:同步状态 #define CMD_GET_STATUS 0x22 // 获取中断状态并取消中断请求 #define CMD_UNLOCK_USB 0x23 //释放当前USB缓冲区 #define CMD_RD_USB_DATA 0x28 //从当前USB中断的端点缓冲区读取数据块,并 释放缓冲区 #define CMD_WR_USB_DATA3 0x29 //向USB端点0的发送缓冲区写入数据块 #define CMD_WR_USB_DATA5 0x2A //向USB端点1的发送缓冲区写入数据块 #define CMD_WR_USB_DATA7 0x2B // 向USB端点2的发送缓冲区写入数据块 //操作状态 #define CMD_RET_SUCCESS 0x51 //命令操作成功 #define CMD_RET_ABORT 0x5F //命令操作失败 (2)基本操作函数 ①函数DelayMs:在CH372读写过程中需要用到毫秒延时,该函数可以满足要求,程序代码如下。 void DelayMs(uchar n) { uchar i; unsigned int j; for(i=0; in; i++) for(j=0;j1000;j++) j=j; } ②函数Delayμs:在读写命令的过程中经常要用到微秒的延时,该函数可以用来调用,其程序代码如下。 void Delay( uchar i) { while(i) i -- ; } ③函数WR_CH372_CMD_PORT 该函数用以向CH372命令端口写命令数据,周期不小于4μS,如果太快则延时,其程序代码如下。 void WR_CH372_CMD_PORT( uchar cmd ) { Delay(2); CH372_CMD_PORT=cmd; Delay (2); //至少延时2μS } ④WR_CH372_DAT_PORT 该函数用以向CH372数据端口写数据,周期不小于1.5μS,如果太快则延时,其程序代码如下。 void WR_CH372_DAT_PORT(uchar d ) { CH372_DAT_PORT=

文档评论(0)

phl805 + 关注
实名认证
文档贡献者

建筑从业资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年05月12日上传了建筑从业资格证

1亿VIP精品文档

相关文档