這一塊『號稱』要作USB 轉Parallel 的板子,大概從版主成立所謂USB DIY 專欄以來就一直宣稱要開發的東西。卻又被一直束之高閣。倒也不是不想作~如果不想作的話,也不必花精神畫圖,找人Layout 作PCB啊~只是....套一句大陸名言:計畫永遠跟不上變化的!唉~這個絕對不是:晚上睡覺,想著全頭路~要作,沒半步!(台語)...真的只是當興趣作,只不過,工作的興趣又高過這個純興趣的。
好了~跟各位說:這塊板子早在一年前(2006/03) 就作出來了~但就一直擱在那了!連要找個傳人都沒有。所以,就擺著讓他發霉......
我們先複習一下版主所用的這顆USB Controller 的架構:因為他基本上就有USB及 Parallel 的介面。以前版主也有利用parallel 傳送過資料...所以,在Parallel 的介面是沒問題的。只是將USB及Parallel 這兩種介面要寫在一起的『橋接器』~就真的沒做過了!尤其是在Parallel 這邊因為還牽涉到所謂 BPP/SPP/EPP/ECP 等諸多奇怪的介面,所以在PC端的驅動程式是會有一定的挑戰度的。這點也是版主比較擔心的部分。或許,真的會有一些技術的挑戰度的~倒不如直接作USB I/O 還比較簡單一點。
下圖示原廠原始的方塊圖:
而下圖呢?則是版主把他整理後的方塊圖,看起來就比較清楚一點,然後這也是版主要作這一塊PCB的主要目標方塊圖:就是有幾個重點:
1. 要有USB 介面。(廢話)
2. 也要有Parallel 介面。這樣子,看起來真的是有支援Parallel port 介面的樣子。
3. 要有外面輸入所能量測的A/D 介面。
4. USB Controller 中的8051 要有利用記憶體Data/Address 的擴充介面。
5. 其中的8051 的韌體可以隨時更換,而不必更動任何硬體。
6. 還要有簡單的I/O 介面,可以拿來作基礎簡單的I/O 控制。
---- 這樣子一來,就是一塊非常簡單的USB I/O 的實驗板子了。簡單易懂而易入門。
PCB 真的已經洗出來了,而且還洗了約五十幾片呢!注意看USB 街頭上方的日期:0608 -- 2006 年第八週呢!至於為何要洗成白色呢?呵~呵~因為跟別人拼版的原因,人家原來的板子就是要洗成白色的,我的只是搭便車的,所以也無所謂了。
之後我只組裝一片雖然驗證一下USB的功能正不正常而已。我就這塊板子說明一下我的應用想法:基本上,我把這顆GT6816 的所有I/O Pin 幾乎全部拉出來,並給予適當的Connector 。救順時針說明一下所有可以外接裝置:
首先是:Parallel Connector ,因為當初這顆留了兩個方向的Parallel Port ~即一般可以接到PC端: 把自己當作一般Parallel 介面的裝置;另一方向則為可以在下游端接另一台Parallel 介面的裝置。為什麼是這樣子的呢?!因為早期還沒有USB 出現時,PC端在傳輸比較快的介面只有Parallel ,而且只有一個而已。又要接印表機也有可能接Scanner 。所以就做成這樣子的德行。大家可別太訝異!!您們可知道:台灣的Scanner 產業一直執國際產業的龍頭地位呢。這一種接法設計還算是蠻不錯。
那學問就來了~如果純粹是一個Parallel 轉換或是Bypass through 介面的話,那可沒什麼好作的~我也不必這麼大費周章的這樣子了~好玩的事情來了~當您同時存在Parallel 及USB時,那就代表這兩者之間是否可以構成一種某種層面的應用呢?!哈~哈~ 當初我們曾經有作一個實驗:就是利用的USB Device Description 的宣告,把自己宣告成兩種Interface :一個即一般影像裝置的Scanner ;而另一個呢?就是一台USB 介面的印表機。就是先利用啓B 介面把原本印表機介面轉成USB,然後下一些印表機命令,然後利用GT6816 內部的8051 把這些印表機命令再轉成一般原本走Parallel 介面的印表機介面。.......讓一台原本是Parallel 介面印表機可以透過此顆USB Controller 成為一台USB 介面的印表機。... 既然可以讓當初的Win98SE 可以透過 USB 下一些印表機命到原本是Paralle Port 的印表機上。(當然,當初是軟體工程師們厲害的地方,而且或許當初作業系統還存在許多底層驅動程式的漏洞,才讓我們有機可趁。....)所以,我才會重新興起作這樣的東西之興致。不過,時空所不同的是:現在的作業系統也複雜了;當初那位功力一等一的軟體工程師早已經不知去向了(人家可是早期聯電在作南北橋晶片時的,專門寫驅動程式的工程師呢!)
所以啊~就光是這板子上的 USB to Pararllel 就有許多DIY的樂趣在其中了。
接下來呢?就是一般的 GPIO 即一般8051 的P1 。這一部份要作一般 USB I/O 算是很足夠了。
當然若不夠的話,他還有一些很單純的output pin 可以使用。
另外,若都覺得不夠的話,我們就把8051 的外接SRAM Data/ Address的Bus 拉出來,您愛怎麼擴充就怎麼擴充周邊吧。不過,這裡要說明一下的是:因為這一顆USB Controller 的核心雖然是8051 。但是因為他可不是一般12T 或4T 的8051 ~而是 RISC 的8051 。所以,對一些外接SRAM 的Data/Address Bus 來說:他可能有一些Timing 上的Issue 喔~要實際搭配過,我才能跟您說:哪些周邊電路可以皆在這裡的喔。若是一般SRAM 的話~應該是沒什麼問題的。因為我所做的USB ROM Emulator 所用的Buffer 就是利用SRAM接在這裡的。.....就是不敢說:所有的周邊電路IC都可以接在這,所以,我才會另外設計了此一I/O 接頭啊。
另外是:因為此顆IC原本就可以接一般掃描器的CCD感測器。所以,他也內件了A/D Converter 。至於多少解析度,當初我們是號稱 16 bits 的A/D 。不過,因為,我都只拿來量一些簡單的電壓電位。所以,我個人覺得8 bits 就夠用了。
就這樣,一塊很點單卻可能很受用的一塊USB DIY 板子就完成了。最重要的是:他的8051韌體可以不用再透過任何硬體就可以隨時更新,這對於一些學生或想學USB的人來說:是再好不過的解決方案。您就看這塊子的背面,就沒有任何電子元件了。
-----------------------------------------
當然,您一定會想問我:這塊板子,賣不賣?!若從硬體本身來看,要賣絕對沒問題。但是在軟體上要教到大家會輕鬆上手。這是需要版主花一點時間寫教材及範例,大家才會輕易上手的。這一部份是需要給版主一點時間的。....不好意思。..... 或許,您也可以常來版主的部落格逛逛吧。