手搓一台主机很难吗?我花200多做出来了

嘉丽科技讨论 2024-05-29 05:18:46

说出来你可能不信。

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

主打一个超超超便携!

开源网址:https://oshwhub.com/flyn/flpc

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

开源网址:https://oshwhub.com/flyn/flpc

为什么要做这个主机?

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

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

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

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

——转接出 GPIO排座

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

一、迷你主机的参数/亮点?

使用立创泰山派开发板设计如果你已经有泰山派,DIY这个项目的总成本可以压缩到100多元!(该成本需节约液晶屏和外壳)便携,能轻松揣兜里!出差旅游都能带!整机尺寸为5.4X5.2X11.3(cm)扩展出M.2硬盘、千兆网口、USB等多种接口,可运行Ubuntu和Android系统。CPU: RK3566,4核Cortex-A55,主频1.8GHzGPU: ARM G52 2EE内存: 2GB LPDDR4存储: 16GB EMMC其他接口: TF卡座、MicroHDMI、2.4G wifi、蓝牙、USB2.0 * 1、Type-C * 1、debug串口 * 1拓展板 存储接口:M.2接口硬盘 (2242尺寸,SATA协议)拓展板 其他接口:3.5mm耳机接口、Typ-c口 * 1、USB2.0 * 3、千兆网口 * 1、Typec电源接口、GPIO扩展排座拓展板 显示屏:3.4寸 412x960 RGB 电容屏应用场景:PC主机、桌面摆件、智能家居中控、NAS存储

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

二、硬件部分(14张电路设计图)

本项目除去泰山派开发板外共有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

1.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,参考立创开发板官方出的扩展板设计即可。

2.IO扩展板

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

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

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

在板上加MP6050实现自动翻转屏幕直接做个模块从背面排座插入

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

3.LCD适配板

电容屏:HD34004C40RGB接口驱动芯片:st7701s触摸驱动:cst328

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

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

(2)具体怎么操作?

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

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

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

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

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

排针仅用于烧入smt32固件,最好不要焊,用弹簧顶针插上烧固件;背面用绝缘胶贴好,防止碰到液晶屏金属背板导致短路;编码开关是用于兼容同样接口定义+不同驱动芯片的液晶屏,比如4寸RGB方屏、4寸RGB长条屏,此项目可以不用焊接;该屏幕背光电流最大20mA,需将泰山派上的背光限流电阻R95和R96都改为22R!!!

三、软件部分

1.液晶适配板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; }}

2.开发板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/

四、组装说明

1.物料清单

2.组装流程

五、作者有话说

小编提示:作者在去年参加了星火计划外包赛道(现悬赏赛道)。通过平板、迷你负载和小手机,获得了特等奖(共2.8万奖金)、三等奖(共7.5千奖金)和鼓励奖(共4千奖金)。今年,他从0出发,再次报名星火计划自由高阶赛道。

在立创开发板和星火计划的双重耗材资助下制作迷你主机。

这个心路历程是怎样的呢?

这个迷你主机从最初的一个想法到做出实物,做做停停花了大概2个月的业余时间。

从画板的从容不迫到编写linux驱动的茫然无知,离开了mcu的舒适区,投入了linux的怀抱中,真心感觉,这怀抱好硬好硌......每晚战斗到24点,最欣慰的是头发还在。后续我会在这个迷你主机的基础上深入研究学习,希望能与大家一同进步!(为啥总感觉在哪说过 - -||)

请永远相信,每一次的挫折都是在为自己蓄积前进的力量!

在这里感谢立创开源平台,感谢立创开发板负责人吴工的耐心指导,感谢星火计划负责人陈工的耗材协助支持。emmm,星火会快到了,我养了2个月的头发到时候只能靠这点和吴工battle下了。

希望这个"迷你主机"抛砖引玉,能有更多的具有开源精神的伙伴们一起共建一个强大的开源生态!

开源引用:

官方的泰山派开发板项目okll的“泰山派MIPI DSI 转 RGB 适配器”项目风漠兮的“泰山派4寸86屏转接板”项目

再次感谢以上开源作者!

【正文完】

关注我,看一手优质开源项目

0 阅读:4

嘉丽科技讨论

简介:感谢大家的关注