因為墨雲是基於高中物理水平的電路知識來學習、而且此前也就玩過樹莓派、Esp8266之類的開發板,水平基礎趨近於零,所以在寫這個系列的時候抱著記錄的心態、還望不足之處還望大佬們指正。
《論語》說:見賢思齊焉。所以現在墨雲現在又開始瞎折騰了
為啥突然想做嵌入式開發呢,因為看見了下面兩位牛人
【稚暉君】
https://www.bilibili.com/video/av65365123/
【在名片上執行的Business Card Linux】
https://www.ithome.com/0/465/952.htm
所以躁動的心開始蠢蠢欲動。
先定個小目標:
設計一個沒啥作用,但是可以執行Linux的小板。
樣子大概長這樣:
所以有了初步想法,那開始吧
1. 工具與晶片說明
立創EDA:電路圖與PCB設計工具,本次硬體部分設計全部使用立創EDA完成
F1C100s :全志的一款基於Arm的小型Soc,自帶32MB的記憶體,其升級版F1C200s為64MB記憶體,因為其極其便宜(當然最近因為晶片漲價影響),可以執行Linux,最典型的基於該晶片的荔枝派開發板。
CH340E:USB轉串列埠通訊晶片,是作為與外界通訊的唯一介面 、CH340E個頭小、外圍電路少,使用簡單。
原理圖:先後參考了(baipiao)了Licheepi Nano、Business LinuxCard、LiShanwenGit(https://www.oshwhub.com/LSW12315)立創開源廣場的一系列專案
2.原理圖說明
電源管理
電源部分使用USB方式供電,輸入電壓為5V,這裡供電部分和串列埠電路共用相同USB埠。
通過查詢F1c100s資料手冊:
通過綜合分析,我們可以大概把電源分為4類
Vdd-Core:1.1V
Vcc-Dram:2.5V
AVCC : 3.0V
UVCC/VCC-IO/TV-AVCC/TTL:3.3
這裡主要使用 SY8088AAC 同步降壓DC-DC穩壓器,為SOT32-5的封裝方式,通過使用外圍電阻調整輸出電壓。
公式為:
Vout = 0.6 * (`1+Ra/Rb)
而AVCC使用XC6206P302MR-SOT23的封裝方式,輸入5V 輸出為3.0V
因為 AVCC為模擬電源電壓,為了避免引入電源干擾,通常需要把把類比電路與數位電路分開隔離開(這個地方解釋可能不對,歡迎指正)。
電源部分的原理圖如下:
電壓輸入輸出端都使用濾波電容進行處理,使用還要接入2.2uH的功率電感,注意一定要用功率電感,電流要求可以達到1A以及以上的才行
這個板子使用0805的功率電感,建議最好使用CD32型別的繞線功率電感。
核心原理圖
對於核心部分的原理圖如下,因為本次電路設計主要以驗證為主,所以並沒有做太多的外設電路。
除了常規的核心、外圍、DRAM工單引腳,核心部分還引出了
1. TF卡引腳,作為本板子唯一的系統載入電路,這是必須的
2.晶振,使用規格為24Mhz的有源晶振、加兩個15pf的負載電容
3.串列埠除錯 作為板子與外界唯一互動的通道,這個也是必須的,然而在做這個成功的給自己挖坑了。
4.LED燈,這是這個板子唯一的外設,也是用來學習驅動開發的第一步。
5.dram_vref、Var1、Var2 這是必須要接的、外圍電路,我也不知道的幹啥的 ~_~…
6.USB OTG 也是作為一個通訊介面來使用,通過這個介面可以為板載Flash下載程式,但是因為本板沒有做Flash,所以目前唯一的作用就是放到驗證fel是否可以調通。
7.復位按鈕
挖坑點
一直以來認為發光二極體也是二極體,所以就有下面的設計(亂畫),於是後來感覺板子沒問題,但是就是串列埠死活不顯示資料、在眾多大佬的幫助下,才發現了這個其妙(naocan)
的接線方法,於是將兩個發光二極體位置放了兩個0歐的電阻,一下子就成功調通了。
對於晶片電源輸入端的濾波電容與Dram_vref接線如下:
對於濾波電容簡單的說法就是,對於供電端的電壓,因為電路設計或者外界干擾等等,其實不是完美的電壓,總會存在高頻或是低頻的噪聲,而用小容量的電容就可以降低這些干擾。
常規的容值就是 10uf 、1uf、100nf
通訊電路
我們在核心原理圖中看到了引出的串列埠線路,而串列埠的介面如下:
顯然在你看看你超博的筆記本機身,並沒有發現這個介面,偶爾還有一些老的筆記本上面可以看到類似的介面,對不起——那是螢幕的VGA介面。
那我們如何使用串列埠傳輸的資訊呢,我們需要一個USB轉串列埠的晶片,usb轉串列埠的晶片很多,這裡選擇 CH340E 這個型號,因為其很小,接線也方便。
原理圖如下:
前面提到,這個板子共用了電源與TTL共用了一套設計,也就是是說USB線插上就可以啟動小板,並且開始進入串列埠除錯。
原理圖中的U5是一個自恢復保險絲。
這裡需要注意一下:
根據CH340E官方的原理圖,當VCC接入5V的時候,V3 需要接一個100nf的電容,但是此處在V3直接接入5V,也可以工作。
實際使用的時候最好不要這樣做。
TF卡介面
和電腦主機在BIOS選擇啟動方式一樣, F1C100s 支援多種方式的系統載入機制比如通過SPI介面載入Flash晶片中的映象,或者通過TF卡介面載入映象。
這裡使用TF卡作為啟動源,這樣做是因為
1.TF卡容量可以自己控制。
2.系統燒寫除錯方便
這部分電路相對簡單,原理圖如下:
OTG 與唯一的外設LED燈
3.PCB繪製
PCB尺寸為42mm*29mm ,可以說非常小了,為了便於焊接,所有容阻都是用0805的封裝方式
電源走線為14mil ,訊號線為8mil
4.PCB焊接
焊接PCB是一項手藝活,尤其是QFN方式封裝的F1C100s 更是難到髮指,還好藉助焊臺和熱風槍,完美的完成了焊接,當然放大鏡、洗板水是不可缺少的。
並且因為板子時長需要在手上把玩(盤PCB)。所以選擇了無鉛稀漿進行焊接。
效果如下:
成功執行Linux,
因為還沒開始著手做Linux移植,暫時使用LicheePi 的映象,下一節開始做Linux的移植。
5. 後記
事實上世界上從來沒有所謂輕易的成功,對於初次玩PCB的小白更是如此,現在這個小板能成功也是經歷三四個月,五六次打板才成功的。以下是早期的趟雷PCB場景與先烈。 (右下角為成功的小板)