這是大三下學期EDA實訓的內容,設計制作了一個簡易的U盤。
主要涉及STM32單片機、W25Q128閃存芯片、電路板繪制、文件系統移植等內容,發布出來供大家參考。
僅供學習交流使用,實驗步驟僅供參考
轉載請注明原文鏈接:https://blog.csdn.net/ZHJ123CSDN/article/details/107441980
Copyright © 2020 ZhangHoujin
1 實驗目的
在日常生活中,U盤作為存儲介質非常常見。U盤是一種使用USB接口連接計算機,並通過閃存進行數據存儲的小型便攜存儲設備。本次實驗將使用STM32單片機,配合W25Q128閃存芯片,繪制電路板並移植文件系統,制作一個簡易的U盤存儲介質。制作的電路板實物如下圖1.1所示。
2 實驗原理
2.1 U盤設計原理
本次實驗以STM32F103作為主控芯片,以W25Q128作為Flash閃存芯片。主控芯片與閃存之間通過SPI方式進行數據通信。向芯片中移植FAT文件系統,可以將數據以文件的形式進行存儲,實現簡易的U盤功能。
2.1.1 SPI通信方式
SPI協議是由摩托羅拉公司提出的通訊協議,即串行外圍設備接口,是一種高速全雙工的通信總線。它的通訊速率較高,被廣泛地使用在ADC、LCD等設備與MCU間通信的場合。SPI協議使用三條總線及片選線實現通信,三條總線分別為SCK、MOSI、MISO,片選線為CS ,它們的作用介紹如下。
- CS片選線
SPI協議使用片選信號線來尋址。當主機要選擇從設備時,把該從設備的片選信號線設置為低電平,該從設備即被選中。接着主機開始與被選中的從設備進行SPI通訊。 - SCK時鍾信號線
時鍾信號線用於通訊數據同步。它由通訊主機產生,決定了通訊的速率。不同的設備支持的最高時鍾頻率不同,兩個設備之間通訊時,通訊速率受限於低速設備。 - MOSI主設備輸出/從設備輸入線
主機的數據從這條信號線輸出,從機由這條信號線讀入主機發送的數據,即這條線上數據的方向為主機到從機。 - MISO主設備輸入/從設備輸出線
主機從這條信號線讀入數據,從機的數據由這條信號線輸出到主機,即在這條線上數據的方向為從機到主機。
2.1.2 文件系統
使用SPI通信方式可以很方便地在Flash芯片上進行數據讀寫,但是像這樣的直接存儲數據會帶來很大不便。如難以記錄有效數據的位置,難以確定存儲介質的剩余空間,以及難以確定以何種格式來解讀數據等等。
更為高效的存儲方式被稱為文件系統,它是為了存儲和管理數據,而在存儲介質中建立的一種組織結構,這些結構包括操作系統引導區、目錄和文件。常見的Windows系統下的文件系統格式包括FAT32、NTFS、exFAT。在使用文件系統前,要先對存儲介質進行格式化。格式化要先擦除原來內容,在存儲介質上新建一個文件分配表和目錄,文件系統由此可以記錄數據存放的物理地址,剩余空間等信息。
由於文件系統的存在,使我們在存取數據時不再是簡單地向某物理地址直接讀寫,而是要遵循它的讀寫格式。本次實驗通過在芯片中移植FAT文件系統,可以實現對文件的高效存儲。
2.2 硬件框架
2.2.1 閃存芯片
本次實驗的Flash閃存芯片選用W25Q128JVSIQTR芯片,其容量為16MB。芯片內部分為256個塊,每個塊大小為64K字節;每個塊又分為16個扇區,每個扇區4K字節。W25Q128 的最少擦除單位為一個扇區,也就是每次必須擦除 4K 個字節。其硬件連接如下圖2.1所示。
如上圖所示,W25Q128封裝的CS引腳是芯片的片選信號線,片選線低電平有效,所以外接了一個上拉電阻將電平拉高;DO引腳是芯片的MIOS主機輸入線,主控芯片從這條線上讀取數據;WP是寫保護引腳,外接電源表示關閉寫保護,開啟數據寫入使能;HOLD引腳是芯片的數據暫停引腳,低電平時會暫停數據傳輸,因此外接了一個高電平電源;CLK引腳是芯片的時鍾信號線,用來與主控芯片保持通信頻率;DI引腳是芯片的MOSI從設備輸入線,主設備在該線將數據輸出,從設備在該線接收數據。
2.2.2 穩壓芯片
電腦的USB接口一般輸出電壓是5V,而芯片工作電壓在3.3V左右,因此需要使用穩壓芯片將5V的輸入電壓轉換為3.3V的輸出電壓。本次實驗中使用的穩壓芯片是XC6206P332MR,如下圖所示。
2.3 PCB生產工序
PCB生產的具體工作流程為:開料→鑽孔→沉銅→圖形轉移→圖形電鍍→退膜→蝕刻→綠油阻焊層→添加絲印層→鍍金手指→鍍錫層→成型→測試→終檢→包裝寄送。
- 開料是指根據工程資料的要求,在符合要求的大張板材上裁切成符合客戶要求的小塊生產板料。流程為:大板料→按要求切板→鋦板→啤圓角和磨邊→開料完成。
- 鑽孔是指根據客戶要求,在符合要求尺寸的板料上鑽出所需的孔徑。流程為:疊板銷釘→上板→鑽孔→下板→檢查和修理。
- 沉銅是利用化學方法在絕緣孔壁上沉積上一層薄銅。流程為:粗磨→掛板→銅層沉積→下板→浸1%稀H2SO4→加厚銅。
- 圖形轉移是將菲林上的圖像轉移到料板上。圖形轉移分為藍油和干膜,藍油流程為:磨板→印第一面→烘干→印第二面→烘干→爆光→沖影→檢查;干膜流程為:磨板→壓膜→靜置→對位→曝光→靜置→沖影→檢查。
- 圖形電鍍是在線路圖形裸露的銅皮或孔壁上電鍍,以達到要求厚度的銅層與要求厚度的金鎳或錫層。工藝流程為:上板→除油→微蝕→水洗→酸洗→鍍銅→水洗→浸酸→鍍錫→水洗→下板。
- 退膜是指用NaOH溶液退去抗電鍍覆蓋膜層,使非線路銅層裸露出來。水膜流程為:插架→浸鹼→沖洗→擦洗→過機;干膜流程為:放板→過機。
- 蝕刻是利用化學反應法將非線路部位的銅層腐蝕去除。綠油是將綠油菲林的圖形轉移到板上,起到保護線路和阻止焊接零件時線路上錫的作用。流程為:磨板→印感光綠油→鋦板→曝光→沖影;磨板→印第一面→烘板→印第二面→烘板。
- 字符是提供的一種便於辨認的標記。工藝流程為:綠油終鋦→冷卻靜置→調網→印字符→后鋦。
- 鍍金手指是在金手指上鍍上一層要求厚度的鎳金層,使之更具有硬度和耐磨性。流程為:上板→除油→水洗兩次→微蝕→水洗兩次→酸洗→鍍銅→水洗→鍍鎳→水洗→鍍金。
- 噴錫是在未覆蓋阻焊油的裸露銅面上噴上一層鉛錫,以保護銅面不蝕氧化,以保證具有良好的焊接性能。流程為:微蝕→風干→預熱→松香塗覆→焊錫塗覆→熱風平整→風冷→洗滌風干。
- 成型是指通過模具沖壓或數控鑼機鑼出客戶所需要的形狀。數據鑼機板與啤板的精確度較高,手鑼其次,手切板最低具只能做一些簡單的外形。
- 通過電子檢查可以檢測到目視不易發現到的開路,短路等影響功能性的缺陷。流程為:上模→放板→測試→合格→FQC目檢→不合格→修理→返測試→OK→REJ→報廢。通過目檢板件外觀缺陷,對輕微缺陷進行修理,避免有問題及缺陷板件流出。工作流程為:來料→查看資料→目檢→合格→FQA抽查→合格→包裝→不合格→處理→檢查OK。
2.4 PCB板層含義及功能
- (1)信號層(Signal Layers)
信號層被用於放置連接數字或模擬信號的銅膜走線。Altium Designer電路板可以有32個信號層,其中Top是頂層,Mid1~30是中間層,Bottom是底層。習慣上Top層又稱為元件層,Bottom層又稱為焊接層。 - (2)阻焊層(Soldermask Layer)
阻焊層是在銅層上面的一層,這一層讓PCB看起來是綠色的。阻焊層覆蓋了銅層上面的走線,防止PCB上的走線和其他的金屬、焊錫或者其它的導電物體接觸導致短路。阻焊層的存在防止了焊錫搭橋。我們可以看到阻焊覆蓋了PCB的大部分,但露出了銀色的孔環以及焊盤,這樣可以方便焊接。 - (3)錫膏防護層(Pastemask layer)
錫膏防護層和阻焊層的作用相似,不同的是在機器焊接時所對應的貼片式元件的焊盤。如果板全部放置的是通孔元件,這一層就不用輸出Gerber文件了。在將貼片元件貼到PCB板上以前,必須在每一個貼片焊盤上先塗上錫膏。 - (4)絲印層(Silkscreen Layer)
白色的字符是絲印層。在PCB的絲印層上印有字母、數字以及符號,這樣可以方便組裝以及指導大家更好地理解板卡的設計。設計時經常會用絲印層的符號標識某些管腳或者LED的功能等。 - (5)機械層和禁止布線層(Mechanical Layer / Keep-Out Layer)
機械層是定義整個PCB板的外觀的,平時所說的機械層就是指整個PCB板的外形結構。禁止布線層定義了具有電氣特性的銅線邊界,也就是說只要先定義了禁止布線層后,所布的具有電氣特性的線不可以超出禁止布線層的邊界。 - (6)鑽孔層(Drill layer)
鑽孔層提供電路板制造過程中的鑽孔信息,如焊盤過孔就需要鑽孔。一般文件會提供了鑽孔指示圖(Drillgride)和鑽孔圖(Drill drawing)這兩個鑽孔層。
3 實驗過程
3.1 繪制原理圖
3.1.1 下載封裝庫
由於需要向工廠投板,所以直接使用工廠的封裝庫會方便些。直接去嘉立創的碼雲倉庫里查找封裝文件即可。
選擇第一個 嘉立創SMT/JLCSMT_LIB 可貼片元器件基礎庫,下載ZIP壓縮包。
將下載的ZIP文件解壓,即可獲得嘉立創的SMT貼片封裝庫。
3.1.2 新建工程
在Altium Designer軟件中,新建一個PCB工程。工程模板選擇默認,工程名稱設置為 USB_SPI_Flash
。
為工程添加一個原理圖文件。
將該原理圖命名為 USB_SPI_Flash.SchDoc
並保存。
3.1.3 加載封裝庫
在軟件設置界面打開“已安裝的元件庫”界面,選擇從文件安裝封裝庫。
將之前下載的嘉立創封裝導入到軟件中。選中電容、晶振、MCU、LDO和電阻的封裝,點擊打開即可。或者直接選擇 Miscellaneous Devices LC.IntLib
文件。以 IntLib
作為擴展名的文件是AD中的集成封裝庫,其中包含了原理圖庫和PCB封裝庫,所以只引入這一個庫文件也可以。
導入完成后的元件庫如下圖3.8所示。
3.1.4 模塊繪制
接下來分別繪制各個模塊的原理圖。我直接使用了老師給的原理圖,將該原理圖導入到工程中,如下圖所示。
接下來嘗試使用金手指的USB接口,需要將原有的USB插頭封裝替換成自己繪制的金手指封裝。首先添加一個PCB封裝庫,用於繪制金手指的原理圖和PCB封裝,如下圖3.10所示。
首先繪制原理圖,原理圖封裝直接使用了老師提供的圖。
四腳排針的原理圖也使用了老師給的原理圖。
接下來繪制PCB封裝,首先添加一個PCB庫文件。
將四腳排針的封裝添加進去,如下圖3.14所示。
本次我想嘗試使用金手指的封裝,所以需要自己繪制一下USB接口的封裝。原理圖就直接使用老師給的原理圖,但封裝需要自己繪制,如下圖3.15所示。
PCB需要較嚴格的尺寸要求,我是用卡尺測量的實際USB接口尺寸,根據實際的金手指畫出來的。另外需要注意PCB和原理圖的引腳需要一一對應。搜集USB接口的引腳圖,可以找到USB每個腳位所對應的實際接口。如下圖3.16所示。
根據上圖2.16所示的引腳腳位,可以設置PCB封裝中的腳位與原理圖對應。
PCB繪制完成后,需要將原理圖和PCB聯系起來。在原理圖頁面點擊 Add FootPrint
添加封裝。
添加完成過后,兩個原件的封裝就繪制完成了。將原理圖中的這兩個原件替換成自己繪制的原件就可以了。
3.1.5 原件編號
使用軟件工具將所有原件全部重新編號。在菜單欄的工具->注釋選項中,找到注釋原理圖選項。
在該界面,首先將所有已注釋的內容清空。
選擇注釋順序為 Across Then Down
,依次更新和執行更改。驗證更改並執行,將原件全部重新編號。
3.1.6 編譯工程
原理圖繪制完成后,對原理圖進行編譯。
編譯結果如下。
編譯警告說 P7-2
引腳沒有驅動源,雙擊看一下具體位置。
是因為芯片設計時,此引腳需要有輸入的驅動信號,而現在繪制的原理圖直接接地了,沒有驅動信號所以會產生警告。該警告可以忽略。
3.2 繪制PCB
3.2.1 繪制板子形狀
原理圖繪制完成后就可以繪制PCB了。新建一個PCB文件,將其命名為 USB_SPI_Flash.PcbDoc
。
按照實驗要求,重新定義PCB的板子形狀。可以在菜單欄的編輯選項中,找到設置原點選項,將原點重新設置一下。
切換到機械層,繪制矩形的邊框。首先繪制一條直線,然后雙擊設置它的長度。
繪制一個48mm × 25mm
的矩形邊框,如下圖3.28所示。
將該矩形框選中,重新定義板子形狀。
完成之后的板子形狀如下圖3.30所示。
3.2.2 導入原件
在原理圖界面點擊設計->更新PCB文件,將原件導入到PCB中。
點擊驗證更改可以對原件的封裝進行驗證。
如果此時出現了上圖的報錯信息,說明原件的PCB封裝沒有找到。這些封裝是嘉立創提供的封裝,所以只需要將對應的封裝文件導入進來就可以了。
導入完成后,依次點擊驗證更改和執行更改,原件就導入到PCB文件中了。
導入到PCB文件中的效果如下圖所示。
3.2.3 原件排布
接下來將原件依次排布在PCB板子上。
可以根據要求重新繪制一下板子形狀,如下圖3.36所示。
3.2.4 原件布線
在原件位置固定后,可以開始進行布線。首先設置布線規則。
布線之前可以使用對齊工具,將相同行列的原件對齊。
之后可以自己布線了,頂層布線初步完成后的樣式如下:
有些線在頂層鋪不開了,需要打過孔到底層去布線。首先要設置一下過孔的大小。孔徑設置為 0.5mm
,外層直徑設為 0.7mm
。
設置過孔孔徑完成后,可以進行打孔等操作。在PCB背面布線,初步布線效果如下圖3.42所示。
布線完成后,需要整體看一下布線效果,對部分線束進行修改。修改完成過后的大體布線效果如下圖3.43所示。
3.2.5 補淚滴
為了防止在機械制板的時候,焊盤或過孔因承受鑽孔的壓力而與銅膜導線在連接處斷裂,因此連接處需要加寬銅膜導線來避免此種情況發生。補淚滴后的連接處會變得比較光滑,不易因殘留化學葯劑而導致對銅膜導線的腐蝕。
在菜單欄的工具->淚滴選項中,可以設置淚滴的添加方式。
補完淚滴的PCB效果如下圖3.45所示。
3.2.6 鋪銅
連線完成后,進行鋪銅。首先鋪底層的GND層,並勾選移除死銅選項。
底層覆銅效果如下圖3.47所示。
正面覆銅效果如下圖3.48所示。
3.2.7 DRC檢查
覆銅完成后,需要進行DRC檢查。
第一次DRC檢查的結果如下圖3.50所示。
具體是有兩方面的問題:
第一個是焊盤之間的間距,有些地方超過了0.254mm。另一個是絲印到焊盤之間的間距,有些地方也小於了0.254mm。
接下來修改DRC檢查的規則,如下圖3.52所示。
第二次DRC檢查:
將檢查的約束條件去除一些,再次運行DRC檢查。
此時檢查的結果就不存在錯誤了。
3.2.8 添加絲印並檢查
首先添加一個學校的校徽,首先運行AD腳本,執行 RunConverterScript
將BMP圖片轉換為絲印層圖片。
在底層絲印層添加這個圖片,轉換過程如下圖3.55所示。
將轉換完成的絲印復制粘貼到底層絲印層即可。
但是考慮到本次的PCB板比較小,如果印上校徽可能根本看不清字,所以我就將底層的校徽絲印去掉了。經過調整,最終的背面絲印如下圖3.57所示。
絲印做完之后,需要再進行依次DRC檢查,防止絲印與焊盤靠得太近。
第三次DRC檢查結果如下:
可以看到,DRC檢查已通過。
3.2.9最終效果
PCB最終效果如下圖3.59所示。
三維模擬視圖如下圖所示。
3.3 PCB打板
3.3.1 導出文件
本次PCB實訓使用嘉立創打板,首先將PCB源文件復制一份並壓縮至RAR格式。
在嘉立創助手上傳壓縮文件。
上傳完成后,可以查看文件解析結果。
3.3.2 填寫訂單
在下單頁面填寫相關選項,點擊提交訂單即可。
因為這塊板子是我的第二次設計,前幾天已經投過一次板了,我覺得當時做的板子布局不太好,所以就重做了一次。第一次投稿時選用了SMT貼片,這次投稿就不再用SMT了。兩次投板的訂單列表如下圖3.66所示。
3.3.3 原件貼片
第一次投板時選用了工廠的SMT貼片,其操作步驟如下。
首先需要在嘉立創的SMT訂單頁面上傳自己的PCB源文件,由嘉立創自動生成對應的BOM表和坐標文件。
上傳完成后,點擊下一步,可以看到原件的BOM表,如下圖3.68所示。檢查原件的BOM表與自己PCB所用的原件是否相同,檢查完畢后可以點擊確認。
確認元件清單無誤后,可以看到PCB的模擬貼片圖。如下圖3.69所示。
上面是我第一次畫的PCB貼片圖,當時因為時間比較緊張,所以畫得比較糟糕,原件也不整齊,過孔也比較多。元件貼片圖檢查完成之后,就可以對整個SMT訂單進行確認了。
確認訂單前可以查看具體的項目費用情況。
整個訂單包括PCB打板訂單和SMT貼片訂單,確認完訂單並提交付款后,就只需等待發貨了。
4 實驗結果
本次實驗根據原理圖繪制了相應的PCB電路,並將PCB文件投稿至工廠,進行了工廠打板和SMT貼片。本次共投出了兩版電路板,第一版使用了SMT貼片,第二版沒有貼片。收到板子后,可以嘗試燒錄程序實現U盤功能。
4.1 准備工作
在收到PCB樣板后,首先需要對PCB樣板的線路進行檢查,可以用萬用表測量線路是否導通,是否存在短路等問題。檢測完成后,由於后續需要往里面燒程序,所以要把缺少的排針先焊上。焊接完成后如下圖4.1所示。
本次使用的是金手指的封裝,但由於經費問題沒有在金手指處做沉金處理,所以現在金手指位置是一層白色的錫。當我嘗試將PCB插入USB接口時,發現PCB金手指位置的尺寸被設計得太大了,USB接口插不進去,所以又打磨了一下PCB。
打磨完成后,將PCB插入USB擴展塢進行測試。測試結果如下圖4.2所示。紅色的LED因為連接到了穩壓管的輸出端,所以一插上就亮了。
此時在電腦的設備管理器中可以看到該設備為 Unknown USB Device
未知的USB設備,如下圖4.3所示。
接入電源時,可以測試一下PCB的供電是否正常。我主要測試了一下穩壓管的輸入和輸出電壓,輸入的5V是USB接口的電壓,輸出測量的是3.28V,也基本上正常。如下圖所示。
另外其他的線路也要進行初步測量,以確保板子能夠正常工作。
4.2 程序燒錄
原理圖在設計時使用了PA13和PA14作為預留的程序下載引腳,網絡標號標注為SWDIO和SWLCK,說明原理圖被設計為用SWD方式下載程序。使用SWD方式下載程序可以節省端口占用,它只需要SWDIO、SWCLK、VCC和GND四條引腳就可以了,也就是對應PCB板上預留的四腳排針。
將PCB板上的四腳排針連接到JLink、STLink等仿真器上,再將仿真器連接電腦。老師給我們的工程代碼需要在IAR軟件中打開,如下圖4.6所示。在IAR軟件中修改仿真器的配置,編譯程序沒有錯誤的話就可以下載了。下載完成后應該就可以將PCB作為U盤使用了。因為我手邊沒有下載器,所以暫時就不去下載代碼了。
工程代碼的基本原理是在SMT32與W25Q128閃存芯片之間進行SPI通信,利用SPI通信可以在主設備芯片和閃存之間傳遞數據。再向芯片中移植一個文件系統,就可以實現像U盤一樣的讀取文件。
5 實驗總結
本次EDA實訓設計制作了一款基於STM32的簡易U盤。繪制了原理圖、封裝庫,繪制了兩版PCB電路板並將工程文件投廠生產,最終得到了完整的PCB實驗板實物。利用嘉立創的SMT貼片服務,將原件焊接到了電路板上,方便樣板測試。同時導出了BOM表,可以自己進行元件的購置。
本次設計是從原理到實踐的結合,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,實踐是檢驗真理的唯一標准。我們電子專業的學習更是如此,不僅要有豐富的理論知識,還要有很強的動手能力,這是工科學生的特點。只有理論與實踐並重,我們的專業水平才能提高,這就是我在這次課程設計中的最大收獲。
6 附錄
電路板工程文件及實驗代碼👇
GitHub:https://github.com/ZHJ0125/USB_SPI_Flash
Gitee:https://gitee.com/zhj0125/USB_SPI_Flash