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