?? 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 + -