筆者在設計USB2.0時找到了一個官方給的硬件設計正確設計指南,其中有些內容還挺nice的。不單單只是USB的設計,其中有些思想可以應用到其他的場合中。
對於USB2.0而言,全速狀態下可以達到480Mbps,帶寬相比USB1.0提高了不少。USB2.0的供電大功率供電可以達到500mA,實際上加上USB自身消耗,也就是在450~480mA左右。
1.USB供電
對於外部器件的供電選擇,可以使用USB進行供電,也可以自供電。關於USB集線器的介紹參看另外一篇關於USB集線器的介紹。
USB進行供電系統架構如下圖所示:
外部器件自行供電USB系統架構如下圖所示:
上面兩個圖是關於VBUS供電的典型應用圖,根據手冊中的介紹,如果使用了wakeup功能,那么需要使用USB control寄存器來檢測VBUS的狀態。
筆者設計的時候,並未采用圖上接入1.5K電阻形式,只是讓USB提供5V/500mA的電源,電源配置需要在USB固件時進行配置,硬件電路如下圖所示:
2.WAKEUP引腳設置
筆者設計的電路中,並未提供在無數據傳輸時進行睡眠,有數據傳輸時進行喚醒功能,而是一直在喚醒狀態。
3.USB復位電路
上面幾張圖手冊中提及到對於簡單的RC電路進行復位的不足之處。當 USB 器件斷開時,芯片被斷電,但電容仍持續被充電到芯片的電源電壓,然后它通過電阻緩慢放電。如果立即重新插入 USB 器件,會怎么樣呢?如果電容放電,但其電壓尚未低於復位閾值,那么復位引腳將為芯片供電,但該引腳的電壓過高,所以無法在 t2 時復位芯片。暫時可以通過在圖 7中添加二極管來解決該問題,從而可以加快掉電時電容電壓的放電速度,但只能縮短從斷開到重新連接的重要時間。RC 放電方法取決於當 LDO 輸入被斷連時它的輸出電壓是否降低到 0 V,而這種情況又取決於特定 LDO 及其外部組件(如大容量電容)。最重要的問題是該電路無法保證芯片
在任何情況下都能可靠地復位,尤其是在 USB 快速斷連/連接情況下。
手冊中給出了下面理想的復位解決方案,這樣當然是最后的結果。
在實際中,筆者測試的情況對於常用的RC電路可以滿足本設計的要求,如下圖所示:
4.晶振要求
5.USB差分阻抗控制
關於差分阻抗的控制,筆者之前的博客已經說明,可以去查看相關內容,這里簡要提及一下。
6.PCB設計注意事項