说出来你可能不信。
其实这个像“手办”一样的方块,是一个迷你主机。
主打一个超超超便携!
![](http://image.uc.cn/s/wemedia/s/upload/2024/dfe3884bf06039b0c34523bef02454d4.gif)
开源网址:https://oshwhub.com/flyn/flpc
它还有带屏显的拓展版本,摇身一变,就是手机
![](http://image.uc.cn/s/wemedia/s/upload/2024/47df9e8c4cb736136a4b2923d57a00a1.gif)
开源网址:https://oshwhub.com/flyn/flpc
为什么要做这个主机?
本项目的初衷是想以“泰山派”开发板为核心打造一个PC主机,期望制作过程可以进行linux的趣味学习和开发。
然后,在打造过程中,又顺便设计了:
——2块扩展板,用于增加接口
——内置了 散热风扇、扬声器、咪头
——转接出 GPIO排座
![](http://image.uc.cn/s/wemedia/s/upload/2024/b6251b44e575c7aae2b4b4d585496e72.jpg)
虽然一开始,是跟着泰山派训练营活动边做边学,命令也是边翻文档边敲。但还是走通了嵌入式学习与开发的整个流程,完成了项目制作。可喜可贺~
一、迷你主机的参数/亮点?![](http://image.uc.cn/s/wemedia/s/upload/2024/59d2a3088d6bde081c4cda091cf764f6.jpg)
想制作一个这样的主机,如何硬件设计?如何将泰山派开发板的作用发挥出来?
二、硬件部分(14张电路设计图)本项目除去泰山派开发板外共有2块PCB板(如果要显示屏还要做一块转接板),我将其命名为EXP扩展板和IO扩展板。
![](http://image.uc.cn/s/wemedia/s/upload/2024/d5c7df1dd052c094e1b590075299a343.jpg)
顶部盖板
![](http://image.uc.cn/s/wemedia/s/upload/2024/7edb6b0da5a18e175be719ad9f6e6761.jpg)
EXP拓展 - POWER
![](http://image.uc.cn/s/wemedia/s/upload/2024/01acad57f898ccf7885ad9517b002dab.png)
EXP拓展 - GMAC
![](http://image.uc.cn/s/wemedia/s/upload/2024/ddd949a2db0d452c40619f828e9e17fa.png)
EXP拓展 - POGO
![](http://image.uc.cn/s/wemedia/s/upload/2024/3ee5eb382bb7b9fde81010b640a8eee1.jpg)
EXP拓展 - HPJ
![](http://image.uc.cn/s/wemedia/s/upload/2024/aa359cb0127a04f253161ce66ceab2da.jpg)
EXP拓展 - USB2.0
![](http://image.uc.cn/s/wemedia/s/upload/2024/ae5a074060c839fbc05ca5cc66425838.jpg)
EXP拓展 - SSD
![](http://image.uc.cn/s/wemedia/s/upload/2024/21507806957f0f3ceed9104311c97eeb.png)
EXP拓展 - PCB
![](http://image.uc.cn/s/wemedia/s/upload/2024/5af7448ce77994705e277169eb9ce109.jpg)
io扩展-原理图
![](http://image.uc.cn/s/wemedia/s/upload/2024/154e8b7834dd75967ebae445bc745ca7.jpg)
io扩展-PCB图
![](http://image.uc.cn/s/wemedia/s/upload/2024/dc9c53b553194315fc500d4e6ca12d84.jpg)
lcd_adapt-原理图1
![](http://image.uc.cn/s/wemedia/s/upload/2024/cdeaf5fc33d919e6b8472d60430928c9.png)
lcd_adapt-原理图2
![](http://image.uc.cn/s/wemedia/s/upload/2024/9781846e04c83e715e0c487518d870ee.png)
lcd_adapt-PCB图
![](http://image.uc.cn/s/wemedia/s/upload/2024/6095ea06c8ffc058176f74d85ec4077c.jpg)
io_extend_hj
1.EXP扩展板
该板主要通过FPC排线和弹簧顶针 (POGO PIN)从泰山派开发板上引出电源接口、网口、USB口、SATA接口、耳机接口 等。各接口如下所示:
![](http://image.uc.cn/s/wemedia/s/upload/2024/e4e8532eece152a69f0fc40f5b74a42e.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/15bfd38c183a34437ab5d56a2f6b1255.jpg)
(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实现自动翻转屏幕直接做个模块从背面排座插入开源项目的特点和乐趣就在此!
![](http://image.uc.cn/s/wemedia/s/upload/2024/44f275f5163b92fcaf3161e48bae0f2a.jpg)
3.LCD适配板
电容屏:HD34004C40RGB接口驱动芯片:st7701s触摸驱动:cst328(1)没有在泰山派引出RGB接口,要怎么加电容触摸屏?
这块适配板的作用,就是将mipi接口转为RGB接口。
(2)具体怎么操作?
这款屏幕则需要通过spi引脚进行初始化。
而泰山派的mipi接口座只提供了背光、mipi引脚。
为了和IO扩展板独立开来,不使用其上面的IO,就给适配板上另外加了一颗smt32g030f6p6来对液晶屏进行初始化操作。
![](http://image.uc.cn/s/wemedia/s/upload/2024/e5d1f303b213026c05c05771fd3bb337.jpg)
(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显示出来的也是此分辨率的竖屏,使用体验上还不如二选一好。(下图来自泰山派开发板资料)
![](http://image.uc.cn/s/wemedia/s/upload/2024/6b82d88dc554d826a885628292e329a1.jpg)
(2)USB3.0和SATA1不能同时使用,怎么破?
根据瑞芯微的文档说明,USB3.0和SATA1是不能同时使用的,但是我其实只用了USB中的dp和dn,引脚上与SATA是没有重叠的。
万能的吴工提出了把USB3.0改为2.0和SATA共用的建议,并且给出了设备树的修改方案。感谢吴工^ ^
![](http://image.uc.cn/s/wemedia/s/upload/2024/80e5f8658a1b13438437a74623d43be4.jpg)
(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/![](http://image.uc.cn/s/wemedia/s/upload/2024/d899be9cce7d3542b4ed2e65f1496683.jpg)
1.物料清单
![](http://image.uc.cn/s/wemedia/s/upload/2024/c8fcc90e796ca25bea27f46a144eb93c.jpg)
2.组装流程
![](http://image.uc.cn/s/wemedia/s/upload/2024/84fec3db2ed2fc79df484bac94aa39b9.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/e7e7f927229e4a24c2f5abe54e454ea8.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/459a050467b910a3f3afd6500fdc4286.png)
![](http://image.uc.cn/s/wemedia/s/upload/2024/803642bd44046ddb6dcb51bc7a85c06c.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/b8bdc01a80f29d9d505c8062f6a094b6.jpg)
![](http://image.uc.cn/s/wemedia/s/upload/2024/ec708df059b56dceee305c3dd04402d3.jpg)
小编提示:作者在去年参加了星火计划外包赛道(现悬赏赛道)。通过平板、迷你负载和小手机,获得了特等奖(共2.8万奖金)、三等奖(共7.5千奖金)和鼓励奖(共4千奖金)。今年,他从0出发,再次报名星火计划自由高阶赛道。
在立创开发板和星火计划的双重耗材资助下制作迷你主机。
这个心路历程是怎样的呢?
这个迷你主机从最初的一个想法到做出实物,做做停停花了大概2个月的业余时间。
从画板的从容不迫到编写linux驱动的茫然无知,离开了mcu的舒适区,投入了linux的怀抱中,真心感觉,这怀抱好硬好硌......每晚战斗到24点,最欣慰的是头发还在。后续我会在这个迷你主机的基础上深入研究学习,希望能与大家一同进步!(为啥总感觉在哪说过 - -||)
请永远相信,每一次的挫折都是在为自己蓄积前进的力量!
在这里感谢立创开源平台,感谢立创开发板负责人吴工的耐心指导,感谢星火计划负责人陈工的耗材协助支持。emmm,星火会快到了,我养了2个月的头发到时候只能靠这点和吴工battle下了。
希望这个"迷你主机"抛砖引玉,能有更多的具有开源精神的伙伴们一起共建一个强大的开源生态!
开源引用:
官方的泰山派开发板项目okll的“泰山派MIPI DSI 转 RGB 适配器”项目风漠兮的“泰山派4寸86屏转接板”项目再次感谢以上开源作者!
【正文完】
关注我,看一手优质开源项目