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

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

📁 SL811 读写U盘的资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
        <BR><BR><BR><BR>体框架流程就是,希望大家不要深究具体的细节要宏观上把握,这样布局好了,即使不对改 
        <BR>也好改,加也好加。鉴于这些代码CUPYESS都有所以 
        <BR><BR><BR><BR>我就不贴了,我只是点一下流程。流程只要不对第一步的USB枚举就一定能通过^_^可以使用 
        <BR>仿真器观察一下内存变量的值(搞单片机一定得有 
        <BR><BR><BR><BR>有个仿真器)如果通不过,设下断点看停在那里。根据我的经验只要你不抄错CYPRESS的代 
        <BR>码就一定通过,当然也有通过的,怎么办?找龙人 
        <BR><BR><BR><BR>呀!首先单独测试你的读写函数(几十次)看有没有错,确保最地层的东西。如果不正确, 
        <BR>那么就出在你的硬件了,别慌,不要乱改硬件,新 
        <BR><BR><BR><BR>手们注意一下看自己的读写地址设置正确了没有,如果确保没错,那么就是硬件了。经验之 
        <BR>一,用示波器看看SOF是不是1MS,如果不是注意晶 
        <BR><BR><BR><BR>体了,问题多半在他。如果不是,那么检查数据地址线,看有没有断路的,烦人!(^__^龙 
        <BR>人最讨厌折腾班子了)。如果前面的工序都检查完 
        <BR><BR><BR><BR>了,那么问题还没有解决,赶快到龙人论坛www.8dragon.com提问,最好贴出你的代码,龙 
        <BR>人帮你解决。提醒大家抄CYPRSS代码的时候最好 
        <BR><BR><BR><BR>仔细点,我发觉好多人都粗心的,最后好我一看就是很简单的错误。今天讲到这,由于大家 
        <BR>都有CPYRESS的代码,龙人也是抄它的,所以就不 
        <BR><BR><BR><BR>贴出了。要想学东西,赶快动手自己写一面,然后运行调试,看看结果。哇,结果正确!龙 
        <BR>人恭喜你了!失望,结果不正确呀,我们都是学生 
        <BR><BR><BR><BR>,从头来呀,没什么的,坚持坚持!我相信高手就是从这里开始有分水岭了。失望透顶,还 
        <BR>是解决不了,没关系,不要忘记了还有桃龙源呀, 
        <BR><BR><BR><BR>龙人一定会帮你的!^__^!提出的问题,贴出你的错误,龙人熬夜帮你搞顶!好,今天说到 
        <BR>这,赶快调试哦。明天第3讲! <BR>unsigned char EnumUsbDev(unsigned char usbaddr) 
        <BR>{&nbsp;&nbsp; <BR><BR><BR>GetDesc() 
        <BR><BR><BR>!SetAddress(usbaddr)&nbsp;&nbsp; <BR>return FALSE; <BR>uAddr 
        = usbaddr; <BR>if (!GetDesc())&nbsp;&nbsp; <BR>return FALSE; 
        <BR>今天讲讲811如何把数据流转成USB的数据流,使其能和主机通信。 
        <BR>先说说大的流程:(根据我自己编写的如件,其实也和CYPRESS提供的那个差不多,只是把 <BR>它的查询方式改成了中断方式) 
        <BR>U盘一插上后,CPU是怎么知道有设备接入的:这是通过811的中断告诉CPU的,同时当U盘拔 
        <BR>出去时也是通过中断告诉CPU的。那CPU是怎么判断 
        <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枚举配置就完成了。给个配置的大 
        <BR><BR><BR><BR>体框架流程就是,希望大家不要深究具体的细节要宏观上把握,这样布局好了,即使不对改 
        <BR>也好改,加也好加。鉴于这些代码CUPYESS都有所以 
        <BR><BR><BR><BR>我就不贴了,我只是点一下流程。流程只要不对第一步的USB枚举就一定能通过^_^可以使用 
        <BR>仿真器观察一下内存变量的值(搞单片机一定得有 
        <BR><BR><BR><BR>有个仿真器)如果通不过,设下断点看停在那里。根据我的经验只要你不抄错CYPRESS的代 
        <BR>码就一定通过,当然也有通过的,怎么办?找龙人 
        <BR><BR><BR><BR>呀!首先单独测试你的读写函数(几十次)看有没有错,确保最地层的东西。如果不正确, 
        <BR>那么就出在你的硬件了,别慌,不要乱改硬件,新 
        <BR><BR><BR><BR>手们注意一下看自己的读写地址设置正确了没有,如果确保没错,那么就是硬件了。经验之 
        <BR>一,用示波器看看SOF是不是1MS,如果不是注意晶 
        <BR><BR><BR><BR>体了,问题多半在他。如果不是,那么检查数据地址线,看有没有断路的,烦人!(^__^龙 
        <BR>人最讨厌折腾班子了)。如果前面的工序都检查完 
        <BR><BR><BR><BR>了,那么问题还没有解决,赶快到龙人论坛www.8dragon.com提问,最好贴出你的代码,龙 
        <BR>人帮你解决。提醒大家抄CYPRSS代码的时候最好 
        <BR><BR><BR><BR>仔细点,我发觉好多人都粗心的,最后好我一看就是很简单的错误。今天讲到这,由于大家 
        <BR>都有CPYRESS的代码,龙人也是抄它的,所以就不 
        <BR><BR><BR><BR>贴出了。要想学东西,赶快动手自己写一面,然后运行调试,看看结果。哇,结果正确!龙 
        <BR>人恭喜你了!失望,结果不正确呀,我们都是学生 
        <BR><BR><BR><BR>,从头来呀,没什么的,坚持坚持!我相信高手就是从这里开始有分水岭了。失望透顶,还 
        <BR>是解决不了,没关系,不要忘记了还有桃龙源呀, 
        <BR><BR><BR><BR>龙人一定会帮你的!^__^!提出的问题,贴出你的错误,龙人熬夜帮你搞顶!好,今天说到 
        <BR>这,赶快调试哦。明天第3讲! <BR>unsigned char EnumUsbDev(unsigned char usbaddr) 
        <BR>{&nbsp;&nbsp; <BR><BR>uDev.wPayLoad[0] = 64; <BR>wPayload=64; 
        <BR>if(usbaddr == 1) <BR>USBReset(); 
        <BR>&nbsp;&nbsp;&nbsp;&nbsp;DelayMs(50); <BR>pDev =(pDevDesc)DBUF; 
        <BR>usbaddr=uAddr; <BR>setup.wvalue=DEVICE; <BR>setup.wIndex=0; 
        <BR>setup.wLength=18; <BR>buffer=DBUF; <BR>if (!GetDesc()) <BR>{ 
        <BR>return FALSE; <BR>} <BR>wPayload=pDev-&gt;bMaxPacketSize0; 
        <BR>DEV.wPayLoad[0]=pDev-&gt;bMaxPacketSize0; <BR>if 
        (!SetAddress(usbaddr))&nbsp;&nbsp; <BR>return FALSE; <BR>uAddr = 
        usbaddr; <BR>pDev =(pDevDesc)DBUF; <BR>usbaddr=uAddr; 
        <BR>setup.wLength=pDev-&gt;bLength; <BR>setup.wvalue=DEVICE; 
        <BR>setup.wIndex=0; <BR>buffer=DBUF; <BR>if (!GetDesc())&nbsp;&nbsp; 
        <BR>return FALSE; <BR>uDev.wVID&nbsp;&nbsp;= pDev-&gt;idVendor; 
        <BR>uDev.wPID&nbsp;&nbsp;= pDev-&gt;idProduct; 
        <BR>uDev.iMfg&nbsp;&nbsp;= pDev-&gt;iManufacturer; 
        <BR>uDev.iPdt&nbsp;&nbsp;= pDev-&gt;iProduct; <BR>if 
        (!GetDesc())&nbsp;&nbsp; <BR>return FALSE; <BR>if (!Set_Configuration()) 
        <BR>return F <BR>if (!Set_Interface()) <BR>return FALSE; <BR>GetDesc() 
        <BR>return FALSE; <BR>pIfc = (pIntfDesc)(DBUF + 9); 
        <BR>Set_Configuration() <BR>Set_Interface() <BR>return TRUE; <BR>} 
        <BR><BR><BR><BR><BR>该内容来自:www.8dragon.com 
        <BR><BR><BR><BR>该内容来自:www.8dragon.com <BR><BR><BR><BR>以后更精彩 
        <BR><BR><BR>系统注:本文被午夜听风加精. <BR><BR>(文章推荐人:丁丁) <BR><BR></BLOCKQUOTE></TD></TR>
  <TR>
    <TD width="100%">
      <P align=center> </P></TD></TR></TBODY></TABLE><A 
href="http://www.mcu51.com/bbs" target=_blank>返回大虾论坛</A> <A 
href="http://www.mcu51.com/default.asp" target=_blank>返回首页</A> 
</CENTER></DIV></BODY></HTML>

⌨️ 快捷键说明

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