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

📄 sl811 读写u盘的资料,龙人提供.htm

📁 SL811 读写U盘的资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0037)http://www.mcu51.com/list.asp?id=1661 -->
<HTML><HEAD><TITLE>读写U盘的资料,龙人提供(a66886527)</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK 
href="SL811 读写U盘的资料,龙人提供_files/style.css" rel=stylesheet>
<META content="MSHTML 6.00.3790.94" name=GENERATOR></HEAD>
<BODY>
<DIV align=center>
<CENTER></CENTER></DIV>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width="97%" 
borderColorLight=#000000 border=1>
  <TBODY>
  <TR>
    <TD width="100%" bgColor=#d0d0d0>
      <P align=center>文章编号:1661----加入日期:2004-12-15 </P></TD></TR>
  <TR>
    <TD width="100%">
      <P align=right><A href="javascript:self.close()">『关闭窗口』</A></P></TD></TR>
  <TR>
    <TD width="100%">
      <P align=center><B>读写U盘的资料,龙人提供(a66886527)</B></P></TD></TR>
  <TR>
    <TD width="100%">
      <BLOCKQUOTE><BR>读写U盘的资料,龙人提供 
        <BR>读写U盘的资料准备充分和完毕,龙人在此征求大家的意见。我是把资料一下共享出来,还 
        <BR>是开个版块,从硬件的选材开始,一步步讲解这个项目的过程,同时附上代码。我个人赞成 
        <BR>后面一种。因为论坛创立的目的就是为了想帮助初为技术的朋友们,不想人迷惑,让学生朋 
        <BR>友们都能学到精华和好的东西。我曾经也做过弯路,学过周某人的东西,简直是垃圾!学了 
        <BR>等于没学。龙人就是看不管这些创立论坛。立志为初为技术的朋友,一开始就能站在一个较 
        <BR>高和实用的角度,不要去走那些花拳绣腿费钱费力的路。既然是学习肯定得要有资料和必要 
        <BR>的指引,在此龙人每晚辛苦2-3个小时,做出总结和指引帮助所有的人在10-15天全部掌握这 
        <BR>个东西,更重要的是通个这个学到单片机开发的思想,为以后的路作.......同时也想你们 
        <BR>在这里认识一帮朋友,学到做人做事的真道理,多点关爱和奉贤精神!不多说了,大家积极 
        <BR>投票,特别是学生朋友们,踊跃投票!在2天之内做决定,一切征求大家的意见。 
        <BR><BR><BR><BR><BR>在做这个项目之前,我想提醒大家,硬件不怎么难,关键是软件的问题。所以大家只要努 
        <BR>力,多用时间调试,最后就一定能够走通。我这里只是向大家指条好路,记住千万不要直接 
        <BR>COPY,否则学不到什么东西,什么事情,亲自动手后,然后搞定后者提问才是最好的办法。 
        <BR>另外,我想说明的是,我在这里讲的一般代码,大概最后速度有几十K,龙人最核心的800多 
        <BR>K的东西,需要一定的板子费才给大家。希望大家能够理解。不罗嗦了,进入正题。首先, 
        <BR>硬件选用最常见的8为51系列或者16位的也可以。主控芯片当然用sl811hst。然后要有扩展 
        <BR>内存,32K(62256就可以了)反向器,811的晶体最好用48M有源的,为了调试方便设置几个 
        <BR>必要的LED,为了在电脑上仿真,接个232口,好了硬件选材基本就是这些。必要工具:开关 
        <BR>电源:最好选用纹波少点的,否则容易读写出错;示波器;仿真器。我讲讲整个项目开发的 
        <BR>流程,不熟悉的人可以快去补补相关东西。画原理图(我上面说的器件)做PCB。然后开始 
        <BR>看USB1.1协议中的主机部分,811数据手册,SCSI协议(BULK),看FAT文件协议(有条件的 
        <BR>可以看点U盘开发资料)。等于心中有个数后就可以开始投入写代码和调试了。这个软件分 
        <BR>为3大层次来写,首先是81和CPU的通信遍写,无非就是读和写了,注意811和周边外围器件 
        <BR>的地址分配;之后是对811实现USB数据流的转换完成对USB的配置,为U盘设备设置,通信地 
        <BR>址。在这个USB流传送中主要是用了CONTROL传输。这个东西CYPRESS有完全的代码可以参 
        <BR>考,只需要修改一下地址或者不用修改就能直接运行,建议最好把,查询方式改成中断方 
        <BR>式,这样有利于提高CPU效率。之后该是对U盘枚举和设置了,根据SCSI协议只有对U盘进行 
        <BR>设置和配置后才是可用的。到这里就可以完成对U盘的读写了,不过此时你读写的数据流, 
        <BR>可能什么作用也不起,因为你没有文件系统,在WINDOWS里,你看不见任何东西,必须做一 <BR>个事实的文件系统来管理具体的数据。 
        <BR>&nbsp;&nbsp;xdata BYTE SL811_ADDR_PORT&nbsp;&nbsp;&nbsp;_at_ 0x8000; 
        <BR>xdata BYTE SL811_DATA_PORT&nbsp;&nbsp;&nbsp;_at_ 0x8100; <BR>extern 
        unsigned char xdata DBUF[BUFFER_LENGTH]; <BR>unsigned char 
        SL811Read(unsigned char idata a) <BR>{&nbsp;&nbsp; 
        <BR><BR>SL811_ADDR_PORT=a; <BR>return (SL811_DATA_PORT); <BR>} 
        <BR><BR><BR><BR><BR><BR>void SL811Write(unsigned char idata a, unsigned 
        char idata d) <BR>{&nbsp;&nbsp; <BR>/ <BR>SL811_ADDR_PORT = a; 
        <BR>SL811_DATA_PORT = d; <BR>} <BR><BR><BR><BR>void 
        SL811BufRead(unsigned char addr, unsigned char *s, unsigned char c) 
        <BR>{ <BR><BR><BR><BR><BR>unsigned char idata i=c; <BR>SL811_ADDR_PORT = 
        addr; <BR>&nbsp;&nbsp;&nbsp;&nbsp;while (i--) 
        <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>*s = SL811_DATA_PORT; <BR>s++; <BR>} 
        <BR><BR><BR><BR>} <BR><BR><BR><BR>void SL811BufWrite(unsigned char addr, 
        unsigned char *s, unsigned char c) <BR>{ <BR><BR><BR><BR><BR>unsigned 
        char idata i=c; <BR>SL811_ADDR_PORT = addr; 
        <BR>&nbsp;&nbsp;&nbsp;&nbsp;while (i--) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ 
        <BR>SL811_DATA_PORT = *s; <BR>s++; <BR>} <BR>} 
        <BR><BR><BR><BR>811和CPU通信的代码,最地层的东西,新手在这个地方一定要注意地址的定义,不要笑,这 
        <BR>个东西有些新人肯定不通。操作811之类的东西最好用地址来操作,速度快。不要用位控, 
        <BR>速度慢,并且时序控制起来也烦人。大家不要嫌我罗嗦这个东西可是最基本的,到这里来的 
        <BR>我希望都是新人,我讲的知识也是针对新人,所以应该基础一点。你在自己制作811的时候 
        <BR>函数可以就用这个了,但是地址可以根据具体情况换成响应的就可已了。还不明白的把电路 <BR>贴出来,龙人帮你算。 
        <BR><BR><BR><BR>今天讲讲811如何把数据流转成USB的数据流,使其能和主机通信。 
        <BR>先说说大的流程:(根据我自己编写的如件,其实也和CYPRESS提供的那个差不多,只是把 <BR>它的查询方式改成了中断方式) 
        <BR>U盘一插上后,CPU是怎么知道有设备接入的:这是通过811的中断告诉CPU的,同时当U盘拔 
        <BR>出去时也是通过中断告诉CPU的。那CPU是怎么判断 
        <BR><BR><BR><BR><BR><BR><BR>是插入还是拔出呢?可以通过读函数SL811Read(IntStatus)读取中断寄存器的值(注意,在 
        <BR>读中断寄存器的值必须对811进行初始化,SL81 
        <BR><BR><BR><BR>1Write(IntEna,0x20);SL811Write(IntStatus,INT_CLEAR);SL811Write(cSOFcnt,0xae);初 
        <BR>始中断寄存器,然后清0,打开SOF可以开 
        <BR><BR><BR><BR>始传输数据流)根据值我们就可以来控制软件的流程:1,如果是插入盘,那么就可以给U盘 
        <BR>分配地址,获取配置描述符中的具体数据,然后根 
        <BR><BR><BR><BR>据数据来设置实际的U盘包端点大小。最后根据具体设备类来设置配置值,然后配置接口。 
        <BR>到此时,整个USB枚举配置就完成了。给个配置的大 

⌨️ 快捷键说明

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