USB小白学习之路(2)端点IN/OUT互换
端點2(out)和端點6(in)的out_in互換
注:這里的out和in都是以host為標準說的,out是host的out,在設備(Cy7c68013)這里其實是輸入端口;in是host的in,在設備(Cy7c68013)這里其實是輸出端口。
由于在PDF文檔中,最后博主說了句將端點2改為in,端點6改為out,就想試一下。
需要改的地方有兩個文件PERIPH.c和DSCR.A51
1.DSCR.A51修改
DSCR.A51是設備描述符,這里面有個端點描述符,因為要修改端點的direction,所以這里的Endpoint Descriptor需要修改。具體修改如圖 2所示:需要注意的是,在DSCR.A51中,有HighSpeedConfigDscr和FullSpeedConfigDscr兩組端點描述符,經(jīng)過試驗,只需要修改HighSpeedConfigDscr中的端點描述符就可以,當然,為了保險,可以都修改。
圖 1端點2,4為out,6,8為in的配置
圖 2端點4,6為out,2,8為in的配置
通過對比圖 1和圖 2以及參考PDF文檔,可以看出有關端口方向的相關資料。只有這里修改了,在使用Cypress USB Console時,通過“端點描述符”讀出端點的方向,圖 3中的相應位置才會有反應。
圖 3Cypress USB Console中檢測的端口方向
2.PERIPH.c修改
PERIPH.c是用戶程序的主要編寫文件,這里有初始化函數(shù)TD_init()和動作函數(shù)TD_pull()兩個函數(shù)需要修改。
l2.1 TD_init()修改
在TD_init()函數(shù)中,需要將端點2和端點6的配置寄存器進行相應修改。如圖 4所示。在對端點進行初始化的地方,需要對out端點進行初始化,所以需要修改,如圖 5所示。
圖 4配置寄存器的值修改
圖 5端點初始化配置
l2.2 TD_pull()修改
實際操作的是TD_pull()函數(shù)。由于原來是端點2為out,端點6為in,端點2接收到數(shù)據(jù)后傳送給端點6,現(xiàn)在正好相反,根據(jù)函數(shù)語句,將相應的語句修改就可以。
真正不羈的靈魂不會真的去計較什么,因為他們的內(nèi)心深處有著國王般的驕傲。
總結
以上是生活随笔為你收集整理的USB小白学习之路(2)端点IN/OUT互换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2013 C#中调用DLL
- 下一篇: 腾龙新款索尼 E 口镜头专利公开:17-