close

想瞭解之前的...可以點選以下連結:


USB DIY-- 自學計畫(六)




USB DIY-- 自學計畫(五)

-----


在真正利用一般標準USB Controller 之前,一定得要先對於USB Controller 的


基本架構與規格要有一定的瞭解,否則當您碰到一些系統應用時,您自己


心裡會因為有點心虛(對於USB Controller不瞭解而產生疑慮),這是不好的。


尤其是對於我們專注於應用系統開發工作時,而且現在有很多單晶片微控器,


都已經不是像傳統一般的標準單晶片MCU,各家MCU 都會有點些許差異,


如果您不好好看一下這些原廠的技術文件的話,您就有一些資訊流失,當然啊,


您會覺得因為原廠的資料都是英文的,閱讀上可能會有所辛苦,然後想偷懶的找


有沒有中文翻譯版本,不好意思,市面上有很多這一種類似的中文書,大多是學校老師


或一些想兼職賺外快的人士隨手寫一寫或翻譯的...也都未必真正把這些技術文件的內容


真正的落實在實驗或實際應用上,所以,常常根據中文的描述自己作一遍時,


總覺得怪怪的?但又不願意懷疑書上所提的。您看我們在探討這一系列的USB 原廠範例時,


我們就發現了許多錯誤與奇怪之處,那更何況只是拿這些原廠資料翻譯的技術文件呢?


我說過了:原廠技師也是人也會出問題的,只要您懂得一些基本原理或作法,其實,


都還是可以開發出不錯的系統產品的。畢竟,人家也是真真實實的把一些該提供給客人


的相關產品資訊公開給客人參考的。但在這也不得不提醒一下各位,


這些都是國外公司的作法,有些國內的相關類似的公司或相關產品,


他們所提供的資料或內容,您就要小心了。


因為以我個人的使用經驗,國內或是大陸的相關原廠資料都會避重就輕的把一些很關鍵資料


一筆輕輕帶過,那一種似有似無的工程數據您就要特別小心,舉個簡單的例子來說:


國內有許多單晶片MCU 廠也都會跟上國外公司潮流的標榜自己家的MCU 內部也有提供


震盪迴路,說什麼免掛外部震盪器...也可以工作。好了,就說到這裡點到為止。


甚至還給您美化數據...以下是國外的原廠資料:



其中國內MCU IC 針對這兩項,第一:什麼是  1T 的8051?或是什麼1T 的MCU,語焉不詳,


結果仔細一查,什麼一下子什麼Long Jump 還是 2T 、查TABLE也不能 1T或是一個乘除法


還是要4 T...8T 的。


再跟您說:如果您真的要跑到規格書上說的24MHz 的話,您的工作電壓最好高一點....等等,


不在規格書上的但書說明...好像誰沒留意誰就跟著倒楣。人家的就很坦白跟您說:


只有 70% 的指令是 1T 或2T...這樣子誠實的寫,我們反而還會比較留意的處理,


反而在系統應用上會多加注意,所以人家說:國外的MCU 好像比較穩定,其實不是,


是因為人家誠實,所以我們系統應用工程師會特別留意處理,國內的那些MCU廠,


都好像生怕人家知道他的缺點,避重就輕的~然後被人家抓包之後,再來找FAE擦屁股,


難怪老是被冠上東西不好用的負面形象...反而賠了商譽而得不償失。


第二個就是我們說的:內部震盪迴路...相較於人家坦白從寬的指令效能說法外,


人家倒是明確的指出就是 0.25% 誤差,這一點反而國內就更沒有明確的表態數據了。


其實這種東西工程上就是怕兩種因素:一是溫度漂移,二是工作電壓漂移。大家也知道。


我們也知道人家一開始作MCU 時,這一家國外MCU都有附所謂的內部TEMP Sensor。


您以為人家吃飽太閒幹嘛附Temp sensor 給您用?當然就是他自己內部要做震盪迴路的


溫度補償啊...(想您也應該猜得到吧!)好了,國內的MCU IC 廠就想省這個東西,


(或許也不知道該如何處理吧!),結果就想偷,心存僥倖看看客人會不會留意到這一點。


結果,東西量產之後,真正碰到惡劣環境後,才知道事情大條了...相較於當初業務


拍胸脯的品質保證時,這時候就想低調處理或是逼著FAE 工程師去客人那邊做作樣子


看看可不可以打混戰蒙混過關?最後再叫FAE 工程師排排站的夾卵蛋賠不是...


所以,您不要以為人家日本大地震造成 瑞薩或日系MCU 大缺貨您就高興?市場缺口


還不一定輪得到您來接手的啦。您以為您們家的MCU 跟人家的MCU 是同一個檔次的?!


這一種MCU 就跟搞玩具MCU 一樣嗎?!...


------
所以,大家還是要真正的養成習慣察看原廠原文的技術文件資料的。


首先我們看一下一些所謂USB 專用的MCU 控制器他們的標準架構:



就是包含了 USB Tranceiver ,這個東西是類比的東西...就像我們在用UART轉成 RS232 用


的那一個什麼 MAX232或是類似的轉換IC 啦...第二個部分就是USB 專用的數位邏輯的SIE


(Serieal Interface Engine) ,在USB 匯流排上的那些PID 或是SETUP、IN、OUT 或是什麼


NAK 或 ACK 這些訊號都是屬於他要負責的...還有資料的進進出出還有與標準MCU 之間的


介面也都屬於他,所以,我們就可以看到真正的MCU 就在最右邊,跟這些USB 就沒有多大


的關係,這就是我們常看到一般MCU IC與專用USB MCU IC 不同之處。這樣的架構是比較


容易模組化,我們也就常看到市面上一些USB MCU IC 的基本架構都差不多的啦。


原因也在此。


所以,您就也可以看到USB 專用的記憶體FIFO 也不一定要長在MCU 這一邊...


這樣子的IC 架構也比較單純容易套用到不同MCU 需求上。不一定您的MCU 要 8051 或是


MicrpChip 或是AVR 甚至32 Bits的ARM...都可以容易整合的。


這一家的USB  MCU 在USB Transicever 還有一個好處:就是他不用在外掛D+/D- 匹配


電阻,早期我們在作USB時,這兩線上都還要串接  27 歐姆的...他就不用了。


另外,我在早期寫過一個USB DIY 文章中有提到D+ 上一個提升電阻的使用技巧,這一個


USB MCU 他在IC 本身的USB Transceiver 上就有提供這樣子的功能,就可以讓您在


系統上很方便的使用硬體的重複插拔功能。



接下來的這一張圖所要表達的是:我上述那一個模組化的IC 設計概念,您會發現在一般


標準的MCU 上只要兩個Registers (USB0DAT 與USB0ADR) 您可以完全處理與控制


USB 功能方塊。因為您不知道您原來標準MCU 上面有多少Registers 空間可以塞進


因為增加USB 功能之後,所需要增加的Registers 空間...


這樣子的架構就很簡單只要增加兩個Registers 位置就可以了。


(像8051 的 特別暫存器空間是在80~FF 之間,而且還要負責周邊電路的存取暫存器,


譬如還有ADC 、SPI或是PWM等等 ...其實空間使用是非常受限的!這樣子只佔兩個是比較


好一點的!當然有些公司會直接把這些暫存器移到xDATA 上...但我們知道8051 對於外部


記憶體的存取效能沒有比較好,而且您也不一定保證外部記憶體空間會不會被其他應用佔用


...甚至像PIC Like MCU 就沒有這一塊記憶體定址位置...那就更不用說了!)


所以同樣的道理:一個USB 控制介面到底要提供多少個 Endpoint 才夠用?


而且在實際應用上,每一個 Endpoint 在硬體上都是直接指到一個固定的FIFO上...


所以,我們也就可以理解到在USB 控制暫存器為何在處理Endpoint 或FIFO時,


也會採用類似的兩個Registers (USB0DAT 與USB0ADR)的作法...


這樣子在未來設計與系統擴充時,系統應用工程師


的設計變更是比較輕鬆一點的!----這一點可以體會瞭解嗎?! 這是您在瞭解系統應用之後,


您也會慢慢懂得如何在IC 架構上開規格的系統能力。這是非常重要的。



好了,我們也稍微整理一下這一棵USB  MCU IC 的一些控制暫存器,其實已經算很少的啦,


如果您有機會看過類似MP3 外帶USB 或是隨身碟專用IC 的USB 控制暫存器的話,


這樣子的暫存器數量算很少很少的啦...所以,您真的不要以為要看、要瞭解這暫存器是很難


很辛苦的。當然,我們也可以瞭解這樣子USB MCU IC 的USB 效能也不會比那些專用USB IC


好的啦...因為他們畢竟都是一般通俗常用的USB 控制IC...從這一點的應用市場來看,


我們也知道USB 3.0 在硬體上已經有一點不是很相容USB 2.0 了,像這一類的USB MCU IC


也都只做到USB 2.0 的 『Full Speed』...(其實還是USB 1.1而非USB 2.0 的High Speed)。


所以,在主機板上要真正淘汰掉USB 2.0 也沒那麼容易的...這也是USB 3.0 的市場思維問題。


(其實,USB  3.0 出來有點『生不逢時』,因為搭著iPhone/iPad 潮流,


人家產品講的是軟體附加價值,不再盲目的追求硬體極限...所以,過於強調硬體效能的


USB 3.0 就比較受不到市場的關愛眼神...他可能只是要拿來跟SATA 比較而已!)



從以上的說明,我們就知道他的 Endpoint 這一個 INDEX 暫存器的設計用意了,


也知道這樣子USB  MCU IC 未來擴充也可以達到 16 Endpoint...


好像Cypress USB 就是這樣子。


但在系統應用上,真的會用到麼多 Endpoint 嗎?!如果沒有用到,只是增加IC 本身面積,


增加晶圓代工與減少IC 晶圓量產數量...對於銷售競爭力是有負面效果的,這就見仁見智了。


至於0x20-0x23 那個 Endpoint FIFO 的定義,道理也是一樣的,我們就不說明了。


-------------------------
好了這一個章節我們從很基本的USB MCU IC 的基本架構來看USB 控制暫存器(registers)的


基本定義精神,我們就可以好好的進一步聊解USB MCU IC 該如何透過這些registers 來完成


USB 傳輸控制與USB 韌體程式設計了。


(待續)


 


 



arrow
arrow
    全站熱搜
    創作者介紹
    創作者 賈老師的真老公 的頭像
    賈老師的真老公

    ChamberPlus System Level Studio

    賈老師的真老公 發表在 痞客邦 留言(2) 人氣()