對USB接口進(jìn)行固件設(shè)計(jì)提升視頻傳輸質(zhì)量方案
在如今這個依靠數(shù)據(jù)傳輸?shù)臅r代,圖像的傳輸算得上的領(lǐng)域中的發(fā)展難點(diǎn),由于視頻傳輸的信息量較大,并且在傳輸過程中經(jīng)常會遇到線路抖動、圖像失真等問題,因此圖像總線的接口質(zhì)量非常重要。本文將為大家介紹一種基于USB接口的同步視頻輸出的系統(tǒng)設(shè)計(jì)方案固件設(shè)計(jì)部分。
本文引用地址:http://butianyuan.cn/article/201808/386437.htm固件設(shè)計(jì)
固件是指固化在USB控制器中MCU的程序,它的主要功能是負(fù)責(zé)接收與處理主機(jī)發(fā)給設(shè)備的各種請求,并向主機(jī)返回設(shè)備的狀態(tài)信息。FX2系列的固件代碼可以存儲到主機(jī)中,設(shè)備上電復(fù)位以后通過USB電纜手動下載到FX2,這種方法易于升級,在系統(tǒng)的開發(fā)過程中很方便;固件代碼可以固化到片外存儲器EEPROM或者是ROM,設(shè)備上電以后,自動下載固件到片內(nèi)RAM,這兩種方法可以將系統(tǒng)固件做成產(chǎn)品,無須每次手動下載。
本系統(tǒng)中固件分兩個部分,一個是數(shù)據(jù)通道的控制,一個是主機(jī)控制命令的應(yīng)答。數(shù)據(jù)通道的控制主要是GPIF控制數(shù)據(jù)傳輸管道完成。而控制管道EP0則負(fù)責(zé)主機(jī)和USB設(shè)備端的去掉數(shù)據(jù)部分的通信:更改管道和端點(diǎn)配置信息,設(shè)置軟件中斷,更改GPIF視頻圖像傳輸?shù)拇笮?,獲取重要寄存器的狀態(tài)等等。
圖1
固件的程序框圖如圖1。其中設(shè)備請求部分即為控制管道信息,是由單片機(jī)負(fù)責(zé),而數(shù)據(jù)通道主要是通過GPIF操作,隔離了單片機(jī)的參與,提高數(shù)據(jù)傳輸速度。
固件代碼編寫使用Keil uVision,GPIF編程應(yīng)用CYPRESS公司的GPIF工具(GPIFTOOL)。GPIF可以控制FX2端點(diǎn)FIFO,也可以產(chǎn)生六個控制輸出端(CTL0~CTL5)和九根地址線輸出,并且可以接收六個外部輸入信號,并對這些信號進(jìn)行邏輯編程控制,從而控制FX2與外部接口的讀寫時序。實(shí)際操作可以利用GPIFTOOL繪制波形描述符,轉(zhuǎn)為C文件,配置各個相關(guān)的寄存器,控制SRAM接口讀寫邏輯。
SRAM硬件接口的時序圖如下:
圖2
依據(jù)上面的波形圖,只需要在S1結(jié)束的時候跳轉(zhuǎn)S0狀態(tài)即可。將繪制的波形圖應(yīng)用GPIF TOOL轉(zhuǎn)換為gpif.c文件,加入Project中,連接編譯即可得到固件。
在固件編程中電源管理部分,由于FX2在首次枚舉電流大約是75mA,F(xiàn)X2設(shè)備的識別則至少需要100mA,小于500mA,因此在固件中要加進(jìn)電源檢測,如果小于100mA,必須向主機(jī)申請更大的電流,直到主機(jī)正確識別FX2。
以上就是基于USB接口的同步視頻輸出系統(tǒng)設(shè)計(jì)方案固件部分。對USB口進(jìn)行適當(dāng)?shù)母脑炷軌蜃畲蟪潭鹊氖箓鬏數(shù)膱D像保持清晰,對于USB口感興趣的朋友可以收藏本文進(jìn)行仔細(xì)研究。
評論