花200多元,手搓迷你主机

描述

工程名称:【FL PC】泰山派迷你主机

工程作者:flyn

前言

说出来你可能不信。

其实这个像“手办”一样的方块,是一个迷你主机。

主打一个超超超便携!

主机

它还有带屏显的拓展版本,摇身一变,就是手机。

主机

为什么要做这个主机?

本项目的初衷是想以“泰山派”开发板为核心打造一个PC主机,期望制作过程可以进行linux的趣味学习和开发。

然后,在打造过程中,又顺便设计了:

——2块扩展板,用于增加接口

——内置了 散热风扇、扬声器、咪头

——转接出 GPIO排座


 

主机

虽然一开始,是跟着泰山派训练营活动边做边学,命令也是边翻文档边敲。但还是走通了嵌入式学习与开发的整个流程,完成了项目制作。可喜可贺~

01

迷你主机的参数/亮点?

 

主机

1. 使用立创泰山派开发板设计

如果你已经有泰山派,DIY这个项目的总成本可以压缩到100多元!(该成本需节约液晶屏和外壳)

2. 便携,能轻松揣兜里!出差旅游都能带!整机尺寸为5.4X5.2X11.3(cm)

3. 扩展出M.2硬盘、千兆网口、USB等多种接口,可运行Ubuntu和Android系统。

4. CPU: RK3566,4核Cortex-A55,主频1.8GHz

5. GPU: ARM G52 2EE

6. 内存: 2GB LPDDR4

7. 存储: 16GB EMMC

8. 其他接口: TF卡座、MicroHDMI、2.4G wifi、蓝牙、USB2.0 * 1、Type-C * 1、debug串口 * 1

9. 拓展板 存储接口:M.2接口硬盘 (2242尺寸,SATA协议)

10. 拓展板 其他接口:3.5mm耳机接口、Typ-c口 * 1、USB2.0 * 3、千兆网口 * 1、Typec电源接口、GPIO扩展排座

11. 拓展板 显示屏:3.4寸 412x960 RGB 电容屏

12. 应用场景:PC主机、桌面摆件、智能家居中控、NAS存储

想制作一个这样的主机,如何硬件设计?如何将泰山派开发板的作用发挥出来?

02

硬件部分

本项目除去泰山派开发板外共有2块PCB板(如果要显示屏还要做一块转接板),我将其命名为EXP扩展板和IO扩展板。

主机

顶部盖板

主机

EXP拓展 - POWER

主机

EXP拓展 - GMAC

 

主机

EXP拓展 - POGO

主机

EXP拓展 - HPJ

主机

EXP拓展 - USB2.0

主机

EXP拓展 -  SSD

主机

EXP拓展 -  PCB

主机

io扩展-原理图

主机

io扩展-PCB图

主机

lcd_adapt-原理图1

主机

lcd_adapt-原理图2

主机

lcd_adapt-PCB图

 

主机

io_extend_hj

上下滚动查看所有电路设计图

 

01 EXP扩展板

该板主要通过FPC排线和弹簧顶针 (POGO PIN)从泰山派开发板上引出电源接口、网口、USB口、SATA接口、耳机接口 等。各接口如下所示:

主机

主机

 

(1)如何实现拓展接口功能?有什么设计注意事项?

USB扩展芯片使用SL2.0A,是一颗支持1转4的HUB芯片。

主要作用:将EXP接口中的USB3扩展出4个usb2.0口,方便外接 u盘、键盘、鼠标、usb摄像头(支持开发)。

设计注意事项:

①USB3原先是3.0接口,其部分引脚和sata1是共用的,不能同时使用,需在设备树里将其修改为2.0接口,只使用USB3_HOST1_DP和USB3_HOST1_DN两只引脚。

②主控的SATA1引出了M.2接口,可接入2242尺寸 SATA协议 的硬盘。测试时不要买成mSATA硬盘和NVME协议硬盘,前者尺寸大后者协议不对!

(2)主机如何通过网线连接上网?
 

GMAC的phy芯片采用瑞昱的RTL8211F,参考立创开发板官方出的扩展板设计即可。

 

 

02 IO扩展板

如何增加主机的可玩性呢?就看IO拓展板了!

首先,IO扩展板将泰山派开发板上的40PIN扩展口引出到侧面,通过PWM14引脚驱动散热风扇,并设计了DCDC电路用于风扇供电(5V转12V)。

其次,这块板接入了所有外扩IO,大家可灵活设计,比如你可以:

在板上加MP6050实现自动翻转屏幕 

直接做个模块从背面排座插入

开源项目的特点和乐趣就在此!
主机

 

 

 

03 LCD适配板

 

电容屏:HD34004C40

RGB接口驱动芯片:st7701s

触摸驱动:cst328

 

(1)没有在泰山派引出RGB接口,要怎么加电容触摸屏?

这块适配板的作用,就是将mipi接口转为RGB接口。
 

 

(2)具体怎么操作?
 

这款屏幕则需要通过spi引脚进行初始化。

而泰山派的mipi接口座只提供了背光、mipi引脚。

为了和IO扩展板独立开来,不使用其上面的IO,就给适配板上另外加了一颗smt32g030f6p6来对液晶屏进行初始化操作。

主机


 

(3)焊接与烧录注意事项?

 

这块适配板是直接贴在液晶屏背面的,要注意:

排针仅用于烧入smt32固件,最好不要焊,用弹簧顶针插上烧固件;

背面用绝缘胶贴好,防止碰到液晶屏金属背板导致短路;

编码开关是用于兼容同样接口定义+不同驱动芯片的液晶屏,比如4寸RGB方屏、4寸RGB长条屏,此项目可以不用焊接;

该屏幕背光电流最大20mA,需将泰山派上的背光限流电阻R95和R96都改为22R!!!

03

软件部分

01 液晶适配板STM32驱动

这里的代码通过STM32CubeMX生成,基于Keil编写。

当stm32检测到复位信号后开始初始化液晶屏。

代码比较简单查看lcd_config.c就行,以下是lcd_config_task函数,在主函数中循环运行。

void lcd_config_task(void){    //static uint8_t status = kStatus_idle;    static uint8_t status = kStatus_reset;    static uint32_t tick;    static lcd_t *lcd_select = NULL;

 

   if (rst_key_is_pressed()) // 检测reset_key信号    {        status = kStatus_reset;    }    switch (status)    {    case kStatus_reset:        HAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_RESET);        tick = HAL_GetTick();        status = kStatus_config;        break;    case kStatus_config:        lcd_select = read_lcd_selected(); // 读取lcd型号id

 

       if (lcd_select)        {            if (HAL_GetTick() - tick > lcd_select->reset_time)            {                HAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_SET);                lcd_select->config(); // 配置lcd                status = kStatus_idle;            }        }        else        {            // 找不到对应lcd            status = kStatus_idle;        }        break;

 

   case kStatus_idle:    default:        break;    }}

02

开发板Android系统

目前使用的是Android系统,基于泰山派官方资料里的SDK和Ubuntu18.04.6环境编译。官方sdk已基本适配,稍微修改下设备树即可,如果要带液晶屏需要添加触摸驱动。

(1)想外接显示器+显示屏,要怎么选择?

PC主机可以通过泰山派开发板的hdmi接口连接到外接显示器,也可以加装3.4寸长条屏显示,通过修改tspi-rk3566-user-v10.dts切换。

虽然可以同时使用mipi和hdmi接口,但是RK3566只能异屏同显。也就是说在使用3.4寸屏时接hdmi显示出来的也是此分辨率的竖屏,使用体验上还不如二选一好。(下图来自泰山派开发板资料)

主机

(2)USB3.0和SATA1不能同时使用,怎么破?

根据瑞芯微的文档说明,USB3.0和SATA1是不能同时使用的,但是我其实只用了USB中的dp和dn,引脚上与SATA是没有重叠的。

万能的吴工提出了把USB3.0改为2.0和SATA共用的建议,并且给出了设备树的修改方案。感谢吴工^ ^

主机

&usbhost_dwc3 {  phys = <&u2phy0_host>;   phy-names = "usb2-phy";  maximum-speed = "high-speed";   status = "okay";};&combphy1_usq {  rockchip,dis-u3otg1-port;   status = "okay";};

 

&sata1 {  rockchip,enable-ssc;  status = "okay";};

(3)关于触摸驱动?

选用的3.4寸液晶屏使用的触摸芯片为cst328,我按照官方文档里的触摸讲解,重新写了个驱动。

如果你要把触摸驱动直接编译到内核中,请根据下方步骤操作:

①将驱动文件复制到kernel/dirvers/input/touchscreen目录下,修改touchscreen 目录下的Kconfig文件以及Makefile文件。

②调出menuconffig,找到CST328_Touchscreen使能后保存配置,进行内核编译。

③单独将kernel目录下的boot.img通过RKDevTool工具烧入即可。

source "drivers/input/touchscreen/hyn_cst328/Kconfig"obj-y += hyn_cst328/

主机

 

04

组装说明

①物料清单

主机

②组装流程

主机


主机


主机


主机


主机


主机

上下查看组装图解

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分