USB小白学习之路(2)端点IN/OUT互换
端點(diǎn)2(out)和端點(diǎn)6(in)的out_in互換
注:這里的out和in都是以host為標(biāo)準(zhǔn)說(shuō)的,out是host的out,在設(shè)備(Cy7c68013)這里其實(shí)是輸入端口;in是host的in,在設(shè)備(Cy7c68013)這里其實(shí)是輸出端口。
由于在PDF文檔中,最后博主說(shuō)了句將端點(diǎn)2改為in,端點(diǎn)6改為out,就想試一下。
需要改的地方有兩個(gè)文件PERIPH.c和DSCR.A51
1.DSCR.A51修改
DSCR.A51是設(shè)備描述符,這里面有個(gè)端點(diǎn)描述符,因?yàn)橐薷亩它c(diǎn)的direction,所以這里的Endpoint Descriptor需要修改。具體修改如圖 2所示:需要注意的是,在DSCR.A51中,有HighSpeedConfigDscr和FullSpeedConfigDscr兩組端點(diǎn)描述符,經(jīng)過(guò)試驗(yàn),只需要修改HighSpeedConfigDscr中的端點(diǎn)描述符就可以,當(dāng)然,為了保險(xiǎn),可以都修改。
圖 1端點(diǎn)2,4為out,6,8為in的配置
圖 2端點(diǎn)4,6為out,2,8為in的配置
通過(guò)對(duì)比圖 1和圖 2以及參考PDF文檔,可以看出有關(guān)端口方向的相關(guān)資料。只有這里修改了,在使用Cypress USB Console時(shí),通過(guò)“端點(diǎn)描述符”讀出端點(diǎn)的方向,圖 3中的相應(yīng)位置才會(huì)有反應(yīng)。
圖 3Cypress USB Console中檢測(cè)的端口方向
2.PERIPH.c修改
PERIPH.c是用戶程序的主要編寫文件,這里有初始化函數(shù)TD_init()和動(dòng)作函數(shù)TD_pull()兩個(gè)函數(shù)需要修改。
l2.1 TD_init()修改
在TD_init()函數(shù)中,需要將端點(diǎn)2和端點(diǎn)6的配置寄存器進(jìn)行相應(yīng)修改。如圖 4所示。在對(duì)端點(diǎn)進(jìn)行初始化的地方,需要對(duì)out端點(diǎn)進(jìn)行初始化,所以需要修改,如圖 5所示。
圖 4配置寄存器的值修改
圖 5端點(diǎn)初始化配置
l2.2 TD_pull()修改
實(shí)際操作的是TD_pull()函數(shù)。由于原來(lái)是端點(diǎn)2為out,端點(diǎn)6為in,端點(diǎn)2接收到數(shù)據(jù)后傳送給端點(diǎn)6,現(xiàn)在正好相反,根據(jù)函數(shù)語(yǔ)句,將相應(yīng)的語(yǔ)句修改就可以。
真正不羈的靈魂不會(huì)真的去計(jì)較什么,因?yàn)樗麄兊膬?nèi)心深處有著國(guó)王般的驕傲。
總結(jié)
以上是生活随笔為你收集整理的USB小白学习之路(2)端点IN/OUT互换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: VS2013 C#中调用DLL
 - 下一篇: 我都不敢信了 东芝芯片“又”将最后决定