項目作者:FanHuaCloud
作者簡介:大佬已在硬創(chuàng)社開源了近50款開發(fā)板,動手能力極強,于去年年底開始接觸學(xué)習(xí)Linux,并由全志V3s、F1C200S等芯片開始上手DIY個人的Linux開發(fā)板。
本項目是基于全志F1C200S設(shè)計的開源屏幕開發(fā)板,設(shè)計的目標(biāo)是提供一個低成本、超迷你且適合Linux開發(fā)的平臺,特別是針對屏幕接口的支持。
項目簡介
開發(fā)板板載16M nor flash,主控芯片采用F1C200S,內(nèi)置64M DRAM。同時附帶USB Host接口以及USB type-c口,以及CH340串口轉(zhuǎn)USB芯片,用于開發(fā)調(diào)試使用。
開發(fā)板2D預(yù)覽圖
由于芯片功能繁多,開發(fā)板設(shè)計也相對復(fù)雜,為了教會大家自己DIY開發(fā)板,作者將開發(fā)板設(shè)計的硬件部分按功能拆分為了10個不同的知識點,來對開發(fā)板整體設(shè)計進行全面介紹和詳細講解電路原理。
全志F1C200S主控
全志F1C200s是一款高度集成、低功耗的移動應(yīng)用處理器,支持高清視頻解碼,包括H.264、H.263、MPEG 1/2/4等格式,同時還具備音頻編解碼器和I2S/PCM接口,適用于多媒體音視頻設(shè)備。
芯片基于ARM 9架構(gòu),并SiP了DDR,這樣的配置使其外圍電路在設(shè)計時會非常簡單,非常適合作為入門級的Linux開發(fā)板。該部分原理圖如下圖所示:
F1C200S主控原理圖
1SVREF用于給DRAM提供參考電壓,該部分所需電壓為VCC_DRAM/2
22VCC_DRAM為DRAM供電,電壓為2.5V
3VCC_IO為GPIO供電,電壓為3.3V
4VCC_CORE為核心供電,電壓為1.2V
5AVCC為模擬供電,該部分非常重要,不接會導(dǎo)致USB Host無法枚舉設(shè)備,同時需要注意該引腳供電范圍為2.5V-3.1V,不可以使用3.3V供電,會導(dǎo)致內(nèi)部電路損壞。
6X1為24M晶振,為芯片提供時鐘信號,采用22pF負(fù)載電容。
SDMMC接口
SDMMC接口用于接入Micro SD卡,系統(tǒng)啟動時,可以從SD卡中加載U-Boot,內(nèi)核,RootFS,實現(xiàn)Linux啟動。
SDMMC接口原理圖
如上圖所示,相關(guān)線路說明如下所示:
1CLK: SDMMC時鐘,每個時鐘周期傳輸一個命令或數(shù)據(jù)位。頻率可在0至25MHz之間變化。SD卡總線管理器可以自由產(chǎn)生0至25MHz的頻率,沒有任何限制
2CMD: 命令傳輸線,命令通過該CMD線串行傳輸
3D0~D3:數(shù)據(jù)通過這些數(shù)據(jù)線傳輸
4按照SDMMC規(guī)范,SDMMC線路還需要增加10K上拉電阻,如果沒有可以會影響數(shù)據(jù)傳輸,本原理圖中R7-R11即上拉電阻。同時,為了保證電源質(zhì)量,增加了C22濾波電容
5SHELL引腳為SDMMC連接器固定引腳,此處接地處理,CD引腳用于探測SD卡是否插入,這一塊懸空未使用
CH340串口轉(zhuǎn)USB
此電路用于用戶連接系統(tǒng)調(diào)試中斷使用,其功能為將TTL串口轉(zhuǎn)換為USB接口,使得用戶可以在電腦中連接該串口進行調(diào)試。
需要注意的是,由于F1C200S的UART0接口(PE0/PE1引腳)被觸摸的I2C接口占用,所以本開發(fā)板將CH340的串口連接到了F1C200S的UART1(PA2/PA3引腳)上,后續(xù)編譯U-Boot和內(nèi)核時我們需要相應(yīng)的修改代碼。
CH340串口轉(zhuǎn)USB原理圖
如上圖所示,該部分除了串口轉(zhuǎn)USB外,還兼顧了系統(tǒng)的供電。
1用戶通過Type-C線纜連接該調(diào)試口后,將同時為開發(fā)板供電
2板上的5.1K電阻用于雙頭Type-C線纜識別從機,為其供電
3如果R12,R13不焊接會導(dǎo)致使用雙頭Type-C線時板子沒有供電
4D2為TVS瞬態(tài)抑制二極管用于保護PCB板上元件,防止靜電擊穿原件
三路DC-DC接口
該部分主要為主控芯片提供供電,采用SY8089A1AAC,單路最大輸出電流2A。
三路DC-DC接口原理圖
1SVREF用于給DRAM提供參考電壓,該部分所需電壓為VCC_DRAM/2
22VCC_DRAM為DRAM供電,電壓為2.5V
3VCC_IO為GPIO供電,電壓為3.3V
4VCC_CORE為核心供電,電壓為1.2V
5AVCC為模擬供電,該部分非常重要,不接會導(dǎo)致USB Host無法枚舉設(shè)備,同時需要注意該引腳供電范圍為2.5V-3.1V,不可以使用3.3V供電,會導(dǎo)致內(nèi)部電路損壞。
6X1為24M晶振,為芯片提供時鐘信號,采用22pF負(fù)載電容。
在該模塊中,我們使用了2520電感,與普通的電感相比,體積更小,但是2520電感在DCR(即直流電阻)參數(shù)上,會比普通的電感大一點,電感值的計算公式可以參考下方:
DCDC電流電感值計算公式
1L為計算出的電感容量
2Vout為降壓芯片輸出電壓
3L為計算出的電感容量
4Vin為降壓芯片輸入電壓
5Fsw為芯片開關(guān)頻率,SY8089取1.5Mhz,也就是1500000Hz
6Iout,max為最大輸出電流
如下圖所示,本開發(fā)板電感值直接參考SY8089數(shù)據(jù)手冊文檔,折中后取1.5Uh:
電源模塊在電路中的接線
SY8089典型應(yīng)用以及電容電感選型表
芯片的反饋電阻控制著芯片的輸出電壓,可以參考下方公式計算:
SY8089芯片反饋電阻計算公式
1Rh為上端分壓電阻阻值
2Rl為下端分壓電阻阻值
30.6V指的是芯片的Vfb,也就是反饋電阻
4Vout即最終的電壓輸出值
5在這里,我們需要確定Rl和Vout,然后將其代入公式,計算出Rh
6為了最大限度地減少輕負(fù)載下的功耗,最好為 RH 和 RL 選擇較大的電阻值。強烈建議 RL 使用 10k 到 200k 之間的值
AVCC 3V LDO
該部分用于AVCC 3V供電,使用XC6206 3V LDO,位號為U10,由于較為簡單,此處不在詳細說明。
SPI Nor Flash
Nor Flash為F1C200S芯片提供了第二種啟動方式。
1上電后,F(xiàn)1C200S首先從內(nèi)部BROM(芯片內(nèi)置,無法擦除)啟動
2首先檢查 SD0 有沒有插卡, 如果有插卡就讀卡 8k偏移數(shù)據(jù),是否是合法的啟動數(shù)據(jù), 如果是BROM 引導(dǎo)結(jié)束, 否則進入下一步
3第二步:檢測SPI0 NOR FLASH是否存在, 是否有合法的啟動數(shù)據(jù), 如果是BROM 引導(dǎo)結(jié)束, 否則進入下一步
4第三步:檢測SPI0 NAND FLASH 是否存在, 是否有合法的啟動數(shù)據(jù), 如果是BROM 引導(dǎo)結(jié)束, 否則進入下一步
5最后,因為找不到任何可以引導(dǎo)的介質(zhì),系統(tǒng)會進入usb fel模式,此時可以使用USB燒錄
此處SPI Nor Flash可以同時兼容Nand Flash,不過目前裸機資料基本上都是以SPI Nor Flash為基礎(chǔ),所以此處焊接了W25Q128JVEIQ 128Mbit(16Mbyte)SPI Nor Flash。
W25Q128JVEIQ原理圖
1R4為上拉電阻(F1C200S內(nèi)部也存在上拉電阻,可以不焊),防止未供電時芯片錯誤寫入數(shù)據(jù)
2C16為濾波電容
3SW2為FEL模式開關(guān),將SPI_MISO短路到地后,F(xiàn)1C200S將無法檢測到SPI Nor Flash,從而進入USB Fel模式,此時可以松開按鍵,燒錄內(nèi)容至SPI Nor Flash
4/WP為SPI Nor Flash保護引腳,低電平有效,有效時無法寫入數(shù)據(jù)
5/HOLDor/RESET為SPI Nor Flash保持或者復(fù)位輸入引腳。
6最后,因為找不到任何可以引導(dǎo)的介質(zhì),系統(tǒng)會進入usb fel模式,此時可以使用USB燒錄
外部IO接口
此處引出了未使用的IO,用戶可連接其他設(shè)備,C35為濾波電容,用于保證電源質(zhì)量,該部分引腳功能可以參考下圖(來源:芯片數(shù)據(jù)手冊14/15頁):
外部IO接口引腳功能
USB OTG/USB TYPE-C
該部分連接到了芯片的DP/DM引腳,為芯片的USB接口。
USB Type-C用于USB Fel模式燒錄系統(tǒng),無供電輸入/輸出能力。
USB OTG處可用于連接其他USB設(shè)備,帶5V輸出,當(dāng)然也可以接雙頭USB Type-A線纜用于USB Fel模式。
USB OTG/USB Type-C原理圖
需要注意的是,開發(fā)板中沒有連接ID線(ID線用于識別USB模式),所以在編寫設(shè)備樹時,我們需要強制指定USB模式為主機或從機。
背光驅(qū)動
該部分用于驅(qū)動RGB屏幕背光,標(biāo)準(zhǔn)40Pin RGB屏幕基本采用串聯(lián)背光,由于本身開發(fā)板供電只有5V,所以我們需要使用背光驅(qū)動芯片升壓到合適的電壓,來驅(qū)動屏幕背光。
同時,背光驅(qū)動芯片采用恒流控制,可以避免電流過大導(dǎo)致背光LED燒毀,該部分原理圖如下所示:
背光驅(qū)動原理圖
1C19 C20為濾波電容,C19電容的耐壓需要特別考慮,一般的RGB屏背光電壓基本在18V以上(白光LED壓降3V*6串),過低的電容耐壓會導(dǎo)致電容損壞
2BL_CTR為芯片背光控制引腳,此處直接接入了上拉,再開發(fā)時可以將BL_CTR引腳接入F1C200S的PWM引腳上,這樣可以靈活控制屏幕亮度,同時,有恒流驅(qū)動的存在,控制亮度時,背光也不存在明顯的頻閃
3L1 為升壓電路的電感,按照要求一般取10uh或22uh即可,不需要使用公式詳細計算,但是需要注意電流不能超過電感額定電流
R5為芯片的反饋電阻,用于調(diào)節(jié)輸出的電流,計算公式可參考下方:
反饋電阻計算公式
此處我們選擇20ma,所以R1=0.25/0.020(Ω) = 12.5Ω,就近取12Ω。
屏幕數(shù)據(jù)手冊線路原理圖
如上圖,下方說明了LED為2并5串,額定電流為40ma,我們?yōu)榱吮kU,選擇了20ma,亮度會有所損失。
40Pin RGB/觸摸接口
此處參考屏幕數(shù)據(jù)手冊即可,由于F1C200S只支持RGB565,RGB666,此處使用RGB666,屏蔽了RGB三色的低2位,這樣最終色彩影響比較小,同時,F(xiàn)1C200S內(nèi)置色彩抖動,可以更加接近RGB888效果。
其中需要注意的是,CTP_SDA/CTP_SCL最好加上拉電阻,此處選用了內(nèi)部上拉,所以并沒有加電阻,該部分原理圖如下所示:
RGB/觸摸接口原理圖
開發(fā)環(huán)境搭建
使用VSCode的DeviceTree插件,我們可以實現(xiàn)設(shè)備樹文件的代碼高亮,編輯c語言代碼。
安裝VSCode后,我們開始安裝設(shè)備樹插件,再商店中搜索DeviceTree插件,點擊安裝安裝即可:
同理,推薦讀者同時安裝中文漢化,搜索CN,參考下圖安裝即可,安裝后按照要求重啟VSCode即可使用。
打開安裝好的Ubuntu 18.04虛擬機,將需要分區(qū)的SD卡插入電腦USB口,并右鍵點擊VMware右下角的USB存儲器圖標(biāo),點擊連接,將SD卡連入虛擬機。具體操作過程如下圖所示:
點擊桌面左下角圖標(biāo),進入所有應(yīng)用,然后搜索GPartd,可參考下圖:
此時需要輸入密碼,輸入用戶密碼,提權(quán)到root用戶,如下圖所示:
接著在右上角選擇我們需要格式化的SD卡,默認(rèn)為/dev/sda,這個是我們虛擬機的系統(tǒng)盤,我們需要切換到SD卡,此處一定要小心,sdb不一定是我們的sd卡。
完成切換后,右鍵點擊如圖所示位置,點擊“卸載”,接著點擊“刪除”按鈕刪除SD卡中原有分區(qū),最后點擊確定,確認(rèn)刪除,具體過程可以參考下圖。
接著開始創(chuàng)建分區(qū),首先創(chuàng)建boot分區(qū),用于u-boot讀取設(shè)備樹、內(nèi)核等文件,我們需要在分區(qū)前方空出一定的空間,用于u-boot以及SPL程序存放,如下圖所示,首先點擊左上角按鈕,創(chuàng)建新分區(qū),然后按照下圖創(chuàng)建boot分區(qū)。
此處為U-Boot以及SPL預(yù)留了1Mib的空間,完全足夠存放這些程序。
接著創(chuàng)建rootfs分區(qū),我們將剩下的空間全部作為rootfs,文件系統(tǒng)選擇ext4,如下圖所示:
最后點擊保存,確認(rèn)后生效,拔出SD卡備用,操作可參考下圖:
開源資料獲取
作者適配的U-Boot目前使用了master分支的U-Boot并給出了移植指南。由于后續(xù)master分支代碼可能會存在更新,所以移植指南使用了最近的一個U-Boot版本來指導(dǎo)復(fù)刻打開發(fā)者進行修改和配置,編譯出自己的U-Boot。
本項目所有資料均已開源,軟硬件都開源了,其中軟件開源了:UBoot、Kernel、Buildroot:測試鏡像下載地址等……。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19259瀏覽量
229649 -
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209322 -
串口
+關(guān)注
關(guān)注
14文章
1551瀏覽量
76421 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
全志
+關(guān)注
關(guān)注
24文章
247瀏覽量
53119
原文標(biāo)題:將開發(fā)板設(shè)計拆解為10個部分,教你DIY屬于年輕人的第一塊Linux開發(fā)板
文章出處:【微信號:gh_79acfa3aa3e3,微信公眾號:全志在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論