2019年9月26日 星期四

Hinet 網頁系列 --- USB DIY 系列(三)---USB DIY 講座 (一)

(補充說明:很好玩的事,在我的網頁人氣中,曾經有人請我去開USB 的課,我婉拒了,

因為要教人在實務上可以完成操作,不容易是幾堂課的事。但也有人請我去做車用電子

研討會的演講,那個我去,但我覺得講得不好...真的有點對不起人家。

但這兩件事情在我的系統開發日子裡,其實比重是差不多的,因為系統開發還是需要

輔助工具,USB   當然是最佳幫手,尤其是可以自己完全掌控韌體與軟體,


這是一件做起來非常愉悅及具有成就感的事。

系統產品別人可以買,可以抄,甚至複製,但開發輔助工具是非賣品,

當然它也還不具有經濟規模,但卻是非常有效的系統開發輔助工具與開發平台。

現在我用的USB   控制IC  是一般市售的 USB   MCU 了,因為還沒碰到要求很高的

傳輸效能。

但我也很少用 Bulk Transfer 了。我都是用高速HID ...所以想參考關於HID   的做法,

應該在我其他的USB HID DIY   的文章裡翻一下,應該資料也蠻充足的吧。

至於你說是用 USB   1.1 或是  2.0?

我跟你說:我現在還在用二十年前的CATC USB Inspector,它只有支援 USB  1.1 而已。

而所有的開發法則或經驗,還是完全遵循我這些十幾年前寫的文章內容。

所以你跟我說:你在科技業哩,能找到多少產品或技術可以讓你玩這麼久,

還具有非常的績效的?

另外,我還真的沒有碰過 USB   OTG 的應用,如果現在有人要跟我提所謂的OTG 

傳輸的話,我會建議他說:你要不要用一般USB   轉BLE 或是Wifi 的?

甚至我也知道有人直接用USB做Peer to Peer 傳輸線,但也好像沒有賣得比較好似的?

反正啊~現在 USB  MCU  可能比十幾年前純一般  8051  的MCU  還要便宜了,

這是真的啦。

所以啦~你還搞不搞USB  ?就看每個人的想法吧。我的文章還是重新移至此處,

有需要的人就加減看吧。你就當作工具書看吧,反正前面這幾篇是從Cypress 的教育

文檔裡補充說明的現在應該沒有人拿這家的  USB  MCU 來搞類似的東西了吧。

>>>>>>>>>>>>>>>>>>
USB DIY 講座 (一) --- 開場白
----------------------------------------------------------------------------------------------------------------------------
     <前言> 看了別人許多網站論壇,談了很多有關USB的議題,許多人都想USB DIY一下,

雖然,在USB Controller 方面,雖然Cypress 很努力的作了許多標準版、學習版,

也有很多人幫他寫書,不過,大家都還是一知半解的。我做USB作了快十年了,

從IC開發到應用領域。我可以深深體會到這些想USB DIY 的痛苦。

作 RS232 或 parallel 好像不用K什麼規格,但作USB,規格K完了,就想睡覺了,

要不然就是好不容易買了一塊版子回來玩,搞了老半天,好像還是在寫一般標準

的 8051 程式?對作USB 的認知好像也沒什麼幫助?書裡說的以外的東西,

好像就不會了耶?!

        所以,就興起了我開闢這個園地的動機了。希望透過這個園地,讓大家是 真正

以USB為主,而非只是以8051 為主。我是會從很多實務面去建構一個USB 介面,

而利用此USB幫我們作許多事情,當然我也會以一個很實際的實例來說明USB 的

建立與實際操作,而非只是說說或流於課堂講解而已。只要您跟著我的步驟,

我想對您來說:USB 不再是一個高不可攀的介面了。
        
在此,我還是先聲明幾個重點:

一、如果您連"USB" 這三個字都要我解釋,那就不必往下看了。

二、我會藉助一部份Cypress 的文件說明,畢竟他幾乎是這個領域的佼佼者。

至少,他的文件是作得很漂亮的。但是,對不起,我不是用他的USB Controller ;

但也是8051 base的。

(這樣您還有興趣嗎?還是您會說:我倒要看看您是用什麼樣的IC?答案是標準

土生土長的MIT (Made in Taiwan) IC。您也不要唬我,我在這個業界也有一點人脈的,

跟您保證您在國內絕對找不到第二顆類似的產品!!什麼創惟,松翰或義隆等)

三、我不會講HID這種低速裝置,因為這種領域或功能也可以用Full speed Cover 的,

而且,這種東西領域的附加價值不如 Full Speed 或High Speed,所以,以講求效率來說,

就不說了。(我想,您也不想您用USB作出來的東西,就像在夜市 裡幾百塊讓人家

話~趴~拉~Ken』的。這幾個字無法理解的~也不必往下看了,代表您沒跟上我

的水準。

四、沒有USB 2.0 。因為我的USB Controller 不支援。我也覺得用不到,因為大部分

DIY的東西,USB 1.1 Full Speed 就綽綽有餘了,或許您不認同,但只要看過我的東西

您就會相信。不要老是想 2.0那種高速公路,先想一想您是開什麼樣子車子的!?

或是您到底想去哪裡?那裡有高速公路嗎?

五、不講底層的Driver 寫法,因為我不懂也不會講,但不過,您放心,我的USB Driver 

是千錘百鍊的,他已經累積幾百萬顆產品的歷練,歷經Window 98SE 、ME、2000及

XP(包括XP SP2),當然,如果您很挑剔,想來個iMac 的我想也是可以的。

不過就不關我的事,我會幫您介紹牽線的~。我的Driver 是完全商品化的東西,

決不是像人家給您後,就放牛吃草,自生自滅的東西 ,不小心還會對衝一下。

如果,您真的有興趣拿去量產化的話,只要您一句話:我們就改個GUID 給您,

絕對跟別人不會相衝。

六、USB 詳細規格,我不會去特別解釋的,就看您夠不夠用功了?所以,您的問題,

我可以選擇性的回答。但我會講觀念的東西,畢竟有些實務上的觀念是比規格來的重要。

七、若您是學生,想叫我幫您作作業。對不起,我不想害您,等您出了社會,

您就會明瞭社會是很殘酷的。今天是辛苦一點,但未來是光明的。

相信我說的,我是在拯救您。

若是您的教授壓榨您作的,那您就叫他上來我的網站看一遍,如果他還是認為

您作得到的話,那~~~~您就真的完蛋了。

因為我還是不會幫您的。社會是很殘酷的咧。廢話少說,就開始了囉。
----------------------------------------------------------------------------------------------------------------------
首先,介紹主角:USB (universal Serial Bus)。

不講規格,介紹他的人格特質:(以下是取自Cypress 的教材內容的,加上我的註釋,

只要您買Cypress 的發展版,所附的光碟片裡面就有的~意思就是說:

我也有買啊!但不用,因為又貴又難買~要個Sample 都不鳥人家。)

特質一:USB is not simple (我不是唬您的~這是Cypress 說的!)

<<>> Outside, It is Simple外觀單純,城府頗深。

<<>>   The "rich user experience" requires some inner complexity

在說我啦~而您呢?要練功啊。

<<>> Even though it replaces serial and parallel ports, it's not a drop-in replacement這不就是大家USB DIY痛苦之處嗎?

<<>> It's electrically simple, but a whole protocol layer is added 。就是說您要買USB 專用IC啊!

所以,若您真的要把USB的性能撐出來~您就得好好用功,否則,人家叫您用2.0 您就

乖乖的用。但感覺好像也沒有比較快?!

買一條USB 轉RS232 就好像您只是買一台破車在高速公路上面跑而已。

而我呢?卻好像買一台平價車子,卻在無人道路上狂奔。這樣的比喻您懂嗎?

作技術可不能囫圇吞棗。否則,這些創新取代性的技術有何意義呢?!

-------------------------------------------------------------------------------------------------------------
特質二:The Host (PC) initiates all transfers

<<>>  Device respond to host requests主從觀念,沒有主機USB是沒意義的。

<<>>  Direction: OUT is host-to-device。 OUT 代表命令或資料是從PC下去的。

<<>> Direction: IN is device-to-hostIN 當然是相反的。

<<>>  USB is NOT peer-to-peer 。 若是OTG就另當別論了。

這些觀念是很重要的,尤其您是要拿來作一些資料傳輸的,您一定要認清這個事實。

USB不是萬能, 他在使用上還是有一些限制的。

至於,OTG的東西,我個人是認為應該還有其他很好的替代方案,

譬如,一般在IC設計上,USB HOST 的設計是比OTG 簡單多了,所以,

還不如USB HOST 好用。

至於對DIY 一族來說:您都脫離PC了,我想您會用SPI或IIC都比USB 簡單多了吧。


      這部分先講此,動一下滑鼠換頁吧。   

沒有留言:

張貼留言