📄 sl811 读写u盘的资料,龙人提供.htm
字号:
<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>{ <BR><BR><BR>GetDesc()
<BR><BR><BR>!SetAddress(usbaddr) <BR>return FALSE; <BR>uAddr
= usbaddr; <BR>if (!GetDesc()) <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>{ <BR><BR>uDev.wPayLoad[0] = 64; <BR>wPayload=64;
<BR>if(usbaddr == 1) <BR>USBReset();
<BR> 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->bMaxPacketSize0;
<BR>DEV.wPayLoad[0]=pDev->bMaxPacketSize0; <BR>if
(!SetAddress(usbaddr)) <BR>return FALSE; <BR>uAddr =
usbaddr; <BR>pDev =(pDevDesc)DBUF; <BR>usbaddr=uAddr;
<BR>setup.wLength=pDev->bLength; <BR>setup.wvalue=DEVICE;
<BR>setup.wIndex=0; <BR>buffer=DBUF; <BR>if (!GetDesc())
<BR>return FALSE; <BR>uDev.wVID = pDev->idVendor;
<BR>uDev.wPID = pDev->idProduct;
<BR>uDev.iMfg = pDev->iManufacturer;
<BR>uDev.iPdt = pDev->iProduct; <BR>if
(!GetDesc()) <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 + -